Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Zellbereich von bestimmter Zelle aus prüfen?

Forumthread: VBA Zellbereich von bestimmter Zelle aus prüfen?

VBA Zellbereich von bestimmter Zelle aus prüfen?
11.12.2017 19:13:34
bestimmter
Hallo Community,
mal wieder ein VBA Problem.
Ich möchte in einem bestimmten Zellbereich prüfen, ob eine Zelle einen bestimmten Wert bzw. Buchstaben erhält. Mein Code dazu:
For Each Cell In Range(Cells(24,16,), Cells(33,25))
If Cell.Value = "A" Then
Daraufhin soll ein bestimmter Zellbereich auf beispielsweise Buchstabe "B" geprüft werden. Und zwar alle Zellen die bis zu 3 Zellen von "A" entfernt liegen. Mein Code dazu:
If Cell.Offset(0,1) = "B" Or Cell.Offset(0,2) = "B" Or Cell.Offset(0,3) = "B" Then
Und das ganze noch mit -1,0 ; -2,0 ; -3,0 und so weiter also die komplette Range frage ich Zelle für Zelle ab was bei einer Range von x unübersichtlich und unendlich groß wird.
Meine Frage:
Gibt es für diesen Fall eine Art Range(Offset(x,y), Offfset(-x,-y)) ? Habe ein wenig rumprobiert und diverse Foren durchsucht aber leider nur ein Range(Offset) gefunden, wenn man vorher eine Range hat von der man sucht. Ich habe leider nur eine Zelle.
Danke im voraus und freundliche Grüße
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zellbereich von bestimmter Zelle aus prüfen?
11.12.2017 19:38:03
bestimmter
Was genau bezweckst du denn damit (Sinn des Ganzen)?
Vielleicht gehst du es ganz falsch an.
AW: Murx
11.12.2017 19:41:33
Phi
Christian
es ginge so:

for i = 24 to 36
for j = 16 to 25
if cells(i,j) = ?
next j
next i
Wenn man aber die Buchstaben A, B, C usw und Zahlen prüfen möchte, sollte es bessere Ansätze geben.
(Für A, B, C

if instr(1, "ABC", cells(i,j)) > 0 then

Anzeige
AW: Murx
11.12.2017 19:57:26
Christian
Hallo,
danke für den Ansatz. Allerdings komme ich mit i = 24 to 36 und j = 16 to 25 nicht weiter. Mein Problem ist nicht das Durchsuchen des Zellbereiches auf einen bestimmten Buchstaben. Sondern wenn ein bestimmter Buchstabe in diesem Zellbereich gefunden wird, soll ein neuer Zellbereich von diesem Buchstaben aus "kreiert" und nach einem anderen Buchstaben gesucht werden. Z.b. alle Zellen die bis zu 3 zellen von dem gefundenen Wert liegen.
Die Durchsuchen nach dem neuen Zellbereich bekomme ich nicht hin.
Anzeige
AW: Murx
11.12.2017 20:46:24
onur
Auch wenn du meinen 1. einfach Beitrag ignoriert hast:

Dim rng, z, s, ze, sp, cell
Set rng = Range(Cells(24, 16), Cells(33, 25))
For Each cell In rng
If cell.Value = "A" Then
ze = cell.Row: sp = cell.Column
For z = ze - 3 To ze + 3
For s = sp - 3 To sp + 3
If Cells(z, s) = "B" Then
'was auch immer
End If
Next s
Next z
End If
Next

Anzeige
AW: Murx
12.12.2017 18:53:14
Christian
Hallo,
Perfekt das ist genau wonach ich gesucht habe. Habe deinen Beitrag nicht ignoriert sondern überlesen. Ich habe einfach nur einen Zellbereich der rnd gefüllt wird. Den will ich auf Nachbarzelleninhalte prüfen.
Danke für die Lösung klappt wunderbar :)
AW: Ansatz
11.12.2017 20:22:58
Phi
ok, man muss auch den ganzen Text lesen ...
Hiere ein Ansatz, A muss 3 Zeilen/Spalten vom Rand entfernt sein:

Sub Main
dim rng as range
set rng = activesheet.usedrange.find("A", lookin:=xlvalues, lookat:=xlwhole)
'if not rng is nothing then msgbox rng.address
set r = range(rng.offset(-3,-3), rng.offset(3,3)
set r2 = r.find("B", lookin:=xlvalues, lookat:=xlwhole)
msgbox r2.address
End Sub

Anzeige
AW: VBA Zellbereich von bestimmter Zelle aus ?
11.12.2017 21:42:49
bestimmter
Hallo Christian,
meinst du bspw. so einen Range?
Sub ba()
Dim C As Range, Z As Range
Set C = Range("E10")
Set Z = C.Offset(-3, -3).Resize(7, 7)
Z.Select
End Sub
Gruß Gerd
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Zellbereich von bestimmter Zelle aus prüfen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und aktiviere den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf "VBAProject (deine Datei)" und wähle Einfügen -> Modul.
  3. Füge den Code ein:

    • Verwende den folgenden VBA-Code, um einen Zellbereich von einer bestimmten Zelle aus zu prüfen:
    Dim rng As Range, z As Long, s As Long, ze As Long, sp As Long, cell As Range
    Set rng = Range(Cells(24, 16), Cells(33, 25))
    For Each cell In rng
       If cell.Value = "A" Then
           ze = cell.Row: sp = cell.Column
           For z = ze - 3 To ze + 3
               For s = sp - 3 To sp + 3
                   If Cells(z, s) = "B" Then
                       ' Hier kann eine Aktion erfolgen
                   End If
               Next s
           Next z
       End If
    Next
  4. Führe den Code aus:

    • Schließe den VBA-Editor und kehre zu Excel zurück. Drücke ALT + F8, wähle dein Makro aus und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: "Objektvariable oder With-Blockvariable nicht festgelegt"

    • Lösung: Stelle sicher, dass der Zellbereich korrekt definiert ist und die Zellen tatsächlich Werte enthalten.
  • Fehler: "Index außerhalb des gültigen Bereichs"

    • Lösung: Überprüfe, ob die Zeilen- und Spaltenindizes innerhalb der Grenzen deines Arbeitsblatts liegen.

Alternative Methoden

  • Verwendung von Find:

    • Du kannst die Find-Methode verwenden, um gezielt nach einem Wert zu suchen und anschließend den Zellbereich dynamisch zu definieren. Hier ein Beispiel:
    Sub SucheNachA()
      Dim rng As Range
      Set rng = ActiveSheet.UsedRange.Find("A", LookIn:=xlValues, LookAt:=xlWhole)
      If Not rng Is Nothing Then
          Dim r As Range
          Set r = Range(rng.Offset(-3, -3), rng.Offset(3, 3))
          Dim r2 As Range
          Set r2 = r.Find("B", LookIn:=xlValues, LookAt:=xlWhole)
          If Not r2 Is Nothing Then
              MsgBox r2.Address
          End If
      End If
    End Sub

Praktische Beispiele

  • Beispiel 1: Prüfen, ob in einem Zellbereich von E10 eine "A" steht und "B" in den benachbarten Zellen gefunden wird:

    Sub Beispiel()
      Dim C As Range, Z As Range
      Set C = Range("E10")
      Set Z = C.Offset(-3, -3).Resize(7, 7)
      For Each cell In Z
          If cell.Value = "B" Then
              MsgBox "B gefunden in " & cell.Address
          End If
      Next cell
    End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False am Anfang deiner Subroutine, um die Performance zu verbessern, während der Code läuft.
  • Optimierung: Reduziere die Anzahl der Abfragen, indem du die Daten zuerst in ein Array lädst und dann bearbeitest.

FAQ: Häufige Fragen

1. Wie kann ich den Zellbereich dynamisch anpassen?
Du kannst die Resize-Methode verwenden, um die Größe des Zellbereichs basierend auf den gefundenen Werten anzupassen.

2. Was mache ich, wenn ich mehrere Werte prüfen möchte?
Nutze die Instr-Funktion, um zu überprüfen, ob sich ein Buchstabe in einer Zeichenkette befindet, anstatt jeden Wert einzeln abzufragen.

3. Gibt es eine Möglichkeit, mehrere Zellbereiche gleichzeitig zu durchsuchen?
Ja, du kannst mehrere For Each-Schleifen anlegen oder die Union-Methode verwenden, um mehrere Zellbereiche zu kombinieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige