Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

VBA Abfrage

Betrifft: VBA Abfrage von: Hess
Geschrieben am: 31.10.2020 07:25:11

Guten Tag

Ich mache folgende Abfrage mir Rückmeldung, welche nur einmal erscheinen soll!



Option Explicit


Public A1OK As Boolean


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Wert As Double
If Target.Address(0, 0) = "B78" Then
    Wert = 36
    If Cells(83, 2) > Wert And Not A1OK Then
        MsgBox "Die maximale Lagerkapazität von 36 Stück wird überschritten!" & vbNewLine & " _
Bitte einmalig bestätigen!", vbInformation, "Information"
        A1OK = True
    End If
End If
End Sub


Nun möchte ich diese Abfrage aber für mehrere Zellen machen, wobei jeweils pro Abfage die Meldung nur eimal erscheinen soll. Wie muss ich das machen?

Betrifft: AW: VBA Abfrage
von: Hajo_Zi
Geschrieben am: 31.10.2020 07:33:03

    Dim RaBereich As Range                          ' Variable für Bereich
    Dim RaZelle As Range                            ' Variable für Zelle
    Set RaBereich = Range("L22:M39, O21:O26")       ' Bereich der Wirksamkeit
    ' noch mehr Bereiche
    'Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17"), _
    '    Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49"), _
    '    Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81"), _
    '    Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111"), _
    '    Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139"), _
    '    Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163"), _
    '    Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191"))
    ' Union 30 Argumente zu je 255 Zeichen
    ' ab Vesion XP braucht der Schutz nicht aufgehoben werden
    ' Formatierung bei Schutz kann über Dialog Schutz eingestellt werden
    ' Zelle die in dem Bereich liegen auf die Variable schreiben
    ' damit werden nur noch die Zellen bearbeitet die im vorgegeben Bereich liegen
    ' jede Zelladresse ist einzeln angegeben
    Set RaBereich = Intersect(RaBereich, Target)
    If Not RaBereich Is Nothing Then
        'ActiveSheet.Unprotect ("Passwort")
        For Each RaZelle In RaBereich
If Razelle > Wert And Not A1OK Then
        MsgBox "Die maximale Lagerkapazität von 36 Stück wird überschritten!" & vbNewLine & " _
Bitte einmalig bestätigen!", vbInformation, "Information"
        A1OK = True
        Exit For
    End If
         Next RaBereich
    Endif
    Set RaBereich = Nothing                         ' Variable leeren   
GrußformelHomepage

Betrifft: AW: VBA Abfrage
von: Hess
Geschrieben am: 01.11.2020 08:32:17

Besten Dank!

Beiträge aus dem Excel-Forum zum Thema "VBA Abfrage"