2016-12-14 7 views
0

ログファイルを作成しようとしています。このコードを実行しようとするとエラー9が発生します。添字が範囲外です。カントがエラーコード9を解決する

私は本当に助けていただきありがとうございます。コードは他のファイル(毎月1回)で正常に動作するようですが、すべてではありません。理解できません。

! [私のコード] http://imgur.com/a/w6xmd

これは私の最初の質問でもVBAに関する質問ですので、さらにスクリーンショットや情報が必要な場合は、必ず質問してください。事前に

Sub Information() 

    Dim x, y, z, g, h, f, e, d As Integer 

' --------------------------------------------------------------------------------------------------------------------- 
' Departure 

    x = 6 
    y = 12 
    z = 2 
    f = 2 
    g = 16 
    e = 1 

    For i = 1 To 300000000 
     If e > 30000000 Then 
      f = f + 1 
      e = 1 
      z = 2 
     Else 
      If Worksheets("Arrival").Cells(f, 15).Value = Worksheets("Information").Cells(z, x).Value Then 
       Worksheets("Arrival").Cells(f, 16).Value = Worksheets("Information").Cells(z, 3).Value 
       Worksheets("Arrival").Cells(f, 14).Value = Worksheets("Information").Cells(z, 4).Value 
       Worksheets("Arrival").Cells(f, 17).Value = Worksheets("Information").Cells(z, 5).Value 
       Worksheets("Arrival").Cells(f, 18).Value = Worksheets("Information").Cells(z, 11).Value 
       Worksheets("Arrival").Cells(f, 19).Value = Worksheets("Information").Cells(z, 7).Value 

       z = 2 
       f = f + 1 


      Else 

       z = z + 1 
       e = e + 1 
      End If 
     End If 
    Next i 

    End Sub 

おかげLOT、

はジェイソン

+0

一つは、あなたがいることを修正したら300000000は、シート内の行(Excelは2007+)1048576別の可能性がある場合は数よりも方法の詳細であるとして、あなたは、エラー1004を取得します、したがって、エラー9間違っていますあなたのシートとマクロは別々のワークブックにあります。 worbookインスタンスでシート名を完全にqalifyします。ワークブック( "test.xlsm")ワークシート( "Arrival") – cyboashu

答えて

0

はこのようなすべての変数を宣言:

Dim x as long 
Dim y as long 
dim z as long 
etc. 

をして、もう一度試してください。おそらくそれはうまくいくでしょう。

そして、Excelはわずか2^20行しかありませんが、それは100万を少し超えています。あなたはあなたのループで3000万を使用しています。他に何か考えてみてください。

+0

ありがとうございますが、まだ動作しませんでした。その他の提案はありますか? http://imgur.com/a/oUSVO – Jason

+0

エディションを確認してください。あなたはExcelの行の限界を超えています。あなたのコードで30〜300万ではなく、2^20行を下回ってください。 – Vityata

+0

私はそれを100万に変更しましたが、100000未満ですが、同じコードで同じエラーが発生しています。あなたの助けを本当に感謝します – Jason

0

私は、ワークシートに参照されている値を監視するために、問題文の前に

Debug.Print f, z, x 

を置くことをお勧めします。

ワークシートの行と列の数がに制限されています:

  • 1,048,576行
  • 16,384列

私はxの値が数に対して高すぎる達していると思われます明細書の列の数

If Worksheets("Arrival").Cells(f, 15).Value = Worksheets("Information").Cells(z, x).Value Then

したがって、の下付き文字はです。しかし、他の数値(fまたはz)も行を参照している可能性があります。

Debug.Printこの文の前の値は明確にする必要があります。

p.s:さらなる問題を避けるために、すべての変数を長く宣言します。シート名の

Dim x As Long, y As Long , z as Long, .... 
+0

このようにしますか? http://imgur.com/a/ojSLU私は間違ったことをする必要があります – Jason

関連する問題