› Sviluppare funzionalita su Microsoft Office con VBA › Enigma irrisolto
-
AutoreArticoli
-
ho 3 Label collegate a spinButton
all'avvio la prima Label deve assere uguale alla combo iniziale per ora imposta fissa a 10
la seconda e la terza a "0" Zero
adesso arriva l'enigma , prendo una qualunque spinButton , il valore totale delle 3 Label deve sempre essere uguale a 10
Cioè l'impostazione iniziale della Combo
Bravo a chi riesce a risolverlo
Allegati:
You must be logged in to view attached files.Avvio. La prima label mostra 10, le altre due, zero. Diminuisco la prima label che scende a 9, quale regola abbiamo che dice quale delle due label sottostanti vengano impostate a 1 e 0 rispettivamente per raggiungere la condizione iniziale, cioe' max=10 ? Si va in ordine di apparizione? Quindi la label2 viene incrementata per raggiungere il max? Similmente, se spingo la terza spin, la terza label diventa 1 e la prima label diventa 9, ma se poi spingo il secondo spin, la prima label diventa 8 oppure la terza diventa zero e la seconda 1?
ciao
altoatesino
da quel che ho capito
la somma delle tre deve dare sempre 10
al che è semplice da fare ma lo spin deve avere uno scarto prefissato
non come ora che prende il valore da
SpinButton1 = Combo - SpinButton2
ciao
altoatesino
da quel che ho capito
la somma delle tre deve dare sempre 10
al che è semplice da fare ma lo spin deve avere uno scarto prefissato
non come ora che prende il valore da
SpinButton1 = Combo - SpinButton2
Ciao Gianfranco 10 è un valore variabile è per quello che lo prende dalla ComboBox a volte può essere 7 0 15 , quindi se il valore della ComboBox è 15 il totale delle 3 Label deve essere 15
All'avvio la prima deve avere il valore della ComboBox mentre le altre 2 devono sempre essere a zero
Avvio. La prima label mostra 10, le altre due, zero. Diminuisco la prima label che scende a 9, quale regola abbiamo che dice quale delle due label sottostanti vengano impostate a 1 e 0 rispettivamente per raggiungere la condizione iniziale, cioe' max=10 ? Si va in ordine di apparizione? Quindi la label2 viene incrementata per raggiungere il max? Similmente, se spingo la terza spin, la terza label diventa 1 e la prima label diventa 9, ma se poi spingo il secondo spin, la prima label diventa 8 oppure la terza diventa zero e la seconda 1?
Ciao Frac se diminuisci la prima aumenta la seconda
aumenti la seconda diminuisce la prima , fin quì è facile
aumenti la terza diminuisce la seconda se la senda è a 5 la prima è a 5 , la terza è a zero , aumenti la terza , diminuisce la seconda fino a zero poi inizia a diminuire la prima
Ma se la seconda è a zero rimane a zero e diminuisce la prima
e deve fare l'esatto contrario quando aumenti
A mio giudizio non si fa bisogna utilizzare solo 2 spin perchè altrimenti diventa circolare e va in blocco
Forse utilizza la condizione XOR SI può anche riuscire , ma non è così semplice
Vedi immagine se aumento la prima che la seconda è a zero , diminuisce la terza
allego il mio esempio ha le scrool al posto delle spin , ma la funzione è sempre la stessa

Allegati:
You must be logged in to view attached files.Se ho capito bene:
Public Combo As Integer, Delta2 As Integer, Delta3 As Integer Private Sub SpinButton1_SpinDown() If CInt(Label1) > 0 Then Label1 = SpinButton1 splitCombo SpinButton1, 1 End If End Sub Private Sub SpinButton1_SpinUp() If CInt(Label1) < 10 Then Label1 = SpinButton1 splitCombo SpinButton1, -1 End If End Sub Private Sub SpinButton2_SpinDown() If CInt(Label2) > 0 Then Label2 = SpinButton2 splitCombo SpinButton2, 1 End If End Sub Private Sub SpinButton2_SpinUp() If CInt(Label2) < 10 Then Label2 = SpinButton2 splitCombo SpinButton2, -1 End If End Sub Private Sub SpinButton3_SpinDown() If CInt(Label3) > 0 Then Label3 = SpinButton3 splitCombo SpinButton3, 1 End If End Sub Private Sub SpinButton3_SpinUp() If CInt(Label3) < 10 Then Label3 = SpinButton3 splitCombo SpinButton3, -1 End If End Sub Private Sub UserForm_Initialize() Combo = 10 SpinButton1.Min = 0 SpinButton2.Min = 0 SpinButton3.Min = 0 SpinButton1.Max = Combo SpinButton2.Max = Combo SpinButton3.Max = Combo SpinButton1 = Combo SpinButton2 = 0 SpinButton3 = 0 Label1 = Combo End Sub Sub splitCombo(ByVal oSpin As Object, ByVal nSpin As Integer) Dim nMax As Integer nMax = SpinButton1 + SpinButton2 + SpinButton3 Select Case oSpin.Name Case "SpinButton1" Delta2 = SpinButton2.Value + nSpin Delta3 = SpinButton3.Value + nSpin If Delta2 <= 10 And Delta2 >= 0 Then SpinButton2.Value = Delta2 Label2.Caption = Delta2 ElseIf Delta3 <= 10 And Delta3 >= 0 Then SpinButton3.Value = Delta3 Label3.Caption = Delta3 End If Case "SpinButton2" Delta2 = SpinButton1.Value + nSpin Delta3 = SpinButton3.Value + nSpin If Delta2 <= 10 And Delta2 >= 0 Then SpinButton1.Value = Delta2 Label1.Caption = Delta2 ElseIf Delta3 <= 10 And Delta3 >= 0 Then SpinButton3.Value = Delta3 Label3.Caption = Delta3 End If Case "SpinButton3" Delta2 = SpinButton2.Value + nSpin Delta3 = SpinButton1.Value + nSpin If Delta2 <= 10 And Delta2 >= 0 Then SpinButton2.Value = Delta2 Label2.Caption = Delta2 ElseIf Delta3 <= 10 And Delta3 >= 0 Then SpinButton1.Value = Delta3 Label1.Caption = Delta3 End If End Select End SubAllegati:
You must be logged in to view attached files.Dimenticavo: sostituisci le occorrenze di 10 con la variabile Combo (ovviamente tranne che in Combo = 10).
Dimenticavo: sostituisci le occorrenze di 10 con la variabile Combo (ovviamente tranne che in Combo = 10).
Ok scossa , che poi la variabile Combo è collegata alla ComboBox , quindi cambia in automatico in base al valore della ComboBox
Esempio : Combo=ComboBox1
Grazie Scossa
-
AutoreArticoli
