[英]VBA's range causes “Run time error 9 Subscript out of range”
每當我超出一定數量的列時,以下代碼都會失敗,例如,如果我使用的是這個數組:AD2:BM,一切正常並且它將字母相互綁定(其原始用途)。 但是,每當我嘗試從AD2:KQ失敗時,它都會失敗
運行時錯誤9下標超出范圍。
您能否告知如何擴展此代碼中的范圍(不產生錯誤)? 關心西方
Sub WL()
Dim R As Long, C As Long, X As Long, Data As Variant
Data = Range("AD2:BM" & Columns("AD:BM").Find("*", , xlValues, , xlRows, xlPrevious).Row)
For R = 1 To UBound(Data, 1)
X = -1
For C = 1 To UBound(Data, 2)
If Len(Data(R, C)) Then
X = X + 1
If X Then Data(R, C) = Data(R, C + 1) & Data(R, C)
End If
Next
Next
Range("AD2:BM2").Resize(UBound(Data)) = Data
End Sub
2.更新:
W&L的所有字符串都以一個字母開頭,以一個字母結尾。 中間的一切都是完美的。
問題是:如何將第一個極右值和第一個極左值(即單身)加倍? 例如,我在下面的附圖中突出顯示了這些事件[不要被愚弄,每個字符串以一個字母開頭和結尾 - 這兩個案例完全可見]。
我需要開始和結束L或W加倍,從W到WW,從L到LL。 其中W和L在兩者之間保持原樣,即從一個時期轉移到另一個時期並加入其他單個字母[就像在下面的代碼中一樣]。
謝謝
您正在將C遞增到UBound(數據,2),但在該循環內,您希望使用UBound之外的數據(r,C + 1)。
Sub WL()
Dim R As Long, C As Long, X As Long, Data As Variant
Data = Range("AD2:BM" & Columns("AD:BM").Find("*", , xlValues, , xlRows, xlPrevious).Row)
For R = 1 To UBound(Data, 1)
X = -1
For C = 1 To UBound(Data, 2) - 1 '<~~ FIX HERE!!
If Len(Data(R, C)) Then
X = X + 1
If X Then Data(R, C) = Data(R, C + 1) & Data(R, C) 'Now C+1 doesn't error
End If
Next
Next
Range("AD2:BM2").Resize(UBound(Data)) = Data
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.