超初心者です、すみませんがご教授ください
For a = 1000 To 1500
Range("cells(a,1):Cells(a, 33)").Insert Shift:=xlDown
Next a
こんなのを実行すると下記のようなエラーが出ます
なにが悪いのでしょう?
・実行時エラー'1004':
・'Range'メソッドは失敗しました:'_Global'オブジェクト
変数aに対応するセル範囲に挿入をしたいのですが・・
> Range("cells(a,1):Cells(a, 33)").Insert Shift:=xlDown
それだと "cells(a,1):Cells(a, 33)" が1つの文字列なので
『cells(a,1):Cells(a, 33)』という名前のついたセルを探しに
行くでしょうかねぇ。。。
いきなり
Cells(1000, 1)
と書くと
Application.Cells(1000, 1)
の意味になってアクティブシートがワークシートじゃないと
落ちるから、対象のシートが決まってるなら
Worksheets("Sheet1").Cells(1000, 1)
と書いた方が良いでしょう。
自分が初心者だと思うなら、1行で全て書こうとせず、
変数を用意して、1ステップずつ確認しましょう。
以下のコードで意図通りの範囲が指定されますか?
[Excel VBA]
Sub Test()
Dim a As Integer
Dim str1 As String
Dim str2 As String
a = 1000
Set s1 = Worksheets("Sheet1")
With s1
str1 = CStr(.Cells(a, 1))
str2 = CStr(.Cells(a, 33))
MsgBox str1 & ":" & str2
End With
End Sub
ついでに Insert メソッドのShift に使用できる定数は
XlInsertShiftDirection クラスの xlShiftToRight または xlShiftDown
だと思います。[Excel VBA]のヘルプで確認してください。
すばやいレスありがとうございます
おかげで、解決しましたし、少し理解しました
これからまた精進します
ツイート | ![]() |