Excel VBA質問箱 IV

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

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


20219 / 76736 ←次へ | 前へ→

【61939】Re:TextBoxのまとめ
発言  Hirofumi  - 09/6/13(土) 10:01 -

引用なし
パスワード
   ▼亜矢 さん:
>よろしくお願いします
>TextBoxがUserformに42個あります。
>そこでTextBoxのイベントを1ヶずつ書いていますが、まとめて
>書く方法について教えて頂きたいと思います。
>PriVate Sub TextBox1_Exit(ByVal・・・・)
>
>end sub
>
>PriVate Sub TextBox2_Exit(ByVal・・・・)
>
>end sub
>と42ヶ書いていますが、これを1つにまとめる方法です。
>この他のイベントにMouseDownとかDblclickも42ヶ書いています。
>        

Class作っても、「DblClick」、「MouseDown」のイベントは取れるけど
「Exit」のイベントは取れないから、ヤッパリ42個分書いた方が無難かな?
ただ、纏める方法では有りませんが、42個VBEで書くより早い方法としてこんなのは?

例えば、以下の様なコードが有ります

Option Explicit

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

  If Not DataCheck(TextBox1) Then
    Cancel = True
  End If
  
End Sub

Private Function DataCheck(txtBox As MSForms.TextBox) As Boolean

  If Val(txtBox.Text) <> 0 Then
    DataCheck = True
  End If
  
End Function

この「Sub TextBox1_Exit」を42個分そろえるなら
先ず
↓ここから
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

  If Not DataCheck(TextBox1) Then
    Cancel = True
  End If
  
End Sub

↑ここまでをワークシートにCopyします

次に、ワークシートでCopyされた行が選択状態に成っている右下のフィルハンドルを
下にドラッグします
そうすれば

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

  If Not DataCheck(TextBox1) Then
    Cancel = True
  End If
  
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)

  If Not DataCheck(TextBox2) Then
    Cancel = True
  End If
  
End Sub

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)

  If Not DataCheck(TextBox3) Then
    Cancel = True
  End If
  
End Sub

というコードが一遍に書けます

0 hits

【61937】TextBoxのまとめ 亜矢 09/6/13(土) 8:26 質問
【61939】Re:TextBoxのまとめ Hirofumi 09/6/13(土) 10:01 発言
【61940】Re:TextBoxのまとめ 亜矢 09/6/13(土) 11:19 質問
【61941】Re:TextBoxのまとめ かみちゃん 09/6/13(土) 11:24 発言
【61942】Re:TextBoxのまとめ 亜矢 09/6/13(土) 12:14 お礼

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