"Sheet1"という名前のシートがありません。次のいずれかの
- このコードは、データをワークブックに標準モジュールに住んでいると、あなたが シートの名前を変更しました、または
- コード別のブックに住んでいると、あなたが適切にあなたのワークシートのプロパティを修飾していません
私は後者を想定します。ワークシートやセルなどのコレクションプロパティを使用すると、Excelは親が誰であるかを前提にします。標準モジュールで修飾されていないワークシートの呼び出しは、修飾されていないワークシートには、問題がどこにある
ThisWorkbook.Worksheets()
を確認するには想定してコードに次の行を追加しますはThisWorkbookモジュールに呼び出す
ActiveWorkbook.Worksheets()
を仮定します
Debug.Print Worksheets("Sheet1").Parent.Name
これは、どのExcelブックが使用しているかを示し、必要な場合とは異なる場合があります。
誤った推測を避けるには、参照を完全修飾することをお勧めします。あなたがデータを含むブックを開いている場合たとえば、それはWB参照が参照を修飾する簡単な方法であることを保持
Sub putquotes()
Dim wb As Workbook
Dim sym(1 To 162) As String
Dim i As Long
Set wb = Workbooks.Open("Path\Name")
For i = 1 To 162
sym(i) = wb.Sheets("Sheet1").Cells(i + 1, 1)
Next i
End Sub
次のようになります。あなたは、コードで別のファイルを開いていない場合は、あなただけの
ThisWorkbook.Worksheets("Sheet1")
ActiveWorkbook.Worksheets("Sheet1")
Workbooks("Mybook.xlsx").Worksheets("Sheet1")
のように明示的に修飾することができます配列にセルの値を読み込むためのより良い方法は、あなたを与えるだろう、この
Sub putquotes()
Dim wb As Workbook
Dim sym As Variant
Dim i As Long
Set wb = Workbooks.Open("Path\Name")
sym = wb.Sheets("Sheet1").Range("A2").Resize(162, 1).Value
For i = LBound(sym, 1) To UBound(sym, 1)
Debug.Print "'" & sym(i, 1) & "'"
Next i
End Sub
のようなものですあなたが好きではないかもしれない2次元ベース1配列ですが、一度に1つずつ読み込むよりも高速です。
ないVBAエキスパート表示されますが、それはあまりにもVBA場合なら、ほとんどのプログラミング言語、配列と文字列は0からカウントを開始するには、あなたがする必要があることを確認する
''
ダブルdo sym(i-1)=ワークシートを実行する( "sheet1")セル(i + 1,1) – Jorisデバッグモードで調べる(エラー時にコードがブレークする)。 'sym(i)'は下付き文字を範囲外に返しますか、それは 'Worksheets(" sheet1 ")です。セル(i + 1、1)'?それが起こると '私'の価値は何ですか? –
ワークシート( "sheet1")。範囲外の添え字を返すセル(i + 1、1)。それは、最初のループOKを通過するようだ。私はバグが2番目のループで発生すると思います。 – ben