2016-05-23 6 views
1

このコードはExcel 2013で作成されており、私はそれを2003年に使用するワークステーションで作成しました。2013年にはそれがうまくいきます。 9 "下付き文字が範囲外です"。もし誰かがこれを理解するのを助けることができたら、私はそれを感謝します。もう一度助けてくれてありがとう問題はデータRuntime Erro "9"下付き文字範囲外

のこのビットを
With wsSheet 
    Set rnData = Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row) 
End With" 

Set wsSheet = Worksheets("Sheet1")

で表示されます。

`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さんに感謝シート名を実際のシート名に変更して2つの点を追加しました。問題は解決しました...今はコンパイルエラーですが、ここに載せる前にそれを理解しようとします。助けてくれてありがとう、私はまだ学んでいます。 – cparsons

答えて

1

は、このタイプミス(あなたが二つの範囲の前にドットが欠落している)されることがあります。

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

そしてロリーは、上記のコメントで指摘したように、あなたが正しいワークブックに対処している場合は、確認してください。

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

ありがとうございました、あなたのフィードバックとRoryの両方が、私たちがいくつかの進歩を助けました。 – cparsons

関連する問題