Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


17403 / 76738 ←次へ | 前へ→

【64789】Re:ワークシートのアクティベートについて
発言  ichinose  - 10/3/13(土) 21:07 -

引用なし
パスワード
   こんばんは。

>>>ちなみに、マクロはワークシート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

なんていうパラメータ渡しが考えられます。


このようにしておくと、配置するモジュールに依存しないと思います。



0 hits

【64784】ワークシートのアクティベートについて VBA初心者 10/3/13(土) 11:06 質問
【64785】Re:ワークシートのアクティベートについて よろずや 10/3/13(土) 11:26 発言
【64786】Re:ワークシートのアクティベートについて VBA初心者 10/3/13(土) 11:57 質問
【64787】Re:ワークシートのアクティベートについて VBA初心者 10/3/13(土) 12:00 発言
【64788】Re:ワークシートのアクティベートについて UO3 10/3/13(土) 13:22 回答
【64789】Re:ワークシートのアクティベートについて ichinose 10/3/13(土) 21:07 発言
【64790】Re:ワークシートのアクティベートについて VBA初心者 10/3/13(土) 21:29 お礼

17403 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free