В книге есть несколько листов, из которых нужно вызвать макрос для записи на другом:
В книге Лист1 и Лист3 на них кнопка для вызова макроса на Лист2
[vba]
Код
Sub CopyPastInsert() Dim myRange As Range Set myRange = ActiveWorkbook.Sheets("Лист2").Range("A1") 'Set myRange = ActiveWorkbook.Worksheets("Лист2").Range("A1") myRange.Activate 'Пытаюсь сделать активной ячейку A1 на листе Лист2 Range("c10").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ' Вставляю новые ячейки со сдвигом вниз, со вставкой формата оригинала myRange.Copy ' Range("A1").Copy Range("c10").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("c10").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Range("A1").Select End Sub
[/vba] Пример работает только если его вызывать на Лист2
Нагуглил, но подружить их не смог. Что я не понимаю?
P.S. Хочу использовать переменные для диапазона ячеек: [vba]
Код
Set myRange = ActiveWorkbook.Sheets("Лист2").Range("A1:A2, B2:D4") 'И тому подобное...
[/vba]
В книге есть несколько листов, из которых нужно вызвать макрос для записи на другом:
В книге Лист1 и Лист3 на них кнопка для вызова макроса на Лист2
[vba]
Код
Sub CopyPastInsert() Dim myRange As Range Set myRange = ActiveWorkbook.Sheets("Лист2").Range("A1") 'Set myRange = ActiveWorkbook.Worksheets("Лист2").Range("A1") myRange.Activate 'Пытаюсь сделать активной ячейку A1 на листе Лист2 Range("c10").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ' Вставляю новые ячейки со сдвигом вниз, со вставкой формата оригинала myRange.Copy ' Range("A1").Copy Range("c10").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("c10").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Range("A1").Select End Sub
[/vba] Пример работает только если его вызывать на Лист2
Нагуглил, но подружить их не смог. Что я не понимаю?
P.S. Хочу использовать переменные для диапазона ячеек: [vba]
Код
Set myRange = ActiveWorkbook.Sheets("Лист2").Range("A1:A2, B2:D4") 'И тому подобное...
nordri, вот еще поковырял... макрос тест.. теперь зависает на стр2 3 секунды, вставляет дата..время, еще подвисает и переходит на лист 1.. теперь типа видно, что там скопировалось)))
nordri, вот еще поковырял... макрос тест.. теперь зависает на стр2 3 секунды, вставляет дата..время, еще подвисает и переходит на лист 1.. теперь типа видно, что там скопировалось)))cmivadwot
У меня наконец то сформировалось понимание, что мне надо в данной задаче!
Три листа (новый Пример), на одном хранятся ДАННЫЕ, а с других происходит вызов скрипта... Из Листа ОТБЫТИЕ мне нужно взять значение из ячейки A1 и вставить его в ячейку C5 на листе ДАННЫЕ, после копирования текущего времени уже на листе ДАННЫЕ. А в ячейку B5 имя листа... А если скрипт вызван с листа ДАННЫЕ то ничего вставлять не нужно (возможно тут нужно If ?). И да, особенно необходимо диапазоны передавать через переменные... Вот здесь я хотел бы для уже объявленного столбца [vba]
Код
Set myNewRange = ActiveWorkbook.Sheets("Данные").Range("a5")
[/vba] сходу получить [vba]
Код
Sheets("Данные").Range("с5")' Там где "Не будет работать..."
[/vba] Это возможно?
[vba]
Код
Sub CopyPastInsert() Dim myRange As Range Dim myExitRange$ ' За что отвечает " $ " ? Dim myNewRange As Range Set myRange = ActiveWorkbook.Sheets("Данные").Range("A1") Set myNewRange = ActiveWorkbook.Sheets("Данные").Range("a5") Set myExitRange = ActiveWorkbook.ActiveSheet.Name
myNewRange.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove myRange.Copy ' Range("A1").Copy myNewRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False myNewRange.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False myNewRange [ 1+2, 1].Value.myExitRange ' Не будет работать... Range("A1").Select End Sub
[/vba] Нашел ответ на простой вопрос1 [vba]
Код
Dim myExitRange$ = Dim myExitRange As String
[/vba]
[offtop]Оказывается не в той ветке тему создал... Стыдно... :blink:
У меня наконец то сформировалось понимание, что мне надо в данной задаче!
Три листа (новый Пример), на одном хранятся ДАННЫЕ, а с других происходит вызов скрипта... Из Листа ОТБЫТИЕ мне нужно взять значение из ячейки A1 и вставить его в ячейку C5 на листе ДАННЫЕ, после копирования текущего времени уже на листе ДАННЫЕ. А в ячейку B5 имя листа... А если скрипт вызван с листа ДАННЫЕ то ничего вставлять не нужно (возможно тут нужно If ?). И да, особенно необходимо диапазоны передавать через переменные... Вот здесь я хотел бы для уже объявленного столбца [vba]
Код
Set myNewRange = ActiveWorkbook.Sheets("Данные").Range("a5")
[/vba] сходу получить [vba]
Код
Sheets("Данные").Range("с5")' Там где "Не будет работать..."
[/vba] Это возможно?
[vba]
Код
Sub CopyPastInsert() Dim myRange As Range Dim myExitRange$ ' За что отвечает " $ " ? Dim myNewRange As Range Set myRange = ActiveWorkbook.Sheets("Данные").Range("A1") Set myNewRange = ActiveWorkbook.Sheets("Данные").Range("a5") Set myExitRange = ActiveWorkbook.ActiveSheet.Name
myNewRange.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove myRange.Copy ' Range("A1").Copy myNewRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False myNewRange.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False myNewRange [ 1+2, 1].Value.myExitRange ' Не будет работать... Range("A1").Select End Sub
[/vba] Нашел ответ на простой вопрос1 [vba]
Код
Dim myExitRange$ = Dim myExitRange As String
[/vba]
[offtop]Оказывается не в той ветке тему создал... Стыдно... :blink:nordri
У меня наконец то сформировалось понимание, что мне надо в данной задаче!
мне, в отличие от вас, так и не удалось это понять. Про слова в столбце В вопросов нет. Но какие цифирьки, и откуда в столбцах А и С? 22.06.2023 В 15:18:20 Прибытие 21.06.2023 19:24 22.06.2023 В 15:18:12 Отбытие 20.06.2023 21:59
У меня наконец то сформировалось понимание, что мне надо в данной задаче!
мне, в отличие от вас, так и не удалось это понять. Про слова в столбце В вопросов нет. Но какие цифирьки, и откуда в столбцах А и С? 22.06.2023 В 15:18:20 Прибытие 21.06.2023 19:24 22.06.2023 В 15:18:12 Отбытие 20.06.2023 21:59 RAN
На листе ДАННЫЕ столбце A это текущее время из Ячейки A1 листа ДАННЫЕ. А в столбце C с листа ПРИБЫТИЕ из "Итог" с красным шрифтом G4, ну либо на том же листе ПРИБЫТИЕ из ячейки A1. А сами цифИрькИ это так, пример... Хотя вроде бы я написал что и откуда:
Из Листа ОТБЫТИЕ мне нужно взять значение из ячейки A1 и вставить его в ячейку C5 на листе ДАННЫЕ, после копирования текущего времени уже на листе ДАННЫЕ.
[offtop]Я художник, я так вижу! Но может я неправильно сформулировал? Ведь правильно поставленное задание, наполовину выполненное задание?[/offtop] Только мне не импонирует вариант с формулой =ТДАТА()... Наверное лучше макросом в ячейку А1 листа Данные записывать скриптом время...
Dim Smesh$ Set Smesh = 3 MyNewRAnge( Cellс(1,5) , Cellc( 3+ Smesh , 5) ) ' По другому NyNewRange(A5:С5), ' Со смещением принял бы значение NyNewRange(A5:F5)
[/vba] Скорее всего я хотел изменять ширину диапазона заданного не именем столбцов/строк, а номерам столбцов/строк с возможностью смещения (Set Smesh)
На листе ДАННЫЕ столбце A это текущее время из Ячейки A1 листа ДАННЫЕ. А в столбце C с листа ПРИБЫТИЕ из "Итог" с красным шрифтом G4, ну либо на том же листе ПРИБЫТИЕ из ячейки A1. А сами цифИрькИ это так, пример... Хотя вроде бы я написал что и откуда:
Из Листа ОТБЫТИЕ мне нужно взять значение из ячейки A1 и вставить его в ячейку C5 на листе ДАННЫЕ, после копирования текущего времени уже на листе ДАННЫЕ.
[offtop]Я художник, я так вижу! Но может я неправильно сформулировал? Ведь правильно поставленное задание, наполовину выполненное задание?[/offtop] Только мне не импонирует вариант с формулой =ТДАТА()... Наверное лучше макросом в ячейку А1 листа Данные записывать скриптом время...
Dim Smesh$ Set Smesh = 3 MyNewRAnge( Cellс(1,5) , Cellc( 3+ Smesh , 5) ) ' По другому NyNewRange(A5:С5), ' Со смещением принял бы значение NyNewRange(A5:F5)
[/vba] Скорее всего я хотел изменять ширину диапазона заданного не именем столбцов/строк, а номерам столбцов/строк с возможностью смещения (Set Smesh)nordri
Сообщение отредактировал nordri - Пятница, 23.06.2023, 15:51