我尝试使用Excel VBA来控制文本框背景颜色,具体取决于某些单元格中的值。每个文本框对应于具有值的不同单元格。我有大约60个文本框可供控制,每种颜色有4种可能的颜色。使用switch语句,我基本上必须为60个文本框中的每一个做4个案例...假设我使用它现在设置的方式,如下所示:
Select Case Cells(50, 2).Value
Case Is = 1, 6, 11, 16
.TextBox13.BackColor = RGB(0, 255, 0)
Case Is = 5
.TextBox13.BackColor = RGB(255, 0, 0)
Case Is = 0
.TextBox13.BackColor = RGB(255, 255, 255)
Case Is = 10, 15
.TextBox13.BackColor = RGB(255, 255, 0)
End Select
依此类推所有60.但是,值范围始终相同,并且颜色对应于每个颜色的相同值。我假设必须有一种方法来构建一个模块来实际设置颜色,并且只使用switch语句来确定要发送到该模块的单元格吗?
编辑:我已附上工作区的屏幕截图,以便您了解我的目标
答案 0 :(得分:0)
你的一些代码是错误的。它是Select Case ... End Select
Select Case Cells(50, 2).Value
Case 1, 6, 11, 16
tbxObject.BackColor = RGB(0, 255, 0)
Case 5
tbxObject.BackColor = RGB(255, 0, 0)
Case 0
tbxObject.BackColor = RGB(255, 255, 255)
Case 10, 15
tbxObject.BackColor = RGB(255, 255, 0)
End Select
如果多次使用某段代码,则必须将其移动到单个通用soubroutine中,该soubroutine可以接受TextBox
个对象作为输入参数。
Sub ColorMyTextBox(wsh As Worksheet, sTextBoxName As String)
Dim txtObject As OleObject
Set txtObject = wsh.OleObjects(sTextBoxName)
If TypeName(txtObject) <> "TextBox" Then Goto Exit_Sub
'here Select Case statement
Exit_Sub:
End Sub
知道了吗?
答案 1 :(得分:0)
好的,如果我使用它,我将如何指定要在case语句中使用的单元格数?它不会永远是单元格(50,2)...而且在发送工作表名称时也会出错