2017-12-20 6 views
0

매크로의 목적은 드롭 다운 메뉴에서 선택한 경우에 따라 올바른 데이터를 선택하는 것이다. 내 "추천"시트에.나는이 코드를 줄이기위한 방법을 찾고 있는데, 각각의 "Case is"인스턴트를 하나의 변수에서 사례 이름을 얻음으로써 인스턴트 메시지로 변환한다.

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 

이 내가 개선하기 위해 노력하고 코드의 일부입니다 :

내 코드입니다.

사례 총 20 건 정도입니다. 여기에 2 건을 보여 드리고 있습니다. 내부의 코드는 정확히 동일합니다. 선택한 케이스로 변경되는 것은 워크 시트입니다.

중요 사항 : 매크로에는 항상 하나의 사례 만 선택 (사용)됩니다.

자세한 내용은 문의하십시오.

답변

0

나는 Hidden을 False로 설정 한 권장 사항의 첫 번째 사례가 1 : 224이고 두 번째 사례가 1 : 263 인 행 수가 많다는 것을 알았지 만 이것이 동일해야한다면 다음과 같이 간단히 전체 케이스를 다음으로 교체하십시오.

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 
+0

오, 감사합니다. 같은 번호 여야합니다. 나는 너의 해결책을 시험 할 것이다, 고마워! – Tim

+0

@Xiabier 매우 쉽고 완벽하게 작동 해 주셔서 감사합니다. – Tim