Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 11:16:26
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zellenbezug als Variable

Zellenbezug als Variable
01.12.2007 15:32:00
Jochen
Hallo zusammen,
ich habe folgendes Problem, ich bekomme täglich mehrere Datensätze in einer txt. datei das kann mal nur einer sein, aber auch mal 50.
Mit folgendem Makro las ich mir die Anzahl der belegten Zeilen feststellen:
Dim AnzahlZeilen As Integer
Sheets("eingabe").Activate
AnzahlZeilen = Application.WorksheetFunction.CountA(Range("A1:A1820"))
jetzt möchte ich die Variable AnzahlZeilen in die Folgenden Befehl einbauen (Hier nur einer als Beispiel), Anstatt des Ranges("A1:A1812")
Weil ich aus der txt Datei noch Leerstellen und Sonstiges entfernen muß und danach in ein Tabelle übertragen, mit einer festen Zellenangabe braucht das aber ziemlich lang, wenn nur ein Datensatz eingetragen wird.
Range("A1:A1812").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="(", FieldInfo:=Array(1, 1)
Ich hab es schon mit Cells und Variablen versucht, aber nichts hat funktioniert. Lösung mit Erklärung wäre Super, ich möchte nämlich auch ganz gern kapieren was ich mach.
Danke schon im voraus
Jochen

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zellenbezug als Variable
01.12.2007 16:07:41
Daniel
Hi
beispielsweise so

AnzahlZeilen = Application.WorksheetFunction.CountA(Range("A1:A1820"))
Range("A1:A" & Anzahlzeilen).select


oder


AnzahlZeilen = Application.WorksheetFunction.CountA(Range("A1:A1820"))
Range("A1").resize(Anzahlzeilen,1).select


oder ohne die Variable:


Range(cells(1,1), Cells(65536,1).end(xlup).select


Gruß, Daniel

Anzeige
@Daniel. Warum SELECT? o.T.
01.12.2007 16:34:32
Josef
Gruß Sepp

AW: @Daniel. Warum SELECT? o.T.
01.12.2007 16:46:37
Daniel
Hi
weil ich seine Frage beantworten und keinen generellen Excel-Grundkurs geben wollte.
Gruß, Daniel

AW: @Daniel. Warum SELECT? o.T.
01.12.2007 16:53:00
Josef
Hallo Daniel,
das hat nicht mit eiem Grundkurs zu tun. Aber nach meiner (sicher unerheblichen) Meinung, sollte man einem Anfänger vor allem beibringen, das auf Select und Activate zu 99% verzichtet werden soll/muss.
Gruß Sepp

Anzeige
AW: @Daniel. Warum SELECT? o.T.
01.12.2007 17:43:59
Daniel
Hi
ja, dem stimme ich im Prinzip schon zu, aber dann sollte man dem Anfänger auch erkären, warum und wieso und nicht nur irgendwelche Code-Brocken ohne einen Kommentar hinwerfen.
Sowas hilft dem Verständnis auch nicht viel weiter.
Vorallem, wenn der Code noch ein paar zusätzliche Neuerungen wie die WITH-klammer enthält, bei denen man davon ausgehen muß, daß sie dem Fragesteller u.U. nicht bekannt sind, wären ein paar erklärende Worte nicht schlecht.
Gruß, Daniel
Gruß, Daniel

Anzeige
AW: @Daniel. Warum SELECT? o.T.
01.12.2007 18:14:00
Jochen
Also erst mal ein dickes Danke an euch beide, mein Problem konnte ich lösen.
Aus eurem hin und her hat sich jetzt aber eine weitere Frage ergeben. Warum kein Select und Activate ?
Könnt Ihr ein Buch für Anfänger empfehlen, eins in dem die Befehle wirklich erklärt werden ....
Gruß Jochen

Anzeige
AW: @Daniel. Warum SELECT? o.T.
01.12.2007 18:23:20
Daniel
Hi
bei büchern weiß ich nicht bescheid, aber diese Seite ist recht informativ:
http://www.online-excel.de/excel/singsel_vba.php?f=78
oder wenn du einfach hier auf den LINK "Offline-Excel/VBA-Buch" klickst, kommst du auf ne WIKI-BOOKS-Seite zum Thema.
Gruß, Daniel

Anzeige
AW: @Daniel. Warum SELECT? o.T.
01.12.2007 18:30:22
Jens
Hallo Jochen
Select und Activate sollte man meiden, da diese Befehle den Code unübersichtlich machen und fast immer überflüssig sind. Ein Beispiel:
-leere Tabelle öffnen
-in Zelle B2 "Test" schreiben und
-Zelle B2 mit blauem Hintergrund formatieren.
Der Makrorecorder zeichnet folgendes auf:

Sub Makro1()
Range("B2").Select
ActiveCell.FormulaR1C1 = "12345"
Range("B2").Select
With Selection.Interior
.ColorIndex = 41
.Pattern = xlSolid
End With
End Sub


Kürzer sieht das dann so aus:


Sub Makro1()
With Range("B2")
.Value = 12345
.Interior.ColorIndex = 41
End With
End Sub


Mit dem Buch kann ich Dir allerdings nicht weiterhelfen.
Meiner Meinung nach macht "learning by doing" sowieso am meisten Spaß.
Und natürlich immer fleißig in diesem Forum (und anderen) vorbeischauen und sich nicht scheuen, zu fragen.
Gruß aus dem Sauerland
Jens

Anzeige
AW: Zellenbezug als Variable
01.12.2007 16:33:00
Josef
Hallo Jochen,
With Sheets("eingabe")
    
    .Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row).TextToColumns _
        Destination:=.Range("A1"), _
        DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, _
        Tab:=False, _
        Semicolon:=False, _
        Comma:=False, _
        Space:=False, _
        Other:=True, _
        OtherChar:="(", _
        FieldInfo:=Array(1, 1)
End With

Gruß Sepp

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zellenbezug als Variable in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel VBA einen Zellenbezug als Variable zu verwenden, folge diesen Schritten:

  1. Zähle die belegten Zeilen: Beginne mit dem Zählen der belegten Zeilen in deinem gewünschten Bereich. Hier ist ein Beispiel, wie du das machen kannst:

    Dim AnzahlZeilen As Integer
    Sheets("eingabe").Activate
    AnzahlZeilen = Application.WorksheetFunction.CountA(Range("A1:A1820"))
  2. Verwende die Variable in deinem Code: Anstatt einen festen Bereich anzugeben, kannst du die Variable AnzahlZeilen verwenden, um den Bereich dynamisch zu gestalten:

    Range("A1:A" & AnzahlZeilen).Select
  3. Verwende die Resize-Methode: Eine alternative Möglichkeit ist die Verwendung der Resize-Methode, um den Bereich anzupassen:

    Range("A1").Resize(AnzahlZeilen, 1).Select
  4. Vermeide Select und Activate: Um deinen Code effizienter zu gestalten, solltest du die Verwendung von Select und Activate vermeiden. Stattdessen kannst du direkt auf die Zelle zugreifen.


Häufige Fehler und Lösungen

  • Fehler: „Typenkonflikt“: Dieser Fehler kann auftreten, wenn du versuchst, eine nicht numerische Variable in AnzahlZeilen zu speichern. Stelle sicher, dass der Bereich, den du zählst, nur numerische Werte enthält.

  • Lösung: Verwende Long statt Integer: Ändere die Deklaration von AnzahlZeilen zu Long, um sicherzustellen, dass du auch große Werte speichern kannst:

    Dim AnzahlZeilen As Long

Alternative Methoden

Wenn du einen Zellenbezug variabel gestalten möchtest, gibt es verschiedene Ansätze:

  1. Verwendung des Cells-Objekts: Du kannst das Cells-Objekt nutzen, um den Bezug dynamisch zu gestalten:

    Range(Cells(1, 1), Cells(AnzahlZeilen, 1)).Select
  2. Direkte Zuweisung ohne Select: Wenn du beispielsweise Text in eine Zelle schreiben möchtest, kannst du das so tun:

    With Sheets("eingabe")
       .Range("A1:A" & AnzahlZeilen).Value = "Dein Text"
    End With

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du excel vba zelle auslesen und in variable schreiben kannst:

  • Text in Zellen schreiben:

    Dim i As Long
    For i = 1 To AnzahlZeilen
       Cells(i, 2).Value = "Datensatz " & i
    Next i
  • Daten aus einer Textdatei importieren:

    Du kannst die TextToColumns-Methode verwenden, um Daten effizient zu importieren:

    With Sheets("eingabe")
       .Range("A1:A" & AnzahlZeilen).TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited
    End With

Tipps für Profis

  • Vermeide redundante Berechnungen: Wenn du oft auf die Anzahl der Zeilen zugreifen musst, speichere das Ergebnis in einer Variablen und verwende diese später.

  • Nutze With-Anweisungen: Um den Code übersichtlicher zu gestalten, nutze die With-Anweisung, um mehrfach auf dasselbe Objekt zuzugreifen.

  • Kommentiere deinen Code: Füge Kommentare hinzu, um die Logik hinter deinem Code zu erklären, besonders wenn du mit Variablen arbeitest.


FAQ: Häufige Fragen

1. Warum sollte ich Select und Activate vermeiden?
Diese Befehle machen den Code unübersichtlich und sind oft überflüssig. Es ist besser, direkt auf die Zellen zuzugreifen.

2. Wie kann ich sicherstellen, dass meine Variable die richtige Anzahl an Zeilen zählt?
Stelle sicher, dass der Bereich, den du zählst, korrekt definiert ist und keine leeren Zellen enthält, die fälschlicherweise gezählt werden könnten.

3. Kann ich auch andere Datenformate als Text importieren?
Ja, du kannst verschiedene DataType-Optionen in der TextToColumns-Methode verwenden, je nach dem, welches Format deine Daten haben.

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