• ベストアンサー

エクセル VBA中の関数について

エクセルにてVBA中の文章で、 D7からD11に、何もなければそのまま。何かあればB7からB11に表示する。という文章を教えてください。 Bには常に値が入力されています。実行時、Bが空白にならない様にしたいです。 IF関数はわかるのですが、VBA中はどのように使用すれば良いのかわかりません。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

Sub MACRO1() If Application.WorksheetFunction.CountBlank(.Range("D7:D11")) < 5 Then Range("D7:D11").Select Selection.Copy Range("B7").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ True, Transpose:=False End If End Sub

prtcw794
質問者

お礼

ありがとうございました。 やりたい事ができました!!!毎日の作業ですので教えてもらって本当に助かりました。

その他の回答 (1)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

こんな感じでしょうか? With Sheets("sheet1") If Application.WorksheetFunction.CountIf(.Range("D7:D11"), "<>") > 0 Then .Range("D7:D11").Copy .Range("B7:B11") End If End With

prtcw794
質問者

補足

早速回答ありがとうございます。 しかし、困ったことに、Dが全て値ありorなしであれば良いのですが B7 値あり   D7  値なし B8 値あり D8  値あり B9 値あり D9  値なし B10 値なし D10 値なし B11 値なし D11 値なし (Bに値がなしの時は、Dも必ずなしです。) という風に、上記のようにバラつくと上手くいきません。 なにか良い方法はないでしょうか?