プロが教えるわが家の防犯対策術!

はじめまして
2003 XP
UserFormにCommandbuttonが12個あります。

Private Sub CommandButton1_Click()
If Me.MultiPage1.Value = 0 Then
TextBox3.Value = TextBox3 & "1"
Else: TextBox1.Value = TextBox1 & "1"
End If
End Sub

Private Sub CommandButton2_Click()
If Me.MultiPage1.Value = 0 Then
TextBox3.Value = TextBox3 & "2"
Else: TextBox1.Value = TextBox1 & "2"
End If
End Sub

Private Sub CommandButton3_Click()
If Me.MultiPage1.Value = 0 Then
TextBox3.Value = TextBox3 & "3"
Else: TextBox1.Value = TextBox1 & "3"
End If
End Sub

Private Sub CommandButton4_Click()
If Me.MultiPage1.Value = 0 Then
TextBox3.Value = TextBox3 & "4"
Else: TextBox1.Value = TextBox1 & "4"
End If
End Sub

Private Sub CommandButton5_Click()
If Me.MultiPage1.Value = 0 Then
TextBox3.Value = TextBox3 & "5"
Else: TextBox1.Value = TextBox1 & "5"
End If
End Sub

Private Sub CommandButton6_Click()
If Me.MultiPage1.Value = 0 Then
TextBox3.Value = TextBox3 & "6"
Else: TextBox1.Value = TextBox1 & "6"
End If
End Sub

Private Sub CommandButton7_Click()
If Me.MultiPage1.Value = 0 Then
TextBox3.Value = TextBox3 & "7"
Else: TextBox1.Value = TextBox1 & "7"
End If
End Sub

Private Sub CommandButton8_Click()
If Me.MultiPage1.Value = 0 Then
TextBox3.Value = TextBox3 & "8"
Else: TextBox1.Value = TextBox1 & "8"
End If
End Sub

Private Sub CommandButton9_Click()
If Me.MultiPage1.Value = 0 Then
TextBox3.Value = TextBox3 & "9"
Else: TextBox1.Value = TextBox1 & "9"
End If
End Sub

Private Sub CommandButton10_Click()
If Me.MultiPage1.Value = 0 Then
TextBox3.Value = TextBox3 & "0"
Else: TextBox1.Value = TextBox1 & "0"
End If
End Sub

Private Sub CommandButton11_Click()
If Me.MultiPage1.Value = 0 Then
TextBox3.Value = TextBox3 & "00"
Else: TextBox1.Value = TextBox1 & "00"
End If
End Sub

Private Sub CommandButton12_Click()
If Me.MultiPage1.Value = 0 Then
TextBox3.Value = TextBox3 & "000"
Else: TextBox1.Value = TextBox1 & "000"
End If
End Sub

 これをもっとスマートに出来ないでしょうか?
宜しくお願いします。

A 回答 (3件)

VBAに慣れているならクラスを作成してやるでしょうが、


CommandButtonが12個程度ならあっさりとサブルーチンをコールした方がいいでしょう。


'=●全てのボタンから呼ばれるサブルーチン===
'= UserFormのモジュールに作成しておく ===
'= CommandButton1_Clickイベントの前でいいでしょう==

Private Sub mySub(Moji)
  If Me.MultiPage1.Value = 0 Then
    TextBox3.Value = TextBox3 & Moji
  Else
    TextBox1.Value = TextBox1 & Moji
  End If
End Sub


'------------------------------------------------------
Private Sub CommandButton1_Click()
  Call mySub("1")
End Sub

'------------------------------------------------------
Private Sub CommandButton2_Click()
  Call mySub("2")
End Sub
'------------------------------------------------------

以下同様に、&する値を引数にmySubをCallしてやる。

以上。
 
    • good
    • 0
この回答へのお礼

参考書等でサブルーチンの使い方を
呼んでも中々、理解出来ませんでしたが
このように使うのですね!
勉強になりました。
本当に有り難うございました。

お礼日時:2008/11/22 12:21

ここが定番でしょうが、最後の方はオブジェクト指向が分かっていないと歯が立ちそうもない感じです(深く読んでないですが)


http://www.h3.dion.ne.jp/~sakatsu/Breakthrough_P …
参考書はこちら
かんたんプログラミング Excel200X VBA コントロール・関数編 (単行本) 大村 あつし (著)
Excel200X VBAにおけるコントロール配列という記事があります。
UserFormを駆使したければ、この本は買って損はありません。
    • good
    • 0
この回答へのお礼

URL 有り難うございます。
参考にします。

お礼日時:2008/11/22 12:34

クラスモジュールを利用して疑似コントロール配列を作るしかありません。



http://wood-built21.ddo.jp/MlogOG/2008/04/vba.html
http://wood-built21.ddo.jp/MlogOG/2008/04/vba-1. …
    • good
    • 0
この回答へのお礼

クラスは、今の私のレベルでは、
敷居が高いですが、提示して頂いた
URLを参考に勉強したいと思います。
有り難うございました。

お礼日時:2008/11/22 12:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!