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