プロが教えるわが家の防犯対策術!

エンジニアのものです。

エクセルで売り上げ集計をVBAを使って効率化しています。

他のシートからデータをコピー、貼り付けるのですが
分量が一定ではありません。

今VBAで、データの合計と、行の挿入を自動化させようとしているのですが
分量が一定ではないために、うまく指定ができません。

Q&Aサイトを検索していると、offset関数・名前の定義をうまく使えとあり



  Worksheets("Sheet1").Names.Add Name:="名前A"
  RefersTo:=Range("B125")


  Range("名前A").Select
If ActiveSheet.Offset(-1, 0).Value = "1134 " Then
.EntireRow.Resize(10).Insert shift:=xlDown
End If

これで
名前Aと定義したセル(集計表の一番下)の上に数値が入っていれば
10行挿入するはずだと思うのですが
うまくいきません。

どなたかわかる方がいましたらアドバイスお願いします。

「エクセルで行が可変する時、VBAの記述」の質問画像

A 回答 (2件)

ANo.1です。



「数値」が入っていたら……と、有りながら文字列の"1134 "と、全角スペース付きの文字列を条件にされていたので真意が読み取れませんでした。

IF文からお望みですか?
"名前A"の1つ上のセルの値が1134の時、10行挿入するコードです。

If Range("名前A").Offset(-1, 0).Value = 1134 Then
  Range("名前A").Resize(10).Insert Shift:=xlDown
End If

行挿入の部分は、ANo.1で回答した、名前定義された列にだけ挿入するコードにしてあります。
    • good
    • 0
この回答へのお礼

ありがとうございました。解決しました。
私は基本的なことがわかってないみたいです。

機会がありましたらまたよろしくお願いいたします。

お礼日時:2011/12/05 00:12

行の挿入箇所だけ


その列だけの挿入で良いなら
 Range("名前A").Resize(10).Insert Shift:=xlDown

全ての列に10行挿入するなら
 Rows(Range("名前A").Row & ":" & Range("名前A").Row + 9).Insert Shift:=xlDown

IF文の条件が本当にコレで良いのか不安ですが、そこは正しいんですよね?
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
If文の条件に関してですが、添付した図の、
小計の上に数字(データ)入ってなかったら(挿入する)

としたいのですが、そう読み取れないでしょうか?

お礼日時:2011/12/02 18:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!