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

Forumthread: Variablen Bereich markieren - Spalte und Zelle

Variablen Bereich markieren - Spalte und Zelle
25.10.2013 07:24:52
Albert
Guten Morgen zusammen,
ich versuch einen variablen Bereich zu markieren.
Ausprobiert hab ich schon sämtliche Codes, aber so recht scheint mir das nicht zu funktionieren.
Private Sub Drucken_Click()
Dim WkSh_Z  As Worksheet
Dim nSpalte_Z As Long
Dim nZeile_Z As Long
'Sheet anwählen
Sheets("3.Ref - 3.2.Maße - 3.3.Matrix").Select
'Worksheet für letzte Spalte definieren
Set WkSh_Z = ThisWorkbook.Worksheets("3.Ref - 3.2.Maße - 3.3.Matrix")
'Maximale Zeilenanzahl ermitteln
'Letzte Spalte suchen
nSpalte_Z = WkSh_Z.Cells(4, Columns.Count).End(xlToLeft).Column
'Letzte Zeile suchen
nZeile_Z = Range("A1000").End(xlUp).Row  'Bringt den Wert 10
nZeile_Z = Range("B1000").End(xlUp).Row 'Bringt den Wert 38
nZeile_Z = Range("C1000").End(xlUp).Row 'Bringt den Wert 1
nZeile_Z = Range("D1000").End(xlUp).Row  'Bringt den Wert 1
nZeile_Z = Range("M1000").End(xlUp).Row  'Bringt den Wert 6
Test = Range(Cells(1, 1), Cells(nZeile_Z, nSpalte_S)).Select
MsgBox nZeile_Z
End Sub
Mein letzter Code. Mich verwirrt allerdings, dass keines der gelieferten Ergebnisse zur Tabelle passen, denn der letzte Eintrag befindet sich in der Zeile 7.
Was hab ich falsch gemacht?
Danke schon mal im Voraus für eure Hilfe.
Gruß
A.

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variablen Bereich markieren - Spalte und Zelle
25.10.2013 07:41:06
hary
Moin Albert
Nutze mal die with Anweisung.
Private Sub Drucken_Click()
Dim WkSh_Z  As Worksheet
Dim nSpalte_Z As Long
Dim nZeile_Z As Long
'Sheet anwählen
Sheets("3.Ref - 3.2.Maße - 3.3.Matrix").Select
'Worksheet für letzte Spalte definieren
Set WkSh_Z = ThisWorkbook.Worksheets("3.Ref - 3.2.Maße - 3.3.Matrix")
'Maximale Zeilenanzahl ermitteln
'Letzte Spalte suchen
With WkSh_Z
nSpalte_Z = .Cells(4, .Columns.Count).End(xlToLeft).Column
'Letzte Zeile suchen
nZeile_Z = .Range("A1000").End(xlUp).Row  'Bringt den Wert 10
nZeile_Z = .Range("B1000").End(xlUp).Row 'Bringt den Wert 38
nZeile_Z = .Range("C1000").End(xlUp).Row 'Bringt den Wert 1
nZeile_Z = .Range("D1000").End(xlUp).Row  'Bringt den Wert 1
nZeile_Z = .Range("M1000").End(xlUp).Row  'Bringt den Wert 6
Test = .Range(.Cells(1, 1), .Cells(nZeile_Z, nSpalte_S)).Select
End With
MsgBox nZeile_Z
End Sub

gruss hary

Anzeige
With ist ja nicht falsch, aber ist es nötig?
25.10.2013 08:52:35
Matthias
Hallo hary
Da mit:
'Sheet anwählen
Sheets("3.Ref - 3.2.Maße - 3.3.Matrix").Select

das Blatt bereits das aktive Blatt ist kann doch auf SET und With verzichtet werden, oder?
Gruß Matthias

Variable richtig geschrieben?
25.10.2013 07:47:48
Matthias
Hallo
Einmal
nSpalte_Z = ...
dann aber:
Test = Range(Cells(1, 1), Cells(nZeile_Z, nSpalte_S)).Select
Schreibfehler?
Gruß Matthias

Anzeige
und "nZeile_Z" wird immer überschrieben!
25.10.2013 08:02:42
Matthias
Hallo
Was macht das denn für einen Sinn?

nZeile_Z = Range("A1000").End(xlUp).Row  'Bringt den Wert 10
nZeile_Z = Range("B1000").End(xlUp).Row  'Bringt den Wert 38
nZeile_Z = Range("C1000").End(xlUp).Row  'Bringt den Wert 1
nZeile_Z = Range("D1000").End(xlUp).Row  'Bringt den Wert 1
nZeile_Z = Range("M1000").End(xlUp).Row  'Bringt den Wert 6
Die ersten 4 Zeilen kannst Du Dir doch sparen, Du überschreibst doch den Inhalt der Variable ständig
Gruß Matthias

Anzeige
Funktioniert
25.10.2013 08:28:32
Albert
Hallo zusammen,
danke für eure Hinweise.
Anscheinend war es doch die Kombination aus With-Block und Schreibfehler.
@Matthias: ich wollte verdeutlichen, dass die verschiedenen Spalten merkwürdige Ergebnisse bringen. Die Zeilen stehen sonst nicht so im Block.
Danke an euch, soweit funktioniert es.
Gruß und schönes Wochenende
A.

Anzeige
Tipp: benutze immer -> Option Explicit ...
25.10.2013 08:43:39
Matthias
Hallo
Option Explicit zwingt Dich Variablen zu deklarieren!
So würdest schon beim Testen merken das VBA meckert, wenn da was nicht ganz klar ist.
Das kannst Du auch in VBA unter:

  • Extras

  • Optionen

  • Register: Editor

  • Variablendeklaration erforderlich


fest einstellen.
Gruß Matthias
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Variablen Bereich in Excel VBA markieren


Schritt-für-Schritt-Anleitung

Um in Excel VBA einen variablen Bereich auszuwählen, befolgst Du die folgenden Schritte. Das Beispiel geht davon aus, dass Du bereits ein Arbeitsblatt mit Daten hast.

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf VBAProject (DeinWorkbookName), wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Private Sub Drucken_Click()
       Dim WkSh_Z As Worksheet
       Dim nSpalte_Z As Long
       Dim nZeile_Z As Long
    
       'Sheet anwählen
       Set WkSh_Z = ThisWorkbook.Worksheets("3.Ref - 3.2.Maße - 3.3.Matrix")
    
       'Maximale Zeilenanzahl ermitteln
       nSpalte_Z = WkSh_Z.Cells(4, WkSh_Z.Columns.Count).End(xlToLeft).Column
       nZeile_Z = WkSh_Z.Cells(Rows.Count, 1).End(xlUp).Row
    
       'Bereich auswählen
       WkSh_Z.Range(WkSh_Z.Cells(1, 1), WkSh_Z.Cells(nZeile_Z, nSpalte_Z)).Select
    End Sub
  4. Starte das Makro:

    • Drücke F5 oder klicke auf Run.

Dieser Code wählt den Bereich von der Zelle A1 bis zur letzten Zelle in der letzten Spalte aus, die Daten enthält.


Häufige Fehler und Lösungen

  • Fehler: nZeile_Z wird überschrieben:

    • Achte darauf, dass Du die Variable nZeile_Z nicht mehrfach überschreibst. Stattdessen kannst Du nur die letzte Zeile für die Spalte, die Du wirklich benötigst, ermitteln.
  • Falsche Spalte ausgewählt:

    • Stelle sicher, dass Du in der Zeile, in der die letzte Zelle gesucht wird, die richtige Spalte angibst. In unserem Beispiel wird die letzte Zeile für die erste Spalte (A) ermittelt.
  • Schreibfehler in Variablennamen:

    • Überprüfe, dass Du die Variablen konsistent benennst. Ein Beispiel wäre nSpalte_Z und nicht nSpalte_S.

Alternative Methoden

Eine alternative Methode für die Auswahl eines Bereichs könnte die Verwendung von With-Anweisungen sein, um den Code übersichtlicher zu gestalten. Hier ein Beispiel:

With WkSh_Z
    nSpalte_Z = .Cells(4, .Columns.Count).End(xlToLeft).Column
    nZeile_Z = .Cells(.Rows.Count, 1).End(xlUp).Row
    .Range(.Cells(1, 1), .Cells(nZeile_Z, nSpalte_Z)).Select
End With

Diese Methode hilft, den Code lesbarer zu halten und Redundanzen zu vermeiden.


Praktische Beispiele

Beispiel 1: Auswahl einer spezifischen Zelle mit einer Variable

Dim Zelle As Range
Set Zelle = WkSh_Z.Cells(2, 2) 'Wählt die Zelle B2
Zelle.Select

Beispiel 2: Dynamische Auswahl einer Zeile basierend auf einer Bedingung

Dim Zeile As Long
For Zeile = 1 To 10
    If WkSh_Z.Cells(Zeile, 1).Value = "Test" Then
        WkSh_Z.Rows(Zeile).Select
        Exit For
    End If
Next Zeile

Tipps für Profis

  • Nutze Option Explicit: Damit wird sichergestellt, dass alle Variablen deklariert werden müssen, was zu weniger Fehlern führt.

  • Verwende Debug.Print: Wenn Du debuggen möchtest, kannst Du mit Debug.Print Werte in das Direktfenster ausgeben, um zu überprüfen, ob sie korrekt sind.

  • Implementiere Fehlerbehandlung: Verwende On Error Resume Next oder On Error GoTo für eine bessere Fehlerkontrolle.


FAQ: Häufige Fragen

1. Wie kann ich einen Bereich in Excel VBA auswählen? Um einen Bereich mit einer Variable auszuwählen, kannst Du den Code verwenden, der die Range-Objekte mit den Variablen für Zeilen und Spalten kombiniert.

2. Was bedeutet With in VBA? Die With-Anweisung erlaubt es Dir, auf ein Objekt zuzugreifen, ohne es wiederholt zu benennen, was den Code kürzer und lesbarer macht.

3. Warum funktioniert mein VBA-Code nicht wie erwartet? Überprüfe Schreibfehler in Variablennamen und stelle sicher, dass Du die richtigen Blätter und Zellen ansprichst. Debugging-Tools wie Debug.Print können helfen, Probleme zu identifizieren.

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