Excel VBA質問箱 IV

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

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


11840 / 13646 ツリー ←次へ | 前へ→

【13808】モジュール 年寄り 04/5/14(金) 9:25 質問[未読]
【13810】Re:モジュール Asaki 04/5/14(金) 9:44 回答[未読]
【13811】Re:モジュール IROC 04/5/14(金) 9:50 回答[未読]
【13812】Re:モジュール IROC 04/5/14(金) 9:51 回答[未読]
【13813】Re:モジュール 年寄り 04/5/14(金) 11:18 質問[未読]
【13814】Re:モジュール Asaki 04/5/14(金) 11:25 回答[未読]
【13815】Re:モジュール 年寄り 04/5/14(金) 11:36 質問[未読]
【13818】Re:モジュール ichinose 04/5/14(金) 11:56 発言[未読]
【13816】Re:モジュール IROC 04/5/14(金) 11:39 回答[未読]
【13817】Re:モジュール Jaka 04/5/14(金) 11:45 回答[未読]
【13819】皆さん有難う 年寄り 04/5/14(金) 12:41 お礼[未読]

【13808】モジュール
質問  年寄り  - 04/5/14(金) 9:25 -

引用なし
パスワード
   ガーン!目の前に大きな壁が立ちはだかった。

ユーザーフォーム上のコントロールをクッリクした時に発生するイベントモジュールから、シートに記述されているサブルーチンを読み出せないことに気がついた。モジュール1に記述されているマクロは読み出せる。

Book1-ThisWorkbook(コード) にはGeneralとThisWorkbookがある。
Book1-Sheet1(コード) にはGeneralとWorksheetがある。
Book1-Module1(コード) にはGeneralがある。
Book1-Class1(コード) にはGeneralとClassがある。
Book1-UserForm1(コード) にはGeneralとUserFormとそこに置かれたコントロールがある。

これらの構造や関連についてやさしく解説されているサイトを希望します。

【13810】Re:モジュール
回答  Asaki  - 04/5/14(金) 9:44 -

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

スコープ(適用範囲) についてご研究ください。
Private, Public ...

【13811】Re:モジュール
回答  IROC  - 04/5/14(金) 9:50 -

引用なし
パスワード
   呼べますよ。

[UF]
Private Sub CommandButton1_Click()
 Call Sheet1.test
End Sub

[sheet1]
Sub test()
 MsgBox "sh1.test"
End Sub


*私は汎用のプロシージャは、標準モジュールに書きます。


「参考」
http://www.geocities.jp/vbaxl/

【13812】Re:モジュール
回答  IROC  - 04/5/14(金) 9:51 -

引用なし
パスワード
   ここもお薦めです。

http://homepage1.nifty.com/CavalierLab/lab/vb/index.html

【13813】Re:モジュール
質問  年寄り  - 04/5/14(金) 11:18 -

引用なし
パスワード
   ▼IROC さん:

>[UF]
>Private Sub CommandButton1_Click()
> Call Sheet1.test
  MsgBox MyData
>End Sub
>
>[sheet1]
>Sub test()
> MsgBox "sh1.test"
 MyData=9999
>End Sub
>

両方の間で変数MyDataを共通にするにはどうしますか?

【13814】Re:モジュール
回答  Asaki  - 04/5/14(金) 11:25 -

引用なし
パスワード
   一般には↓これです。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=13779;id=excel

【13815】Re:モジュール
質問  年寄り  - 04/5/14(金) 11:36 -

引用なし
パスワード
   どこのモジュールに

Public MyData

を宣言すれば、シートとユーザーフォームの間で変数を共通にできますか?

【13816】Re:モジュール
回答  IROC  - 04/5/14(金) 11:39 -

引用なし
パスワード
   引数の場合。

[UF]
Private Sub CommandButton1_Click()
  Call Sheet1.test("9999")
End Sub

[sheet1]
Sub test(ByVal myStr As String)
  MsgBox myStr
End Sub


グローバル変数の場合。

[UF]
Private Sub CommandButton1_Click()
  myData = "9999"
  Call Sheet1.test
End Sub

[sheet1]
Sub test()
  MsgBox myData
End Sub

[std module]
Public myData As String

【13817】Re:モジュール
回答  Jaka  - 04/5/14(金) 11:45 -

引用なし
パスワード
   >両方の間で変数MyDataを共通にするにはどうしますか?

標準モジュールに
Public MyData

【13818】Re:モジュール
発言  ichinose  - 04/5/14(金) 11:56 -

引用なし
パスワード
   ▼年寄り さん、皆さん、こんにちは。

>どこのモジュールに
>
>Public MyData
>
>を宣言すれば、シートとユーザーフォームの間で変数を共通にできますか?

もし、MyDataという変数が対象のシートに密接に関わっている変数であるならば、

Sheet1のモジュールには、

Public MyData as string

として、

Userfromモジュールで例えばコマンドボタンクリックイベントプロシジャーにて、

Private Sub CommandButton1_Click()
 msgbox Sheet1.MyData
End Sub

とプロシジャー呼び出すときと同様な形式で参照できます。

これは、Sheet1というオブジォクトにMyDataというプロパティを独自に
追加した事になります。
(実際には、私はWorksheets("Sheet1").MyDataと記述する事が多いですが)

こう考えると、「オブジェクトモジュールに変数をPublicで記述すると独自プロパティを
作成する事になり、Publicプロシジャーを記述すると、独自メソッドを作成することになる」という事になりませんか?

このあたりを理解されてくると、おもしろくなってくると思いますが・・・。

【13819】皆さん有難う
お礼  年寄り  - 04/5/14(金) 12:41 -

引用なし
パスワード
   たくさんの方にお世話になりました。
ichinoseさんの指摘で壁の先が見えてきそうです。

今取り組み中の、プログラム上の問題は解決しました。
私がまだ良く理解していないのは、もう少し時間を必要とするのでしょう。

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