• 締切済み

マクロで「もし空白なら」と条件をつけたいんです

Excel2000を使っている、マクロ初心者です。 質問の仕方もいまいちわかっておらず、わかりづらくてすみません。 仕事で注文管理表を作って、自分のやりたい作業ができる関数を探していたところ、マクロを使ってやるのがよいとわかったので、「自動記録」をつかって作ってみました。 注文一覧表は行ごとに商品名、列ごとにA店、B店・・・と店舗名が入っています。 そして記録されたマクロは下記です。 Sub 一覧表() ' ' 一覧表 Macro ' マクロ記録日 : 2008/5/16 ユーザー名 : -ameji- ' ' Selection.AutoFilter Field:=5, Criteria1:="<>" Range("B2:D100").Select Selection.Copy Sheets("A店").Select Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues Range("B3").Select Sheets("注文一覧表").Select Range("F2:F100").Select Application.CutCopyMode = False Selection.Copy Sheets("A店").Select Range("F3").Select Selection.PasteSpecial Paste:=xlPasteValues Range("B3").Select End Sub このような感じで、「注文一覧表のあるシートで空白のセルを省き、各店舗用のシートの表に転記し、A店のシートのB3をアクティブにして終わり」といった流れを作りました。 これは1店舗分ですが、End Subの前に10店舗分、同じ物があります。 すべての店舗が1つ以上の商品を注文した場合はうまく作動するのですが、何も注文しなかった店舗があると、エラーになってしまいます。 そこで、指定した範囲(A店なら、注文一覧表のF2:F100)が「すべて空白なら」それに対応する店舗のシートのB3をアクティブにするだけ、「1つでも数字が入っているなら」上記のマクロを実行するようにしたいのです。 If~thenが目的にあっていそうだったので試してみましたが、条件の入れ方が間違っていたらしく、うまく出来ませんでした。 そこで皆様のお知恵をお借りしたいと思います。 よろしくお願いいたします。

みんなの回答

  • Dred
  • ベストアンサー率36% (4/11)
回答No.1

If Application.WorksheetFunction.CountA(Sheets("シート名").Range("f3:f100")) > 0 Then シート名は直してください。     CountA 空白でないセルの個数を算出する。

-ameji-
質問者

お礼

早速のご回答、ありがとうございます。 これはIf~then Elseでよろしいのでしょうか? やってみたら、シートA店のB3を選択した後の Selection.PasteSpecial Paste:=xlPasteValues で「この操作には同じサイズの結合セルが必要です」とエラーになってしまいました。 でも貼りつけたい範囲のセルは結合されているものはありません。 なぜでしょう (/_<。)

-ameji-
質問者

補足

いろいろやってみたら 教えてくださった式を勘違いしていたことに気付きました。 ちゃんと解決できました♪ ヘンな質問をしてすみませんでした。

関連するQ&A