Здравствуйте. Есть макрос. В нем прописано условие по вставке текста в определенные ячейки. Со временем это не стало устраивать, так текст надо копировать в разные ячейки. Можно сделать так, чтобы текст копировался только в те ячейки, которые предварительно выделю? (открываю файл, выделяю нужные ячейки, запускаю макрос, текст вставляется в нужные ячейки. [vba]
Код
Sub Макрос10() ' ' Макрос10 Макрос '
' Range("E3").Select ActiveCell.FormulaR1C1 = "Остаток на начало/Количество" Range("F3").Select ActiveCell.FormulaR1C1 = "Остаток на начало/Сумма" Range("G3").Select ActiveCell.FormulaR1C1 = "Приход/Количество" Range("H3").Select ActiveCell.FormulaR1C1 = "Приход/Сумма" Range("I3").Select ActiveCell.FormulaR1C1 = "Расход/Количество" Range("J3").Select ActiveCell.FormulaR1C1 = "Расход/Сумма" Range("K3").Select ActiveCell.FormulaR1C1 = "Остаток на конец/Количество" Range("L3").Select ActiveCell.FormulaR1C1 = "Остаток на конец/Сумма" End Sub
[/vba]
Здравствуйте. Есть макрос. В нем прописано условие по вставке текста в определенные ячейки. Со временем это не стало устраивать, так текст надо копировать в разные ячейки. Можно сделать так, чтобы текст копировался только в те ячейки, которые предварительно выделю? (открываю файл, выделяю нужные ячейки, запускаю макрос, текст вставляется в нужные ячейки. [vba]
Код
Sub Макрос10() ' ' Макрос10 Макрос '
' Range("E3").Select ActiveCell.FormulaR1C1 = "Остаток на начало/Количество" Range("F3").Select ActiveCell.FormulaR1C1 = "Остаток на начало/Сумма" Range("G3").Select ActiveCell.FormulaR1C1 = "Приход/Количество" Range("H3").Select ActiveCell.FormulaR1C1 = "Приход/Сумма" Range("I3").Select ActiveCell.FormulaR1C1 = "Расход/Количество" Range("J3").Select ActiveCell.FormulaR1C1 = "Расход/Сумма" Range("K3").Select ActiveCell.FormulaR1C1 = "Остаток на конец/Количество" Range("L3").Select ActiveCell.FormulaR1C1 = "Остаток на конец/Сумма" End Sub
gling, Здравствуйте. Всего 8 строк (8 наименований). Вставляться они должны друг за другом, как в макросе перечислены. Да, вставляем во все выделенные ячейки.
gling, Здравствуйте. Всего 8 строк (8 наименований). Вставляться они должны друг за другом, как в макросе перечислены. Да, вставляем во все выделенные ячейки.Mark1976
Вариант. Активируете первую с лева ячейку в нужной строке и запускаете макрос. [vba]
Код
Sub Шапка() ActiveCell.Resize(1, 8) = Array("Остаток на начало/Количество", "Остаток на начало/Сумма", "Приход/Количество", "Приход/Сумма", "Расход/Количество","Расход/Сумма", "Остаток на конец/Количество", "Остаток на конец/Сумма") End Sub
[/vba]
Вариант. Активируете первую с лева ячейку в нужной строке и запускаете макрос. [vba]
Код
Sub Шапка() ActiveCell.Resize(1, 8) = Array("Остаток на начало/Количество", "Остаток на начало/Сумма", "Приход/Количество", "Приход/Сумма", "Расход/Количество","Расход/Сумма", "Остаток на конец/Количество", "Остаток на конец/Сумма") End Sub
Не совсем ясно, чем начальный макрос не подошел. Тем более, что его можно вот так написать
[vba]
Код
Sub Макрос10() Application.ScreenUpdating = 0 Range("E3") = "Остаток на начало/Количество" Range("F3") = "Остаток на начало/Сумма" Range("G3") = "Приход/Количество" Range("H3") = "Приход/Сумма" Range("I3") = "Расход/Количество" Range("J3") = "Расход/Сумма" Range("K3") = "Остаток на конец/Количество" Range("L3") = "Остаток на конец/Сумма" Application.ScreenUpdating = 1 End Sub
[/vba]
И вот я, например, не всегда выделяю диапазон слева направо. Иногда справа налево мышой двигаю. В этом случае ActiveCell будет правая ячейка выделенного диапазона. Поэтому я бы написал [vba]
Код
Selection(1).Resize(, 8) = Array("Остаток н...
[/vba] Ну и так, на всякий случай, пробежаться по каждой ячейке из выделенных на листе (не обязательно связанный диапазон), можно примерно так [vba]
Код
Dim cc As Range For Each cc In Selection i = i + 1 cc = i Next cc
[/vba] Вообще спосоюбов много, это просто один из
Не совсем ясно, чем начальный макрос не подошел. Тем более, что его можно вот так написать
[vba]
Код
Sub Макрос10() Application.ScreenUpdating = 0 Range("E3") = "Остаток на начало/Количество" Range("F3") = "Остаток на начало/Сумма" Range("G3") = "Приход/Количество" Range("H3") = "Приход/Сумма" Range("I3") = "Расход/Количество" Range("J3") = "Расход/Сумма" Range("K3") = "Остаток на конец/Количество" Range("L3") = "Остаток на конец/Сумма" Application.ScreenUpdating = 1 End Sub
[/vba]
И вот я, например, не всегда выделяю диапазон слева направо. Иногда справа налево мышой двигаю. В этом случае ActiveCell будет правая ячейка выделенного диапазона. Поэтому я бы написал [vba]
Код
Selection(1).Resize(, 8) = Array("Остаток н...
[/vba] Ну и так, на всякий случай, пробежаться по каждой ячейке из выделенных на листе (не обязательно связанный диапазон), можно примерно так [vba]
Код
Dim cc As Range For Each cc In Selection i = i + 1 cc = i Next cc
[/vba] Вообще спосоюбов много, это просто один из_Boroda_
_Boroda_, здравствуйте. Этот макрос вставляет текст в определенные ячейки. У меня нет привязки к ячейкам. Я могу встать в любую ячейку и текст должен вставится потом с активной ячейки. Или я не так вас понял.
_Boroda_, здравствуйте. Этот макрос вставляет текст в определенные ячейки. У меня нет привязки к ячейкам. Я могу встать в любую ячейку и текст должен вставится потом с активной ячейки. Или я не так вас понял.Mark1976
Сообщение отредактировал Mark1976 - Понедельник, 24.02.2025, 21:17