24/07/2024 - sihsandrea ha scritto:
Andando con ordine:
All'apertura o di default la situazione è
Checkbox selezionata
Masxhera A visibile e maschera B invisibile
Procedimento:
All'apertura imposto una boolean a false, nascondi B e mostri A e mposti la check a true poi Boolean=true
nella check se boolean=true esegui il codice.
All'apertura sarà false e non esegue il codice.
Codice della check (onchange) non al click!
Se (bolean)
Maschera A visibile = (check.checked)
Maschera B visibile = not (check.checked)
Fai quello che devi fare e alla conferma (quando finisci tutto) aggiungi
Check.checked=true
Fine.
Al load avrai sempre la check a true.
Userei l'evento Transazionale BeforeUpdate(oppure click) e leggerei la proprietà Value, OnChange e Checked in Vba non esistono associati alla classe CheckBox, mentre su Current(di Form) per tener conto del Load e dello spostamento record eventuale…!
Private Sub Form_Current()
If Not Me.NewRecord Then
Me!NomeSubFormContainer.Visible = TuaCheckbox.Value ' oppure NOT(TuaCheckbox.Value)
End If
End Sub
Private Sub TuaCheckBox_Click()
Me!NomeSubFormContainer.Visible = TuaCheckbox.Value ' oppure NOT(TuaCheckbox.Value)
End Sub
' OPPURE SE IL CANCEL PUO' ESSERE UTILE
Private Sub TuaCheckBox_BeforeUpdate(Cancel As Integer)
Me!NomeSubFormContainer.Visible = TuaCheckbox.Value ' oppure NOT(TuaCheckbox.Value)
End Sub
Farei attenzione al fatto che la visibilità NON è a carico dell'oggetto Form ma dell'oggetto SubForm che spesso si confonde, l'oggetto SubForm di fatto è il Container dell'Oggetto Form…
Questo è sbagliato:
Me.Sottomaschera_tab_Epreventivospese1.Form.Visible = True
Questo è giusto:
Me.Sottomaschera_tab_Epreventivospese1.Visible = True