我正在寻找一种方法来缩短这段代码,方法是将每个 "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
宏的目的是根据我的 "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