Excel VBA質問箱 IV

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

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


27024 / 76732 ←次へ | 前へ→

【55033】プロシージャを分けて実行したい
質問  ぺっぱー  - 08/4/11(金) 18:11 -

引用なし
パスワード
   こんにちわ。お世話になります。

ユーザーフォームのOptionButtonのイベントプロシージャを
書いているのですが、行数が長すぎてしまうため
「プロシージャが大きすぎます」とエラー文が出てしまいました。

そこで、途中までイベントを書いて
残りを標準モジュール内に書き、Callを使って呼び出そうと考えました。
ですが、標準モジュール内に書いた文章にはフォーム内で使われている
TextBoxのオブジェクト名や、フォーム内で使用している変数が載っています。

つくった物の一部分を乗せます。(はしょって書いてますが大体こんな感じです。)
オプションボタンが3つあり、それぞれクリックするとBox1に
値が入力されます。

Private Sub OpButton0_Click()
  If OpButton0 = True Then
    Box1.Value = Empty
  Else
  End If
End Sub

Private Sub OpButton1_Click()
Dim Money1 As Integer
Money1 = 500
  If OpButton1 = True Then
    Box1.Value = Money1
  Else
  End If
End Sub

Private Sub OpButton2_Click()
Dim Money2 As Integer
Money2 = 1000
  If OpButton2 = True Then
    Box1.Value = Money2
  Else
  End If
End Sub

■各ボタンがTrueになったときに、書き込む部分が多くなってしまったので、
Callを使いました。以下に書きます。

■ユーザーフォーム内↓
Private Sub OpButton0_Click()
  If OpButton0 = True Then
    Box1.Value = Empty
  Else
  End If
End Sub

Private Sub OpButton1_Click()
Dim Money1 As Integer
Money1 = 500
  If OpButton1 = True Then
    Call 収納データ1
  Else
  End If
End Sub

Private Sub OpButton2_Click()
Dim Money2 As Integer
Money2 = 1000
  If OpButton2 = True Then
    Call 収納データ2
  Else
  End If
End Sub

■標準モジュール内↓

Public Sub 収納データ1()
  Box1.Value = Money1
End Sub
Public Sub 収納データ2()
  Box1.Value = Money2
End Sub

…これだと、変数が設定されていません。とエラーが出てしまうのですが、
エラーが出ないように正しくデータを読み取らせるにはどうすれば
よいのでしょうか?

もう一度標準モジュール内で変数の設定をし直す必要があるのでしょうか?
その場合の書き方もできれば教えてほしいです。
(特にフォーム内で使用されているオブジェクトに関しての設定について)

よろしくおねがいします。
0 hits

【55033】プロシージャを分けて実行したい ぺっぱー 08/4/11(金) 18:11 質問
【55034】Re:プロシージャを分けて実行したい neptune 08/4/11(金) 18:47 回答
【55035】Re:プロシージャを分けて実行したい ichinose 08/4/11(金) 19:08 発言
【55036】大変、参考になりました! ぺっぱー 08/4/11(金) 20:34 お礼
【55037】Re:大変、参考になりました! neptune 08/4/11(金) 21:15 発言
【55039】Re:大変、参考になりました! ぺっぱー 08/4/12(土) 0:04 お礼

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