2016-08-31 1 views
0

Так что я хочу, это кнопка, которая при нажатии автоматически называет ячейки правой колонки столбца значениями левого столбца, мой код на данный момент выглядит примерно так: ,Именование непустых ячеек столбца в качестве значений предыдущего столбца

Private Sub CommandButton1_Click() 

    Range("F3").Name = Range("E3") 
    Range("F4").Name = Range("E4") 
    Range("F5").Name = Range("E5") 
    Range("F6").Name = Range("E6") 

End Sub 

Я новичок в использовании VBA и немного огляделся, но не смог найти то, что хотел. Просто попробуйте простое решение, которое может автоматически делать то, что мой код уже делает, не указывая на строки ячеек. Я предполагаю, что в течение нескольких строк будет повторяться либо цикл while, либо цикл, и оператор if для кода не работает, если ячейка пуста.

В принципе, я хочу, чтобы команда запускала что-то вроде ниже, но не знаю, как записать ее в excel VBA.

for j=3:100 
    if F(j) = non empty 
     F(j).name = E(j) 
    else end 
    next j 
end 

Изображение ниже показывает конечный результат:

end result

+0

вы хотите, чтобы скопировать значение из Е3 F3 только тогда, когда F3 не является пустым? – cyboashu

+0

да, скопируйте его, чтобы оно стало именем (а не значением) F3, и повторите для всех ячеек в столбце F, которые не являются пустыми. – Mitch125

ответ

1

Из вашего изображения образца это выглядит, как он должен работать.

Option Explicit 

Sub name_eff() 
    Dim rw As Long 
    With Worksheets("Sheet6") 
     For rw = 2 To Application.Min(.Cells(.Rows.Count, "E").End(xlUp).Row, _ 
             .Cells(.Rows.Count, "F").End(xlUp).Row) 
      If Application.CountA(.Cells(rw, "E").Resize(1, 2)) = 2 Then _ 
       .Cells(rw, "F").Name = .Cells(rw, "E").Text 
     Next rw 
    End With 
End Sub 

named_ranges

+0

Это работает так, как я хотел, спасибо большое. – Mitch125