|
Domanda.
nome=Giuseppe
cognome=Uliti
versione=2000
conosco2=medio
email=Giuppysit@yahoo.it
problema=Salve ennius il mio problema è questo:
Private Sub Worksheet_Change(ByVal Target As Range)
If Sheets("mio").Range("b2").Value <= 8000 Then
pippo
Else: Exit Sub
End If
End Sub
Questo l'ho scritto nel foglio1 rinominato come "mio"
Sub pippo()
Dim a As Integer
a = Sheets("mio").Range("b2")
MsgBox _
prompt:="Lo stock delle cartelle è uguale a: " & a _
, Title:="Avviso Stock" _
, Buttons:=vbInformation
End Sub
La macro lo scritta in un modulo Questo codice prevede l'attivazione
automatica di una msgbox quando il valore di b2 è minore di 8000. Così
impostata però la msgbox si apre per la variazione di qualsiasi cella.
Domanda come faccio a far apparire la msgbox una sola volta durante il
caricamento dei dati?
grazie
Risposta.
Giuseppe, l'istruzione è giusta ed è giusto che si attivi ad ogni
cambiamento: ragiona, tu chiedi che se B2 è uguale o inferiore a 8000 allora
ecc. ecc. Quindi sia che B2 sia vuoto (=zero) o inferiore a 8000 la
condizione da verificare risulta VERA e si attiva l'istruzione di cosa fare,
e questo ad ogni cambiamento in qualsiasi cella del foglio, d'altra parte
l'hai scelto tu l'evento Change. Soluzione: o tieni impegnata la B2 con un
valore superiore a 8000, e non si attiva niente a meno che tu non inserisca
un valore inferiore, e poi resterà attiva l'istruzione, oppure ti leggi su
questo sito dal quale hai scritto, sezione vba, l'articolo "il Metodo
Intersect", dove suggerisco come superare problemini tipo il tuo, con
relative spiegazioni; bastava prima di scrivermi che tu l'avessi letto.
saluti, ennius
|