VBA: определите переменные в диапазоне вместо имен ячеек

У меня есть ячейка с именем «Выбор имени», которая случайным образом размещается на многих листах одной и той же книги. Пожалуйста, я хотел бы знать, как искать это значение ячейки на всех листах книги. Я пробовал цикл через все листы и все ячейки первой строки в поисках этого строкового значения, но я не могу найти решение, вот что я сделал:

For Each ws In ActiveWorkbook.Worksheets 
    col_num = ws.Range("A1").End(xlToRight).Column 
       For Cel1 = 1 To clom_num 
         If ws.Cells(1, Cel1).Value = "Cell Name" Then 
         col_name = ws.Cells(2, Cel1).Name 
         End If 
       Next 
         With ws.Range("col_name:col_name").Validation   ' Here when i put ("L:L") it works, but that value can be in any cell
           .Delete 
           .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    xlBetween, Formula1:=Liste 
           .IgnoreBlank = True 
           .InCellDropdown = True 
         End With 

О, я получаю эту ошибку в строке (With ws.Range("col_name:col_name").Validation) "диапазон метода объекта _worksheet не удалось"

Помогите, пожалуйста


person Dido006    schedule 16.07.2014    source источник


Ответы (1)


Вместо циклов используйте метод Range.Find:

    Dim ws As Worksheet
    Dim rngFound As Range

    For Each ws In ActiveWorkbook.Sheets
        Set rngFound = ws.Rows(1).Find("Cell Name", , xlValues, xlWhole)
        If Not rngFound Is Nothing Then
            With ws.Columns(rngFound.Column).Validation
                .Delete
                .Add xlValidateList, xlValidAlertStop, xlBetween, Liste
                .IgnoreBlank = True
                .InCellDropdown = True
            End With
        End If
    Next ws
person tigeravatar    schedule 16.07.2014
comment
OMG, ты спас мне жизнь, ха-ха: D Большое спасибо, тиграватар, ты лучший :) - person Dido006; 17.07.2014