Я создаю пустую рабочую книгу с командной кнопкой, которую я хочу, чтобы при нажатии она выполняла действия с КАЖДОЙ открытой книгой, открытой в данный момент (так как у меня будут другие непустые книги, для которых я хочу, чтобы она выполняла операции над ).
Я получаю сообщение об ошибке вне диапазона при запуске:
Sub Button1_Click()
'
' Button1_Click Macro
' Fire Ext. Comments
'
'
Dim w As Workbook
' For every open workbook...
For Each w In Application.Workbooks
' Activate the current workbook
w.Activate
' Find the comments column (K12 should be the "Comments" column)
If Worksheets("FIRE EXT.").Range("K12").Value = "Comments" Then
' Then we loop through all cells in the specified range (anything below the header row)
Dim rng As Range, cell As Range
' I'm using a range of 500 to look for values, so if a file has more than 500 rows, you'll have to look at it manually
Set rng = Range("A1:A500")
' No loop to change all comments
For Each cell In rng
.......................
... в строке " If Worksheets (" FIRE EXT. "). Range (" K12 "). Value =" Comments "Then ". Так что я думаю, что это начинается с пустой рабочей книги и не находит рабочую таблицу с именем «FIRE EXT.», Поэтому лучше сначала проверить, есть ли у активированной рабочей книги имя этого листа, в противном случае перейдите к следующей рабочей книге. ? Спасибо!
UPDATE
Это было то, что сработало для меня, но другие ответы тоже сработали бы. Спасибо всем!
Sub Button1_Click()
'
' Button1_Click Macro
' Fire Ext. Comments
'
'
Dim w As Workbook
' For every open workbook...
For Each w In Application.Workbooks
' Don't work on the current/blank workbook
If w.FullName <> ThisWorkbook.FullName Then
' Find the comments column (K12 should be the "Comments" column)
If w.Sheets("FIRE EXT.").Range("K12").Value = "Comments" Then
' Then we loop through all cells in the specified range (anything below the header row)
Dim rng As Range, cell As Range
' I'm using a range of 500 to look for values, so if a file has more than 500 rows, you'll have to look at it manually
Set rng = w.Worksheets("FIRE EXT.").Range("A13:A500")
' No loop to change all comments
For Each cell In rng