2016-07-20 205 views
1

我是一個CAD工程師VBA的relativly小知識選擇案例,但今天溢出錯誤,我決定修改一個5歲的程序和過這樣的問題來了:在For循環

我有一個組合框是可以顯示來自2張不同圖紙的項目,具體取決於選擇兩個收音機箱中的哪一個。 這適用於案例。老實說,我不知道案件真正起作用,所以我不知道組合框怎麼知道要採取哪種情況,但它起作用,所以我沒有改變它。

現在,目前,該代碼是這樣的:

這意味着,如果我添加一個新行到表中,我要複製這些情況下選擇的東西

Private Sub ComboBox5_Change()      'Auswahl Rohr 

    Select Case ComboBox5.Value 
     Case Tabelle6.Cells(4, 3)      'Welle in Rohr 

      LängRo = Tabelle6.Cells(4, 6) 
      OnCenRo = Tabelle6.Cells(4, 7) 
      OffCeRo = Tabelle6.Cells(4, 8) 
      MinRRo = Tabelle6.Cells(4, 9) 

     Case Tabelle13.Cells(4, 3)     'ROHR IN ROHR 

      LängRo = Tabelle13.Cells(4, 6) 
      OnCenRo = Tabelle13.Cells(4, 7) 
      OffCeRo = Tabelle13.Cells(4, 8) 
      MinRRo = Tabelle13.Cells(4, 9) 

     Case Tabelle13.Cells(5, 3)     'ROHR IN ROHR 

      LängRo = Tabelle13.Cells(5, 6) 
      OnCenRo = Tabelle13.Cells(5, 7) 
      OffCeRo = Tabelle13.Cells(5, 8) 
      MinRRo = Tabelle13.Cells(5, 9) 

    End Select 

End Sub 

我試圖解決這個問題像這樣的東西:

Private Sub ComboBox5_Change()      'Auswahl Rohr 

    Dim for1 As Long 
    Dim for2 As Long 
    For for2 = 3 To 7 
     If Tabelle6.Cells(for2, 3) = "" Then 
      GoTo fert 
     Else 
      Select Case ComboBox5.Value 
       Case Tabelle6.Cells(for2, 3)   'Welle in Rohr 

        LängRo = Tabelle6.Cells(for2, 6) 
        OnCenRo = Tabelle6.Cells(for2, 7) 
        OffCeRo = Tabelle6.Cells(for2, 8) 
        MinRRo = Tabelle6.Cells(for2, 9) 

      End Select 
     End If 
    Next 

    For for1 = 3 To 7 
     If Tabelle10.Cells(for1, 3) = "" Then 
      GoTo fert 
     Else 
      Select Case ComboBox5.Value 
       Case Tabelle10.Cells(for1, 3)   'ROHR IN ROHR 

        LängWe = Tabelle10.Cells(for1, 6) 
        OnCenWe = Tabelle10.Cells(for1, 7) 
        OffCeWe = Tabelle10.Cells(for1, 8) 
        MinRWe = Tabelle10.Cells(for1, 9) 

      End Select 
     End If 
    Next 

fert: 

End Sub 

但現在我得到一個溢出錯誤,當我按使用VAR LängRO一個按鈕,我真的不知道爲什麼

+0

你並不需要的情況下語句分開,情況就是將它們分開。你在哪裏得到錯誤?溢出是正常情況下,當您試圖將大量或錯誤的數據放入變量中時。 – MatthewD

+0

嘿馬修我認爲我只是去與蒂姆的代碼,它簡化了問題,因爲它不是我的代碼,我認爲它可能需要很長時間,直到我找到導致溢出的代碼中的「正確」的錯誤。 – Tom

回答

0

未經測試:

Private Sub ComboBox5_Change() 'Auswahl Rohr 

    Dim v, arrRows, c 

    v = ComboBox5.Value 

    arrRows = Array(Tabelle6.Cells(4, 3), _ 
        Tabelle13.Cells(4, 3), _ 
        Tabelle13.Cells(5, 3)) 

    For Each c In arrRows 

     If c.Value = v Then 
      'Found a match - assign from that row... 
      With c.EntireRow 
       LängRo = .Cells(6) 
       OnCenRo = .Cells(7) 
       OffCeRo = .Cells(8) 
       MinRRo = .Cells(9) 
      End With 
      Exit For 'stop looping 
     End If 

    Next c 

End Sub 

我不知道我跟着你的佈局是什麼,但...

+0

嗨蒂姆 非常感謝,這簡化了問題,因爲我只需要爲每個新項目添加一條新線,非常感謝! 乾杯 – Tom