2016-03-23 14 views
1

benim userform birden SpinButtons var ve ben, bunların her biri üzerindebenzer sözdizimi nesneleri

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 

aynı kodlarını koymak istiyorum ama basitleştirilmiş bir yol birden SpinButtons üzerinde birden bloklar koyarak yerine orada ve hepsini tek bir blokta toplu olarak gruplandırdınız mı?

cevap

2

Kodun büyük bir kısmını kendi Alt yordamına koyun ve nesneyi, her düğmenin 'işleyici' altından geçirin. o kutudan çıktığında çalıştıkları sürece

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 
oldukça genelleştirilmiş olan

ve tbh şüphe ama size nasıl çalıştığını üzerinde bir fikir vermek için yeterlidir umuyoruz.

son alt, böyle daha iyi olabilir

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

üzgün deneyin sadece bir paskalya tatili vardı ve sadece geri döndüler iş, birazdan kodu deniyor olacak, teşekkürler. – xtoybox

+0

teşekkürler, kodlarınızı birbirine karıştırmayı denedim ve çalışıyor, teşekkürler. – xtoybox

1

Kodunuz bir tamsayı olarak Textbox.value atıfta O. Yapmak istediğiniz şey bence, çevirme düğmelerinin aşağıya tıklandığında 0'dan 12'ye sarılması ve belki de tıklandığında 12'de durmasıdır. SpinButtons SpinButton1, SpinButton2, SpinButton3 varsayarsak ve aynı sayıda ilgili metin kutularının vardır: artık neredeyse bir hafta boyunca herhangi bir kelime vermemek için bu

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

Hemen hemen bir hafta boyunca herhangi bir kelime vermediğim için üzgünüm, sadece bir Paskalya tatili geçirdim ve işe yeni döndüm, birazdan kodu denemeye çalışacağım, teşekkürler. – xtoybox

+0

İkiniz teşekkürler, kodlarınızı birbirine karıştırmayı denedim ve çalışıyor, teşekkürler. – xtoybox