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

Forumthread: VBA Bereich abfragen

VBA Bereich abfragen
27.10.2007 18:17:00
harald
Schönen Samstag Abend
Ich möchte einen Bereich mit VBA untersuchen ob in irgend einer Zelle ein Wert vorhanden ist. Leider klappt das mit meinen VBA Kenntnissen noch nicht und darum die Bitte an euch wie das am besten gelöst wird.
Um die Bedingung zu erfüllen reicht es das in irgend einer Zelle in diesem Bereich ein Wert steht.
Der Bereich den ich überprüfen möchte : Range(Cells(11, 12), Cells(21, 12)) .
Danke schon im voraus
Harald

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Bereich abfragen
27.10.2007 18:26:00
Hajo_Zi
Hallo Harald,
benutze den Befehl Find

AW: VBA Bereich abfragen
27.10.2007 18:36:00
Matthias
Hallo Harald
Hier ein Beispiel:

Sub ml()
Dim c As Variant
For Each c In Range("L11:L21")
If c.Value  "" Then MsgBox ("mind. eine Zelle ist nicht leer!"): Exit Sub
Next
MsgBox "alle Zellen leer!"
End Sub


Userbild

Anzeige
@ Harald. Ohne Schleife.
27.10.2007 18:41:41
Josef
Hallo Harald,
das sollte man ohne Schleife lösen.
If Application.CountA(Range("L11:L21")) > 0 Then
    MsgBox "mind. eine Zelle ist nicht leer!"
End If

Gruß Sepp

Anzeige
Sollte @Matthias lauten! ;-) o.T.
27.10.2007 18:43:12
Josef
Gruß Sepp

Danke, aber warum gibts CountA nicht in der Hilfe?
27.10.2007 19:13:01
Matthias
Hallo Sepp
Danke
für den Hinweis, aber warum finde ich CountA nicht in der Hilfe?
Liegt es an meiner Version XL2000 ?
Userbild

Anzeige
AW: Danke, aber warum gibts CountA nicht in der Hilfe?
27.10.2007 19:19:00
Josef
Hallo Matthias,
die Worksheetfunctions sind ein wenig mager beschrieben.
Schau mal unter "Liste der verfügbaren Tabellenfunktionen" in der OH.
Gruß Sepp

Danke, werd ich machen ... oT
27.10.2007 19:22:39
Matthias

AW: VBA Bereich abfragen
27.10.2007 18:41:16
Original
Hi,

Sub t()
If Application.CountA(Range(Cells(11, 12), Cells(21, 12))) > 0 Then
MsgBox "Was da!"
End If
End Sub


Anzeige
Danke für die schnelle Hilfe und
27.10.2007 18:44:16
harald
die guten Tipps.
Harald
;
Anzeige

Infobox / Tutorial

VBA Bereich abfragen in Excel


Schritt-für-Schritt-Anleitung

Um einen Bereich in Excel mit VBA abzufragen und zu ermitteln, ob mindestens eine Zelle einen Wert enthält, kannst Du die folgenden Schritte befolgen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Sub CheckRange()
       If Application.CountA(Range("L11:L21")) > 0 Then
           MsgBox "Mindestens eine Zelle ist nicht leer!"
       Else
           MsgBox "Alle Zellen sind leer!"
       End If
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, indem Du ALT + F8 drückst, das Makro CheckRange auswählst und auf Ausführen klickst.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004"

    • Lösung: Überprüfe, ob der Bereich korrekt definiert ist und die Zellen existieren.
  • Fehler: "MsgBox zeigt keine Nachricht"

    • Lösung: Stelle sicher, dass das Makro korrekt ausgeführt wird und die Zellen im angegebenen Bereich tatsächlich Werte enthalten.

Alternative Methoden

Es gibt verschiedene Möglichkeiten, einen Bereich in Excel zu prüfen, ohne eine Schleife zu verwenden:

  • Verwendung von Find: Du kannst den Find-Befehl verwenden, um nach einem Wert zu suchen.

    Sub FindValue()
      Dim FoundCell As Range
      Set FoundCell = Range("L11:L21").Find(What:="*", LookIn:=xlValues)
      If Not FoundCell Is Nothing Then
          MsgBox "Mindestens eine Zelle ist nicht leer!"
      Else
          MsgBox "Alle Zellen sind leer!"
      End If
    End Sub

Praktische Beispiele

Hier sind einige Beispiele, wie Du den VBA-Code anpassen kannst:

  1. Überprüfung eines anderen Bereichs:

    Sub CheckOtherRange()
       If Application.CountA(Range("A1:A10")) > 0 Then
           MsgBox "Mindestens eine Zelle in A1:A10 ist nicht leer!"
       End If
    End Sub
  2. Benachrichtigung bei leerem Bereich:

    Sub NotifyIfEmpty()
       If Application.CountA(Range("C1:C20")) = 0 Then
           MsgBox "Alle Zellen in C1:C20 sind leer!"
       End If
    End Sub

Tipps für Profis

  • Nutze Kommentare in Deinem VBA-Code, um die Logik zu erklären. Das erleichtert das Verständnis bei späteren Änderungen.
  • Teste Deinen Code in kleinen Schritten, um Fehler schneller zu identifizieren.
  • Verwende die Debug.Print-Anweisung, um Ausgaben in das Direktfenster des VBA-Editors zu schreiben. So behältst Du den Überblick über Variablenwerte und Programmfluss.

FAQ: Häufige Fragen

1. Warum funktioniert CountA nicht in meiner Excel-Version? Es könnte sein, dass Du eine ältere Version von Excel verwendest, in der diese Funktion nicht gut dokumentiert ist. Überprüfe, ob Du die aktuellsten Updates installiert hast.

2. Wie kann ich den Bereich dynamisch anpassen? Du kannst Variablen verwenden, um den Bereich anzupassen. Zum Beispiel:

Dim startRow As Integer, endRow As Integer
startRow = 11
endRow = 21
If Application.CountA(Range(Cells(startRow, 12), Cells(endRow, 12))) > 0 Then
    MsgBox "Mindestens eine Zelle ist nicht leer!"
End If

Mit diesen Informationen kannst Du sicherstellen, dass Du einen Bereich in Excel effektiv mit VBA abfragen kannst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige