Здравствуйте уважаемые форумчане, подскажите пожалуйста, возможно ли реализовать следующее (пример файла во вложении):
Пользователи файла вносят изменения в строки с заголовками FC (вбивают значение руками). В файле-примере это колонки M:Q. После того, как пользователь внес все, что хотел, он либо сохраняет (закрывает) файл, либо перещелкивает на другой бренд (ячейка A1, в примере можно щелкать с "TP" на "TB"). Макрос делает следующее: переносит значения с каждой строки (строка J7:Q7, J8:Q8 и т. д. до J74:Q74, кроме строк пустых и содержащих формулу SUM) на лист "FC-July" в колонку "U" (название листа в ячейке C1) в соответствующие поля. К примеру, значение из O15 макрос перенесет на лист "FC-July" в ячейку U34, т. к. посмотрит, что в ячейке A15 код "6714202", в ячейке O2 указан период 2015010, и на листе FC-July (макрос найдет названия листа в ячейке C1) есть соответствующие коды и периоды (колонки M,N). Макрос так же увидит, что в А1 указан бренд TP, который так же имеется на листе FC-July в колонке "L".
После того, как макрос перенес все значения с листа A&P на лист FC-July, он возвращает ту же формулу, что и была в ячейке ранее, до того, как пользователь вбил туда свои значения. Собственно все. Действие макроса происходит: а) при сохранении файла б) при изменение бренда в ячейке A1 из выпадающего списка. Перед тем, как сработать, макрос спросит "Сохранить текущий прогноз?" (данный выскакивающий вопрос могу добавить самостоятельно). Название листа, на который переносить значение, макрос берет из ячейки C1.
Самостоятельно могу записать макро-рекордером перенос строк в соответствующие ячейки, но как заставить макрос распознавать все обозначенные условия (период, код, название бренда).
Здравствуйте, уважаемые знатоки Excel. Просьба помочь доделать макрос, который отправляет почту с помощью Outlook из файла Excel во вложении. Собственно сам макрос:
Код
Sub SendMailTest()
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Dim cell As Range
Set OutApp = CreateObject("Outlook.Application"
Set OutMail = OutApp.CreateItem(0)
strbody = "<font face=""Modern h medium"" size=""2"" color=""black"">" & "Уважаемые коллеги!<br>" & _
"<B>Первая цифра:</B><br>" & Range("I145".Value & _
"Отчет на: Здесь надо поставить текущую дату<br>" & _
"- Инструкция находится здесь <br>" & _
"<U><B></B></U><br>" & _
"С уважением,"
On Error Resume Next
With OutMail
.Display
.To = Range("E2".Value
.Subject = Range("F2".Value
.HTMLBody = strbody & .HTMLBody
.Attachments.Add Range("H2".Value
.Attachments.Add Range("I2".Value
.Attachments.Add Range("J2".Value
.Display
End With
On Error GoTo 0
Set OutMail = Nothing
cleanup:
Set OutApp = Nothing
Application.ScreenUpdating = True
End Sub
Как хотелось бы чтобы выглядело, и как выглядит на самом деле - прикладываю скриншоты. Как выглядит сейчас: Как хотелось бы: Вопросы следующие: 1) как сделать желаемое форматирование и чтобы цифра отображалась на нужной строке в нужном положении, а не сливалась со следующей строкой? 2) Что прописать, чтобы цеплял текущую дату? 3) Если возможно, нужна еще вторая строчка в тексте письма, на которой будет написано следующее: "Вторая цифра: *тянет значение со скрытого листа 2, ячейка Е126*", Ситуация заключается в том, что на листе 2 периодически разное кол-во строк, и нужна крайняя нижняя по столбцу Е.
Здравствуйте, уважаемые гуру Эксель. Подобные темы уже были на форуме (и я с ними ознакомился). Тем не менее, макрос по каким-то причинам не срабатывает. Привожу его здесь:
Код
Sub Solver()
Dim i&
For i = 4 To 10
SolverOk SetCell:="$O$" & i, MaxMinVal:=1, ValueOf:=0, ByChange:="$F$,$J$,$N$" & i _
, Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$O$" & i, Relation:=1, FormulaText:="$P$" & i
SolverAdd CellRef:="$F$" & i, Relation:=5, FormulaText:="бинарное"
SolverAdd CellRef:="$J$" & i, Relation:=5, FormulaText:="бинарное"
SolverAdd CellRef:="$N$" & i, Relation:=5, FormulaText:="бинарное"
SolverOk SetCell:="$O$" & i, MaxMinVal:=1, ValueOf:=0, ByChange:="$F$,$J$,$N$" & i _
, Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$O$" & i, MaxMinVal:=1, ValueOf:=0, ByChange:="$F$,$J$,$N$" & i _
, Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve True
Next i
End Sub
Что ожидалось от макроса: Поиск решения по заданным параметрам будет срабатывать в строках 4 - 10. Что происходит после запуска: Эксель что-то просчитывает, но значение ячеек не меняется. Надеюсь на вашу помощь, потому что уже и не знаю, в чем проблема. Версия Excel: 2010