|
▼ギン さん:
>このコードで思っていた通りの処理が出来ました。
>(Selection, Selection)
>は初めて使用しました。これて選択出来たのですね。
普通に
set selrng=selection でも良いのですが・・・、
>実はこの選択したセルに
ユーザーが選択したセル範囲なのですよね?
だとしたら、ユーザーが変な操作をする可能性もありますよね?
例えば、こんな選択は極端な例ですが、
Sub sample1()
Dim selrng As Range
Range("a1:a10,a1:b10,a1:c10").Select
Set selrng = Selection
MsgBox "セルアドレス " & selrng.Address & " セルカウント " & selrng.Count
End Sub
これで実行すると、60回セルを調べることになります。しかもダブって・・・。
Sub sample2()
Dim selrng As Range
Range("a1:a10,a1:b10,a1:c10").Select
Set selrng = Application.Union(Selection, Selection)
MsgBox "セルアドレス " & selrng.Address & " セルカウント " & selrng.Count
End Sub
Unionを使うと、結構、整理してくれるんですよね!!
これが理由でユーザー選択セル範囲には、Unionを使う場合があります。
>でも、selrngの変数上ではアドレスは表示されないのですね?
上記の記述で分かると思いますが、
msgbox selrng.address
でアドレスは表示されます。
>それから On Error Resume Next
>If Err.Number = 0 Then
>のエラー処理はは何故入れるのでしょうか?
これは、セル範囲を選択していないときも考慮したためです。
図形を選択した状態で実行すれば、On Error 〜
なしだと、プログラムが止まってしまいますから・・・。
本来は、セルを選択してください というメッセージを表示すればよいですね!!
これでどうですか?
|
|