2016-05-25 9 views
3

シートのセルからの入力値に基づいて自動的にテキストボックスの色を変更するExcelマクロを作成しようとしています。私は現在持っているコードは次のようになります。これは、その後、セルA1から値を読み、その値に基づいて、テキストボックスの色を変更することになっているExcelマクロの変更TextBoxの色

Private Sub TextBox1_Change() 

'Declare Variables 
Dim cell As Range 
Dim color As String 

'Initialize Variables 
Set cell = Range("A1") 
color = cell.Value 

'Set TextBox Color 
If color = "" Then TextBox1.BackColor = RGB(255, 255, 255) 'white 
If color = "1" Then TextBox1.BackColor = RGB(255, 0, 0) 'red 
If color = "2" Then TextBox1.BackColor = RGB(0, 255, 0) 'green 
If color = "3" Then TextBox1.BackColor = RGB(0, 0, 255) 'blue 

End Sub 

。私のコードは、テキストボックスの色を正常に変更しますが、テキストボックスをクリックして何かを入力するまで更新されません。セルA1に値が入力されるとすぐに色を更新する方法はありますか?

他のオブジェクトでこれを行う方が簡単であれば、私はテキストボックスに縛られていませんが、セルを使うことはできません。

@findwindowが示唆したように
+0

'textbox'セルの後、条件付き書式に関連付けられていませんか? – findwindow

+0

それは無限に簡単でしょう。残念ながら、セルは私が使用できない数少ないものの1つです。それはある種の優れたオブジェクト(すなわち、テキストボックス、ラベルなど)である必要があります。 – drylkuch

+0

おそらく 'worksheet_change'イベントを使用していますか? – findwindow

答えて

2

、テキストボックスのイベントの代わりにWorksheet_Changeイベントを使用することもできます。

Private Sub Worksheet_Change(ByVal Target As Range) 
    'Declare Variables 
    Dim cell As Range 
    Dim color As String 

    If Target.Address = Range("A1").Address Then 
     'Initialize Variables 
     Set cell = Range("A1") 
     color = cell.Value 

     'Set TextBox Color 
     If color = "" Then TextBox1.BackColor = RGB(255, 255, 255) 'white 
     If color = "1" Then TextBox1.BackColor = RGB(255, 0, 0) 'red 
     If color = "2" Then TextBox1.BackColor = RGB(0, 255, 0) 'green 
     If color = "3" Then TextBox1.BackColor = RGB(0, 0, 255) 'blue 
    End If 
End Sub 
+0

あなたはおそらく私がコメントを書いたときにこれを書いていたでしょう^^ – findwindow

+0

@findwindowそれは、経験豊富なVBAプログラマーのためのかなり自然な考えです。 –

+0

まあ、コメントはP = – findwindow

関連する問題