2015-08-04 4 views
1

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

Columns("A:C").Select 
If ActiveCell.FormulaR1C1 = "194511" Then 
Range("B1:B1000").Select 
ActiveCell.FormulaR1C1 = "Base Reclamation" 
Range("C1:C1000").Select 
ActiveCell.FormulaR1C1 = "BaseRec Recont ED/LD/ME" 
End If 

В тексте, я считаю, что я его туда, где я ввод значения в любом месте в колонке А, и он должен отображаться выходные два варианта текста, но это не так. Он отображает только текст в первой строке, но если я изменю «B1: B1000» на «B2», он выведет данные в нужном поле.

Если бы кто-нибудь мог мне помочь, это было бы очень признательно!

ответ

0

Это должно идти в Sheet module на листе, который вы хотите, чтобы работать на:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Cells.Count = 1 And Not Intersect(Target, Range("A1:A1000")) Is Nothing Then 
     If Target.Text = "194511" Then 
      Application.EnableEvents = False 
      Target.Offset(0, 1).Resize(1, 2).Value = Array("Base Reclamation", _ 
       "BaseRec Recont ED/LD/ME") 
      Application.EnableEvents = True 
     End If 
    End If 
End Sub 

Или в обычном коде модуля:

[B1:C1000] = [IF($A1=194511,CHOOSE(COLUMN()-1,{""Base Reclamation"",""BaseRec Recont ED/LD/ME""}),"""")] 
+0

Таким образом, после вставки, что в мой лист модуль должен работать нормально? Мне кажется, что мой синтаксис Range() неверен или что-то в этом роде. – jmuno13

+0

'ActiveCell' относится к одной (единственной) ячейке, которая в данный момент активна. Честно говоря, для вас лучше всего подходит формула. –