Microsoft Excel

Herbers Excel/VBA-Archiv

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

Range mehrere Bereiche setzen

Betrifft: Range mehrere Bereiche setzen von: Sascha
Geschrieben am: 24.09.2014 20:27:41

Hallo liebe Experten,

Ich steh auf dem Schlauch.
Ich möchte eine doppelte Eingabe Abfangen.
Wenn ich nur einen Bereich angebe funktioniert es tadellos.
Mehrere Bereiche zu definieren, schaffe ich nicht.
Obwohl ich den Range-Bereich im sub test() genau gleich angebe. Beim sub test() markiert es mir aber die Bereiche so wie ich es will.

Kann mir jemand helfen?

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Range("A3:A15,B3:B9,C3:C9")
If Target.Cells.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Intersect(Bereich, Target) Is Nothing Then Exit Sub
If WorksheetFunction.CountIf(Bereich, Target.Value) > 1 Then
    MsgBox ("Doppelter Eintrag nicht zulässig")
    Application.EnableEvents = False
    Target.Value = ""
End If
End Sub


Sub test()
Sheets("Hilf").Range("A3:A15,B3:B9,C3:C9").Select
End Sub
Liebe Grüsse
Sascha

  

Betrifft: AW: Range mehrere Bereiche setzen von: Beverly
Geschrieben am: 24.09.2014 22:21:05

Hi Sascha,

su kannst es so lösen:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Bereich As Range
    Set Bereich = Range("A3:A15,B3:B9,C3:C9")
    If Target.Cells.Count > 1 Then Exit Sub
    If Target.Value = "" Then Exit Sub
    If Intersect(Bereich, Target) Is Nothing Then Exit Sub
    If WorksheetFunction.CountIf(Bereich.Areas(1), Target.Value) + _
        WorksheetFunction.CountIf(Bereich.Areas(2), Target.Value) + _
        WorksheetFunction.CountIf(Bereich.Areas(3), Target.Value) > 1 Then
        MsgBox ("Doppelter Eintrag nicht zulässig")
        Application.EnableEvents = False
        Target.Value = ""
    End If
End Sub

GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Range mehrere Bereiche setzen von: Sascha
Geschrieben am: 25.09.2014 07:20:54

Hallo Beverly,

Vielen Dank für Deine Hilfe.
Leider funktioniert es so auch noch nicht.
Nun funktioniert es NUR im Bereich ("C3:C9").
Die anderen beiden Bereiche werden ignoriert...

Hast Du noch eine andere Idee?

Gruss Sascha


  

Betrifft: AW: Range mehrere Bereiche setzen von: Beverly
Geschrieben am: 25.09.2014 08:18:38

Hi Sascha,

du musst die Reaktion auf die Eingabe auch wieder einschalten (diesen generellen Fehler hatte ich in deinem Ausgangscode übersehen):

    If WorksheetFunction.CountIf(Bereich.Areas(1), Target.Value) + _
        WorksheetFunction.CountIf(Bereich.Areas(2), Target.Value) + _
        WorksheetFunction.CountIf(Bereich.Areas(3), Target.Value) > 1 Then
        MsgBox ("Doppelter Eintrag nicht zulässig")
        Application.EnableEvents = False
        Target.Value = ""
        Application.EnableEvents = True
    End If

GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Range mehrere Bereiche setzen von: Sascha
Geschrieben am: 25.09.2014 19:06:55

Hallo Beverly,

Aaaaahhh Super!

So funktioniert es Prima.
Bin froh!
Vielen Dank nochmals für Deine Hilfe!

Ganz liebe Grüsse
Sascha


  

Betrifft: AW: Range mehrere Bereiche setzen von: Sascha
Geschrieben am: 25.09.2014 07:42:25

Hallo,

Ich habe folgende Lösung gefunden.
So funktioniert es:

Private Sub Worksheet_Change(ByVal Target As Range)
If Application.WorksheetFunction.CountIf(Range("A3:A15"), Target) > 1 Then
Target = ""
MsgBox ("Doppelter Eintrag nicht zulässig")
End If
If Application.WorksheetFunction.CountIf(Range("B3:B9"), Target) > 1 Then
Target = ""
MsgBox ("Doppelter Eintrag nicht zulässig")
End If
If Application.WorksheetFunction.CountIf(Range("C3:C9"), Target) > 1 Then
Target = ""
MsgBox ("Doppelter Eintrag nicht zulässig")
End If
End Sub
Vielen Dank
Gruss Sascha


 

Beiträge aus den Excel-Beispielen zum Thema "Range mehrere Bereiche setzen"