Excel VBA質問箱 IV

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

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


41306 / 76732 ←次へ | 前へ→

【40507】Re:シートモジュールのクラス化
回答  neptune  - 06/7/15(土) 10:48 -

引用なし
パスワード
   ▼ハナ さん:
>いつも参考にさせていただいてます。
>XLSで注文書を作成するプログラムを作っているのですが
>複数のシート(SH3,SH4,SH5)で全く同じシートモジュールを記述していて
>とても効率が悪い感じがするんです。(下記のコードです)
> 動作としては
>   ・シートがACTIVEになったら
>      シート保護をかける
>      F4キーに標準モジュール記載のルーチン(SND)を割り当てる
>   ・セルの値が変化したら
>      1列目にコードを入力したら2列目にDBから呼び出した
>      仕入先名を表示する
> というようなものです
クラスモジュール内に必要な処理を書き足せば良いです。
いちばん簡単な例です。
多分分からなかったところは WithEvents ?
詳細はHelp、他のサイトの解説などで研究してください。

'//////標準モジュール////////
Option Explicit

Private clsSheet(1) As Class1

Sub Test()
  'クラスがシートのイベント処理出来るようにする。
  Set clsSheet(0) = New Class1
  Set clsSheet(0).evtSheet = Worksheets("Sheet1")
  Set clsSheet(1) = New Class1
  Set clsSheet(1).evtSheet = Worksheets("Sheet2")
End Sub

Sub TestEnd()
  Set clsSheet(0) = Nothing
  Set clsSheet(1) = Nothing
End Sub
'////////////////////////////////////

'クラスモジュール モジュール名「Class1」
Option Explicit

Private WithEvents mSheet As Worksheet

Property Set evtSheet(pSheet As Worksheet)
  Set mSheet = pSheet
End Property

Property Get evtSheet() As Worksheet
  Set evtSheet = mSheet
End Property

Private Sub mSheet_Activate()
  MsgBox mSheet.Name
End Sub
'/////////////////////////////////

>全く同じ記載なので、変数だけ与えてクラスモジュールでなんとかならないかと思って、いろいろ調べたのですが、なかなか資料がみつからないので困っています
そのものズバリはないですよ。
ただ、昔と違って今はクラスモジュールのサンプルはたくさんあります。
あったでしょう?
その概念を理解に勤めましょう。
2 hits

【40504】シートモジュールのクラス化 ハナ 06/7/15(土) 9:11 質問
【40505】Re:シートモジュールのクラス化 やっちん 06/7/15(土) 9:53 発言
【40507】Re:シートモジュールのクラス化 neptune 06/7/15(土) 10:48 回答
【40567】Re:シートモジュールのクラス化 ハナ 06/7/18(火) 11:23 お礼
【40516】Re:シートモジュールのクラス化 asahi 06/7/15(土) 14:12 回答
【40518】Re:シートモジュールのクラス化 Kein 06/7/15(土) 15:35 回答

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