2015-08-13 4 views
-1

Как вы можете использовать значение ячейки для заполнения диапазона в VBA?Как использовать значение ячейки как часть диапазона с помощью VBA?

В этом примере я хочу скопировать выделение и вставить его в строку на основе значения ячейки L2 с номером строки, равным значению L2.

Последняя строка кода, которую я понимаю, неверна, но не может найти подходящее решение, которое бы выбрало B100: K100, например.

Set Rng1 = Range("L2").Value 
Range("B2:K2").Select 
Selection.Copy 
Range("B" & Range(Rng1) : "K" & Range(Rng1).Select 

Заранее спасибо

ответ

2

Если вы хотите ряд L2 ячейки, использование следующим образом:

Range("B" & Rng1.Row & ":K" & Rng1.Row).Select 

Если вы хотите значение ячейки L2, используют следующим образом:

Range("B" & Rng1 & ":K" & Rng1).Select 
0

Другим вариантом будет:

Dim IntRow As Integer 
IntRow = Range("L2").Value 
Range("B2:K2").Select 
Selection.Copy 
Range("B" & IntRow & ":K" & IntRow).Select 

Вместо определения диапазона, собирая значение ячейки, а затем применяя его как номер строки для выбора, вы просто определяете IntRow как Integer, сохраняете значение строки в IntRow и используете его в диапазоне выбора.

2

Вот немного чище вариант ответа DragonSamu в:

Dim IntRow As Integer 
IntRow = Range("L2").Value 
Range("B2:K2").Copy 
Range("B" & IntRow & ":K" & IntRow).Paste 

VBA лучшие практики избегать использования .select всякий раз, когда это возможно.

1

Опираясь на DragonSamu & доктор троек ответ:

Dim IntRow As Integer 
IntRow = Range("L2").Value 
Range("B2:K2").Copy Destination:=Cells(IntRow, 2) 

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

Смежные вопросы