これまでで一番「情けなかったとき」はいつですか?

IFステートの中にWithステートメントの始まりだけ入れることってできないのですか?

Sub j()
Dim a As String

a = "aaa"
If a = "aaa" Then
With Sheets("作業用1")
Else
With Sheets("作業用2")
End If

End With

End Sub

このような事をやろうとすると、Elseの部分でコンパイルエラーになります。

別の方法として、シートオブジェクトの中に入れちゃえば入れちゃえば
With の分岐をしなくていいことは分かったのですが、
このような使い方をしたいことが多々あるのですが、
VBAの文法的には、IFの中にWithの始まり(先頭)だけを入れることは不可能なのでしょうか?

A 回答 (1件)

有効範囲のブロックが異なってしまうので 無理かも



解決案として

dim sh as Worksheet

if a = "aaa" then
  set sh = Sheets("作業用1")
else
  set sh = Sheets("作業用2")
end if

With sh

End With
といった具合なら うまくいくと思いますよ
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2013/03/01 20:06

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A