2016-03-23 12 views
1

私は私のユーザーフォーム上に複数のスピンボタンを持っていると私はそれらの一つ一つに、同じコードを置きたい、同様の構文

Me.TextBox1.Value = Me.TextBox1.Value - 1 

If Me.TextBox1.Value = 0 Then 
    Me.TextBox1.Value = 12 
End If 

If Me.TextBox1.Value < 10 Then 
    Me.TextBox1.Value = "0" & Me.TextBox1.Value 
End If 

ではなく、複数のスピンボタンの上に複数のブロックを置くよりも簡単な方法がありますそれらを1つのブロックにまとめるだけです。

答えて

2

コードの大部分を独自のSubプロシージャに入れ、各ボタンの 'handler'サブからオブジェクトを渡します。 TBHかなり一般化している

Private Sub button1_Click() 
    allSpin Me.TextBox1 
End Sub 

Private Sub button2_Click() 
    allSpin Me.TextBox2 
End Sub 

Private Sub button3_Click() 
    allSpin Me.TextBox3 
End Sub 

Sub allSpin(ByRef tb As Object) 
    With tb 
     .Value = .Value - 1 
     If .Value = 0 Then 
      .Value = 12 
     ElseIf .Value < 10 Then 
      .Value = "0" & .Value 
     End If 
    End With 
End Sub 

、それはまっすぐに箱から出して動作します場合、私は疑問だが、私はあなたにそれがどのように動作するかのアイデアを与えるのに十分であると思います。

最後のサブは、このような良いかもしれ

Sub allSpin(ByRef tb As Object) 
    With tb 
     If Int(.Value) = 1 Then 
      .Value = 12 
     Else 
      .Value = Format(Int(.Value) - 1, "00") 
     End If 
    End With 
End Sub 
+0

申し訳ありませんが試してみてください、ちょうどイースター休暇を持っていただけに戻りました作業は、ビットでコードを試しています、ありがとう。 – xtoybox

+0

2つありがとう、私はあなたのコードを一緒にmashingしようとしています、それは働いて、ありがとう。 – xtoybox

1

コードは整数としてTextbox.valueを参照すること。 あなたがしたいと思うかもしれないと思うのは、スピンボタンをクリックすると0から12までラップし、クリックすると12時に停止することです。スピンボタンがSpinButton1を、SpinButton2、SpinButton3がされていると仮定すると、同じ数の関連するテキストボックスがあります 現在はほぼ週の任意の言葉を与えていないため、この

Private Sub SpinButton1_Change() 
    SpinUpdate 
End Sub 
Private Sub SpinButton2_Change() 
    SpinUpdate 
End Sub 
Private Sub SpinButton3_Change() 
    SpinUpdate 
End Sub 
Private Sub SpinUpdate() 
Dim StrI As String 
    StrI = Right(ActiveControl.Name, 1) 
    With Me.Controls("SpinButton" & StrI) 
    If .Value = 0 Then 
     .Value = 12 
    End If 
    Me.Controls("TextBox" & StrI).Text = Format(.Value, "00") 
    End With 
End Sub 
Private Sub UserForm_Click() 
Dim i As Integer 
    For i = 1 To 3 
    With Me.Controls("SpinButton" & Format(i)) 
     .Min = 0 
     .Max = 12 
    End With 
    Next i 
End Sub 
+0

おめでとう、今週一週間ほど語られていない、ただのイースター休暇があり、ちょうど仕事に戻りました。ちょっとしたコードを試してみるよ、ありがとう。 – xtoybox

+0

2つありがとう、私はあなたのコードを一緒にマッシュしてみました、それは働いています、ありがとう。 – xtoybox