Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

formattazione condizionale VBA maschera continua

696 views
Skip to first unread message

vito.fa...@istitutoalberghieroabano.net

unread,
Feb 28, 2019, 5:11:03 PM2/28/19
to
ciao,

ho una sottomaschera in modalità maschere continue

ho due controlli

fornitore --- spuntato (campo sì/no)

il controllo fornitore ha il tag = colora

se il controllo spuntato è uguale a false vorrei cambiare lo sfondo del controllo fornitore.



ho scritto questo codice ma non funziona

Private Sub Form_Open(Cancel As Integer)

Dim ctl As Control

For Each ctl In Me.Controls

If ctl.Tag = "colora" Then

If Me.spuntato = False Then

ctl.BackColor = vbRed

Else
ctl.BackColor = vbWhite
End If
End If

Next ctl
End Sub

grazie per l'eventuale aiuto
Message has been deleted

@Alex

unread,
Mar 1, 2019, 3:29:46 AM3/1/19
to
Questa non è Formattazione Condizionale..., quel codice funziona in Maschera SINGOLA... e forse nemmmeno tanto perchè andrebbe generato su CURRENT e non su OPEN.

Devi selezionare un controllo alla volta e da Menù selezionare la Formattazione condizionale... da li selezioni Espressione Uguale e, controllo.Tag="xxx" e definirne poi le proprietà.

Alternativa se proprio lo devi fare da codice... ma non credo abbia senso... è questa:


Dim ctl As Access.Control
Dim mFC As Access.FormatCondition

For each Ctl in Me.Controls
Select Case Ctl.ControlType
Case acTextBox,acComboBox
ctl.FormatConditions.Delete
Set mFC = ctl.FormatConditions.Add(acExpression, acEqual, "[" & ctl.Name & ".Tag]=" "xxxx")
mFC.ForeColor = vbRed
mFC.BackColor = vbWhite
mFC.FontBold = True
End Select
Next

Ovviamente non è provato ma la logica è questa...

@Alex

vito.fa...@istitutoalberghieroabano.net

unread,
Mar 1, 2019, 1:37:24 PM3/1/19
to
si certo,
non capivo come funzionava la formattazione condizionale del controllo, quella messa a disposizione dall'interfaccia di access per intenderci.
Io capivo che la formattazione condizionale potesse accettare solo la condizione sullo stesso controllo, poi ho scoperto che:

l'espressione è .......[formattazione] = true

permette di formattare un controllo in base al valore di un altro controllo.

perfetto!

per quanto riguarta il tuo codice che mi piacerebbe anche vederlo funzionare

quando lo lancio ricevo l'errore:

proprietà o metodo non supportati dall'oggetto

l'errore è sulla linea

Set mFC = ctl.FormatConditions.Add(acExpression, acEqual, "[" & ctl.Name & ".Tag]=" "xxxx")

il codice mio è questo:
Dim ctl As Access.Control
Dim mFC As Access.FormatCondition

For Each ctl In Me.Controls
Select Case ctl.ControlType
Case acTextBox, acComboBox
ctl.FormatConditions.Delete
Set mFC = ctl.FormatConditions.Add(acExpression, acEqual, "[" & ctl.formattazione & ".Tag]= 'colora'")
mFC.ForeColor = vbRed
mFC.BackColor = vbWhite
mFC.FontBold = True
End Select
Next

grazie Alessandro
0 new messages