Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wenn Zelle in Bereich dann...

Wenn Zelle in Bereich dann...
30.01.2006 20:29:55
Dirk
Hallo Leute!
Ich habe in einer Tabelle zwei Bereiche eingefügt (Laengentoleranzen und Dickentoleranzen), bestehend aus mehreren nicht zusammen liegenden Zellen.
Des weiteren habe ich eine UserForm mit einer Multipage (2 Seiten). Gebe ich nun in einer Zelle der Tabelle einen Wert ein, dann öffnet sich diese genannte UserForm. Nach dem öffen der UserForm soll VBA erkennen, in welchem Bereich sich die aktuelle Zelle befindet. Anhand dieser Erkennung soll dann in die Page1 bzw. Page2 der Multipage gesprungen werden.
Mein Problem ist, ich weiß nicht wie ich VBA dazu bekomme, zu erkennen, in welchem Bereich sich die akutelle Zelle befindet. Den Rest könnte ich noch hin bekommen.
Vielleicht kann mir einer von Euch einen Ansatz zu dem Problem geben.
Danke im Vorraus
Gruß Dirk
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Zelle in Bereich dann...
30.01.2006 20:36:18
Josef
Hallo Dirk!
Vom Prinzip her so!
Sub test()
Dim rngFirst As Range, rngSecond As Range

Set rngFirst = Range("B5:C10")
Set rngSecond = Range("D12:E24")

If Not Intersect(ActiveCell, rngFirst) Is Nothing Then
  MsgBox "Aktive Zelle in Bereich 1!"
ElseIf Not Intersect(ActiveCell, rngSecond) Is Nothing Then
  MsgBox "Aktive Zelle in Bereich 2!"
Else
  MsgBox "Aktive Zelle ausserhalb!"
End If

End Sub


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: Wenn Zelle in Bereich dann...
30.01.2006 23:51:47
Dirk
Hallo Sepp!
Dieser Ansatz, genau richtig; so habe ich mir da gedacht. Habe das Ganze noch nach meinen Vorstellungen in das bestehende Programm eingebaut, funzt super!!
Vielen Dank Sepp.
Gruß Dirk

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zelle in Bereich erkennen und UserForm steuern


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke im Projektfenster mit der rechten Maustaste auf dein Projekt, wähle "Einfügen" und dann "Modul".
  3. Code einfügen: Kopiere den folgenden Code in das Modul:
Sub test()
    Dim rngFirst As Range, rngSecond As Range
    Set rngFirst = Range("B5:C10")
    Set rngSecond = Range("D12:E24")

    If Not Intersect(ActiveCell, rngFirst) Is Nothing Then
        MsgBox "Aktive Zelle in Bereich 1!"
    ElseIf Not Intersect(ActiveCell, rngSecond) Is Nothing Then
        MsgBox "Aktive Zelle in Bereich 2!"
    Else
        MsgBox "Aktive Zelle ausserhalb!"
    End If
End Sub
  1. UserForm erstellen: Füge eine UserForm mit einer Multipage hinzu, die zwei Seiten enthält.
  2. Ereignis hinzufügen: Gehe zurück zu deinem Arbeitsblatt, klicke mit der rechten Maustaste auf das Arbeitsblatt und wähle "Code anzeigen". Füge den folgenden Code ein, um die UserForm zu öffnen, wenn eine Zelle bearbeitet wird:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B5:C10,D12:E24")) Is Nothing Then
        UserForm1.Show
        ' Hier kannst Du Logik hinzufügen, um basierend auf der aktiven Zelle die richtige Seite auszuwählen
    End If
End Sub

Häufige Fehler und Lösungen

  • Fehler: "Aktive Zelle in Bereich 1!" wird nicht angezeigt.

    • Lösung: Stelle sicher, dass Du die Zelle in den definierten Bereichen (B5:C10 oder D12:E24) auswählst.
  • Fehler: UserForm öffnet sich nicht.

    • Lösung: Überprüfe, ob das Worksheet_Change-Ereignis korrekt implementiert ist und dass die UserForm tatsächlich existiert.

Alternative Methoden

Wenn Du keine UserForm verwenden möchtest, kannst Du auch Datenüberprüfungen oder bedingte Formatierungen nutzen, um visuelle Hinweise auf die aktive Zelle zu geben. Eine andere Möglichkeit ist, eine einfache MsgBox oder ein Label auf dem Arbeitsblatt zu verwenden, um den Status anzuzeigen.


Praktische Beispiele

Hier ist ein Beispiel, wie Du die UserForm basierend auf der aktiven Zelle steuern könntest:

Private Sub UserForm_Initialize()
    If Not Intersect(ActiveCell, Range("B5:C10")) Is Nothing Then
        Me.MultiPage1.Value = 0 ' Gehe zu Seite 1
    ElseIf Not Intersect(ActiveCell, Range("D12:E24")) Is Nothing Then
        Me.MultiPage1.Value = 1 ' Gehe zu Seite 2
    End If
End Sub

Tipps für Profis

  • Nutze Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind.
  • Verwende With-Anweisungen, um den Code übersichtlicher zu gestalten.
  • Teste deinen Code regelmäßig, um sicherzustellen, dass alles wie gewünscht funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Bereiche in VBA definieren?
Du kannst mehrere Bereiche definieren, indem Du sie mit einem Komma trennst, z.B. Range("B5:C10,D12:E24").

2. Funktioniert das auch in Excel 365?
Ja, die beschriebenen Methoden und der VBA-Code sind in Excel 365 und den meisten früheren Versionen anwendbar.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige