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