2017-06-27 32 views
0
Dim Var_1 As String 
Dim Var_2 As String 
Dim Var_3 As String 
Dim Var_4 As String 
Dim Var_5 As String 
Dim Var_6 As String 
Dim Var_7 As String 
Dim Var_8 As String 
Dim Var_9 As String 
Dim Var_10 As String 
Dim Var_11 As String 
Dim Var_12 As String 
Dim Var_13 As String 
Dim Var_14 As String 
Dim Var_15 As String 
Dim Var_16 As String 
Dim Var_17 As String 
Dim Var_18 As String 
Dim Var_19 As String 
Dim Var_20 As String 
Dim Var_21 As String 
Dim Var_22 As String 
Dim Var_23 As String 
Dim Var_24 As String 
Dim Var_25 As String 
Dim Var_26 As String 
Dim Var_27 As String 
Dim Var_28 As String 
Dim Var_29 As String 

Var_1 = "Ex-Bidadi" 
Var_2 = "Ex-Hospet" 
Var_3 = "Ex-Chennai" 
Var_4 = "Ex-Coimbatore" 
Var_5 = "Ex-Gangaikondan" 
Var_6 = "Ex-Pune" 
Var_7 = "Ex-Goa" 
Var_8 = "Ex-Mumbai" 
Var_9 = "Ex-Nashik" 
Var_10 = "Ex-Aurangabad" 
Var_11 = "Ex-Goblej" 
Var_12 = "Ex-Hyderabad" 
Var_13 = Ex - Vizag 
Var_14 = "Ex-Vijayawada" 
Var_15 = "Ex-Chittoor" 
Var_16 = "Ex - Siliguri" 
Var_17 = "Ex-odhisha" 
Var_18 = "Ex-Jharkhand" 
Var_19 = "Ex-Bihar" 
Var_20 = "Ex-NorthEast" 
Var_21 = "Ex-Delhi" 
Var_22 = "Ex-Udaipur" 
Var_23 = "Ex-Jammu" 
Var_24 = "Ex-Haridwar" 
Var_25 = "Ex-Dasna" 
Var_26 = "Ex-Kanpur" 
Var_27 = "Ex-Unnao" 
Var_28 = "Ex-Var_anasi" 
Var_29 = "Ex-Bhopal" 

我顯示你的我的代碼的一部分,我只是想這些我試着如何循環使用我已經定義了至少這表示遍歷具有不同名稱的工作表使用VBA

For n = 1 to 29 
    For i = 3 To 445 
     For m = 28 To 40 
      ActiveWorkbook.Sheets("Var_" & n).Cells(i, m) = 999999 
      least(i, m, n) = ActiveWorkbook.Sheets("Var_" & n).Cells(i, m) 
     Next m 
    Next i 
Next n 

已知(i,m,n)數組但循環顯示下標錯誤超出範圍我嘗試過使用所有可能性,但循環不起作用

+1

此問題存在於ActiveWorkbook.Sheets(「Var_」&n)中 - 這將查找一個字面上名爲「Var_1」,「Var_2」等的工作表,而不是您用這些變量填充的字符串 – Jordan

+0

你的數據是安排在工作表上的嗎?你想完成什麼? – danieltakeshi

+3

您需要將Var設置爲數組,而不是單獨編號的字符串變量。 – CLR

回答

1

您需要將圖紙名稱存儲在數組中:

Var = Array("Ex-Bidadi", "Ex-Hospet", "Ex-Chennai", "Ex-Coimbatore", "Ex-Gangaikondan", "Ex-Pune", "Ex-Goa", "Ex-Mumbai", "Ex-Nashik", "Ex-Aurangabad", "Ex-Goblej", "Ex-Hyderabad", "Ex - Vizag", "Ex-Vijayawada", "Ex-Chittoor", "Ex - Siliguri", "Ex-odhisha", "Ex-Jharkhand", "Ex-Bihar", "Ex-NorthEast", "Ex-Delhi", "Ex-Udaipur", "Ex-Jammu", "Ex-Haridwar", "Ex-Dasna", "Ex-Kanpur", "Ex-Unnao", "Ex-Var_anasi", "Ex-Bhopal") 

然後內部你的循環使用下面的:

least(i, m, n) = ActiveWorkbook.Sheets(Var(n)).Cells(i, m) 
1

創建片

Dim Var 
Var = Array("Ex-Bidadi"", "Ex-Hospet", "Ex-Chennai" ... till the last sheet) 

的陣列計數表,其中包括陣列上的數量。陣列通過所有表開始於索引0

For n = 0 to 28 '29 sheets less 1, because of the array index 0 
    For i = 3 To 445 
     For m = 28 To 40 
      ActiveWorkbook.Sheets(Var(n)).Cells(i, m) = 999999 
      least(i, m, n) = ActiveWorkbook.Sheets(Var(n)).Cells(i, m) 
     Next m 
    Next i 
Next n 
+0

謝謝你投資你的寶貴時間 –

1

循環,並挑選只是你在SELECT CASE聲明需要的:

Sub Test() 
    Dim wrkSht As Worksheet 
    Dim i As Long, m As Long 
    Dim cLeast As Collection 

    Set cLeast = New Collection 
    For Each wrkSht In ThisWorkbook.Worksheets 
     'NB: If you want sheets that start with "Ex-" use commented lines instead: 
     'Select Case Left(wrkSht.Name, 3) 
     Select Case wrkSht.Name 
      'Case "Ex-" 
      Case "Ex-Bidadi", "Ex-Hospet", "Ex-Chnnai" 
       For i = 3 To 445 
        For m = 28 To 40 
         cLeast.Add wrkSht.Cells(i, m), wrkSht.Name & "|" & i & "|" & m 
        Next m 
       Next i 
     Case Else 
      'Code if not the sheet you're after. 
     End Select 
    Next wrkSht 

    Debug.Print cLeast("Ex-Bidadi|3|28") 

End Sub 

注:我用一個集合中環路不知道你在追求什麼。字典可能是更好的選擇。

+0

謝謝你投資你寶貴的時間 –

相關問題