|
こんばんは。
>>>ちなみに、マクロはワークシートAに書いています。
>>これだと、アクティブかどうかに関係なくワークシートAが対象になります。
>ということは、標準モジュールに書いた方が良いという事でしょうか。
>ワークシートAで書いていて、別のワークシートに罫線を書くことは
>できないということでしょうか。
>Sub keisen(Xsen_kensu As Integer)
> Range(Cells(5, 2), Cells(Xsen_kensu + 5, 20)).Borders.LineStyle = True
>End Sub
このプロシジャーをどこに置くかという問題も確かにあります。
(別プロシジャーにする必要性も含めてね)。
が、それは別問題として
上記プロシジャーが配置したモジュールによって、動作したりしなかったりするのは、
パラメータとして、渡す情報が不足しているからです。
一例ですが、
Sub keisen(byval Rng as range)
Rng.Borders.LineStyle = True
End Sub
として、
呼び出し側で
sub test()
dim r as range
dim Xsen_kensu as long
dim sht as worksheet
set sht=worksheets("ワークシートB")
Xsen_kensu=5
set r=sht.range(sht.cells(5,2),sht.cells(Xsen_kensu + 5, 20))
Call keisen(r)
end sub
とするか又は、
Sub keisen(byval sht as worksheet,Xsen_kensu As long)
with sht
.range(.cells(5,2), _
.cells(Xsen_kensu + 5, 20)).Borders.LineStyle = True
end with
End Sub
として、呼び出し側で
Sub test()
Dim sht As Worksheet
Set sht = Worksheets("ワークシートB")
Call keisen(sht, 5)
End Sub
なんていうパラメータ渡しが考えられます。
このようにしておくと、配置するモジュールに依存しないと思います。
|
|