2016-11-11 13 views
0

この問題のいくつかの解決策を見て、プレフィックス期間 "。"キーワード細胞とが、デフォルトCells()ことで、私のサブあるメソッドオブジェクト '_Global'の '範囲'失敗エラー1004

Sub GJK() 
Dim port_total_periodic_rows As Worksheet 

Dim Target As Worksheet 
Dim i As Integer 
Dim J As Integer 
Dim DTCPYCTR As Integer 
Dim DTPSTCTR As Integer 
Dim FNDPSTCTR As Integer> 
Dim FNDCPYCTR As Integer 

DTCPYCTR = 5 
FNDCPYCTR = 7 
DTPSTCTR = 2 
FNDPSTCTR = 2 

For i = 1 To 138 
    For J = 1 To 113 
    Sheets("port_total_periodic_rows").Cells(DTCPYCTR, 3).Copy 
    Sheets("Target").Cells(DTPSTCTR, 1).PasteSpecial Paste:=xlPasteValues 
    Sheets("port_total_periodic_rows").Range(Cells(FNDCPYCTR, 2), _ 
               Cells(FNDCPYCTR, 4)).Copy 
    Sheets("Target").Range(Cells(FNDPSTCTR, 2), _ 
       Range(FNDPSTCTR,4)).PasteSpecial Paste:=xlPasteValues 

    FNDPSTCTR = FNDPSTCTR + 1 
    FNDCPYCTRT = FNDCPYCTR + 1 
    DTPSTCTR = DTPSTCTR + 1 

    Next 

    DTCPYCTR = DTCPYCTR + 1 
Next 

End Sub 
+1

「ピリオドをプレフィックスする」は魔法のように動作しません。 VBAの期間(および他の多くの言語)は、あるオブジェクトのメンバーにアクセスするために使用されます。あなたが見た解決策に戻ると、「With」ブロックが数行上にあることに気付くでしょう - その期間は青から出てこない、文字通り ' With 'ステートメント。 –

答えて

3

を動作しませんでしたことはActiveSheetを指し、そのアクティブなシートが「port_total_periodic_rows」でない場合、これは失敗します。

Sheets("port_total_periodic_rows").Range(Cells(FNDCPYCTR, 2), _ 
              Cells(FNDCPYCTR, 4)).Copy 

は次のようになります。

With Sheets("port_total_periodic_rows") 
    .Range(.Cells(FNDCPYCTR, 2), .Cells(FNDCPYCTR, 4)).Copy 
End with 

同様の事がまたFOに適用されますラインを描く。

Integerの代わりにLongを使用すると、オーバーフローの問題を回避できます。

+0

私は2つのエラーの間で前後に切り替える –

+0

この回答をいただきありがとうございます。私がペースト用に書いたコードは、もはやpastespecialペーストでは受け入れられませんでした。= xlpastevaluesは使用できません。PasteSpecial xlPasteValuesを使用しました。 –

+0

Rangeオブジェクトはatleast two細胞(すなわち、細胞(1,2)、細胞(3,4))である。コピー&ペーストのような機能を持ち、入力パラメータとしてただ1つのセルでOKである別のオブジェクトがありますか? –

関連する問題