我正在寻找一种方法来缩短这段代码,方法是将每个 "Case is" 瞬间合并为一个从变量中获取案例名称的瞬间

I am looking for a way to shorten this code by consolidating each "Case is" instant into one getting the case name from a variable

宏的目的是根据我的 "Recommendation" sheet.

下拉菜单中所选的大小写选择正确的数据

这是我的代码:

Private Sub cmbNatCoList_Change()

'Define selected NatCo and variables for loop
Dim NatCoList As String
Dim ZeileUntersucht As Integer
Dim ZeileEintragen As Integer

'Line which is looked at in NatCo sheet
ZeileUntersucht = 17
'Line which is written in in Recommendation Sheet
ZeileEintragen = 15

'Selected NatCo
NatCoList = cmbNatCoList.Value

'Set selected NatCo on NatCoRecommendations sheet
'ThisWorkbook.Sheets("NatCoRecommendations").cmbNatCoList.Value = NatCoList

'Set position and size of combobox
cmbNatCoList.Top = 85
cmbNatCoList.Left = 1120
cmbNatCoList.Width = 100
cmbNatCoList.Height = 40

'Write selected NatCo on charts
Range("z1") = NatCoList
Worksheets("Stock Control Chart").Range("C61") = NatCoList
Worksheets("Price Chart").Range("D44") = NatCoList

'Search for recommendations for selected NatCo
 Select Case NatCoList

'========================================
Case Is = "TDG"
Worksheets("Recommendations").Rows("1:224").Hidden = False
    'Loop looking for recommendations in each line, writes BNCode in list if yes 
and continues with next line, if not just continues
For ZeileUntersucht = 20 To 515
    If Worksheets("TDG").Cells(ZeileUntersucht, 238).Value = "yes" Then
        Worksheets("Recommendations").Cells(ZeileEintragen, 3) = Worksheets("TDG").Cells(ZeileUntersucht, 1)
        ZeileEintragen = ZeileEintragen + 1

    End If
Next ZeileUntersucht




'===========================================
Case Is = "TMNL"
Worksheets("Recommendations").Rows("1:263").Hidden = False
    For ZeileUntersucht = 20 To 515
        If Worksheets("TMNL").Cells(ZeileUntersucht, 238).Value = "yes" Then
            Worksheets("Recommendations").Cells(ZeileEintragen, 3) = 
Worksheets("TMNL").Cells(ZeileUntersucht, 1)
            ZeileEintragen = ZeileEintragen + 1

    End If
Next ZeileUntersucht

这是我正在尝试改进的部分代码。

这些Case Is总共有20个左右,我这里只给大家看两个。里面的代码是一模一样的,唯一随着选中的案例而改变的是它正在看的作品sheet。

重要提示:宏总是只选择(使用)一种情况。

如果您需要更多信息,请询问。

我注意到您在建议中将 Hidden 设置为 false 的行数已更改,第一个案例是 1:224,第二个案例是 1:263,但如果这应该是一样的,那么像下面这样的事情会做,只需用以下内容替换你的整个 Select 案例:

Worksheets("Recommendations").Rows("1:224").Hidden = False
    For ZeileUntersucht = 20 To 515
        If Worksheets(NatCoList).Cells(ZeileUntersucht, 238).Value = "yes" Then
            Worksheets("Recommendations").Cells(ZeileEintragen, 3) = Worksheets(NatCoList).Cells(ZeileUntersucht, 1)
            ZeileEintragen = ZeileEintragen + 1
        End If
    Next ZeileUntersucht