首页 > 解决方案 > 如何在 VBA 中使用组合框值设置 If Then

问题描述

在 Sheet1 中,我有一个国家下拉列表,配置为名为 COUNTRY 的 ComboBox 和名为“FEES”的 TextBox。可能的选择是西班牙、葡萄牙和德国。如果选择的选项是西班牙,我想在 Sheet2 的单元格 A2 中写入 FEES 的值,如果我选择德国,我想在 Sheet2 的单元格 A3 中写入 FEES 的值,如果选项是葡萄牙,我将写入A4 来自 Sheet2 的 FEES 值。我尝试了不同的选择,但没有一个有效


If Sheet1.Country.Value = "Spain" Then
    Worksheet("Sheet2").Cells(2,1).Value = Sheet1.Fees.Value
End If

If Sheet1.Country.Value = "Germany" Then
    Worksheet("Sheet2").Cells(3,1).Value = Sheet1.Fees.Value
End If

If Sheet1.Country.Value = "Portugal" Then
    Worksheet("Sheet2").Cells(4,1).Value = Sheet1.Fees.Value
End If


标签: excelvba

解决方案


请在工作表代码模块中粘贴下一个代码:

Option Explicit

Private Sub COUNTRY_Change()
  Dim sh As Worksheet, cb As MSForms.ComboBox, txtF As MSForms.TextBox, no As Long
  
    Set sh = Worksheets("Sheet2")
    Set cb = ActiveSheet.OLEObjects("COUNTRY").Object
    Set txtF = ActiveSheet.OLEObjects("fees").Object
    If cb.value = "Spain" Then
          no = 2
     ElseIf cb.value = "Portugal" Then
          no = 3
    ElseIf cb.value = "Germany" Then
         no = 4
    Else
        Debug.Print "Something else"
     End If
     sh.cells(no, 1).value = txtF.Text
End Sub

可以通过右键单击工作表名称并选择“查看代码”来访问工作表代码模块...


推荐阅读