2016-05-23 79 views
1

所以這段代碼是在Excel 2013中創建的,而且我必須在2003年使用它才能使用它。2013年它工作得很好,當它在2003年它返回「運行時錯誤」 9「下標超出範圍」。如果有人能幫我解決這個問題,我將不勝感激。它出現的問題是與該位數據運行時錯誤「9」下標超出範圍

Set wsSheet = Worksheets("Sheet1")

With wsSheet 
    Set rnData = Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row) 
End With" 

再次感謝你的幫助。

`Private Sub UserForm_Initialize() 
Dim wsSheet As Worksheet 
Dim rnData As Range 
Dim vaData As Variant 
Dim ncData As New VBA.Collection 
Dim lnCount As Long 
Dim vaItem As Variant 

Set wsSheet = Worksheets("Sheet1") 

With wsSheet 
    Set rnData = Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row) 
End With 

vaData = rnData.Value 

On Error Resume Next 
    For lnCount = 1 To UBound(vaData) 
    ncData.Add vaData(lnCount, 1), CStr(vaData(lnCount, 1)) 
Next lnCount 
On Error GoTo 0 

With ComboBox1 
    .Clear 
    For Each vaItem In ncData 
     .AddItem ncData(vaItem) 
    Next vaItem 
End With 
End Sub 

Private Sub CommandButton1_Click() 
Dim c As Range 
With Range("B2:B" & Range("B" & Rows.Count).End(xlUp).Row) 
    Set c = .Find(ComboBox2.Value, LookIn:=xlValues) 
    c.Activate 
    ActiveCell.EntireRow.Copy 
    Sheets("Sheet2").Select 
    RowCount = Cells(Cells.Rows.Count, "a").End(xlUp).Row 
    Range("a" & RowCount + 1).Select 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 
End With 
Sheets("Sheet1").Select 
Range("a1").Select 
Unload Me 
End Sub 


Private Sub ComboBox1_Change() 

Dim cell As Range 
Me.ComboBox2.Clear 
For Each cell In Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row) 
If cell.Value = Me.ComboBox1 Then 
    Me.ComboBox2.AddItem (cell.Offset(0, 1).Value) 
End If 
Next cell 
Me.ComboBox2.ListIndex = 0 

End Sub` 
+0

如果您在該行上發生錯誤,那麼表名稱不正確或錯誤的工作簿處於活動狀態。 – Rory

+0

這是2003年的Excel本地化版本嗎? – LocEngineer

+0

感謝Rory和Sun,將工作表名稱更改爲實際的工作表名稱,並添加了兩個點,現在解決了這個問題......現在,我得到了編譯錯誤,但在將它放在此處之前我會嘗試弄清楚它。感謝您的幫助,我仍在學習。 – cparsons

回答

1

可能是這個錯字(你缺少兩個區域之前的點):

With wsSheet 
    Set rnData = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row) 
End With 

正如羅裏在評論中指出的上述檢查,如果你在正確的工作簿。也許添加這是安全的:

Set wsSheet = ThisWorkbook.Worksheets("Sheet1") 
+0

謝謝你,你的反饋和羅裏都幫助我們取得了一些進展。 – cparsons

相關問題