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

Zelladresse aus einer Variable verwenden

Forumthread: Zelladresse aus einer Variable verwenden

Zelladresse aus einer Variable verwenden
12.02.2020 16:41:00
Christoph
Hallo Zusammen,
ich komme mit einem Problem nicht weiter und hoffe ihr könnt mir helfen.
Ich habe eine Tabelle mit drei Spalten. in der ersten sind deutsche Wörter, in der zweiten die englische Übersetzung davon und in der dritten die Adresse in Form von: Tabelle1.Range("P20").Value. Tabellenblätter gibt es 15 Stück und auf jedem gibt es Wörter die zu übersetzen sind.
Ich dachte jetzt, ich kann mit einer Schleife jede Zeile durchgehen, mir die Adresse auf eine Variable schreiben und im nächsten Schritt, trägt er mir das deutsche, oder englische Wort in die richtige Zelle.
Leider passiert genau das nicht... :-(
Anbei mein Code.
Dim Adstr As Range
Call INI 'hier wird geschaut, ob deutsch, oder englisch benötigt wird. (Variable Alsp ist dann Zeile 1 oder 2)
For z = 2 To 15
Set Adstr = Tabelle98.Range("E2").Value 'Auf dem Blatt stehen die Übersetzungen
Adstr = Tabelle98.Cells(z, Alsp).Value
Next z
Für jede Hilfe bin ich dankbar, auch für Anregungen solch eine Übersetzung anders zu realisieren.
Danke im Voraus und viele Grüße
Christoph
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelladresse aus einer Variable verwenden
12.02.2020 17:07:17
ChrisL
Hi Christoph
Ich würde es umgekehrt machen. Auf den 15 Tabellen folgende Formeln verwenden z.B.
=WENN(Tabelle98!E2=1;Tabelle98!A1;Tabelle98!B1)
oder schöner
=INDEX(Tabelle98!A:B;1;Tabelle98!E2)
Tabelle98 entspricht dem internen CodeName. Du müsstest diesen durch Tabellennamen ersetzen.
Die Zeile 1 wäre "hart" in die Formel einzufügen und ist somit nicht dynamisch. Ist etwa gleich viel Arbeit wie eine Bezugstabelle zu pflegen.
Vorteil: Die Formel verschiebt sich mit, wenn eine Zeile gelöscht oder eingefügt wird.
Nachteil: Mit Formeln kannst du keine Textformatierungen einzelner Wörter übergeben.
Den erwähnten Vorteil erzielst du auch, wenn du den zu übersetzenden Zellen einen Namen definierst und die Namen in der Bezugstabelle Spalte C hinterlegst. Zudem kannst du einen CodeName nicht so einfach als Text-String verwenden, weshalb sinnvollerweise die Spalte C sowieso umgestellt wird.
Dim z As Long
With Tabelle98
For z = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
Range(.Cells(z, 3)) = .Cells(z, .Range("E2"))
Next z
End With
Macht die Zeilenzahl dynamisch:
.Cells(Rows.Count, 1).End(xlUp).Row
In Spalte 3 steht der definierte Name als Text-String:
.Cells(z, 3)
Spalten-Index wird aus E2 bezogen:
.Range("E2")
cu
Chris
Anzeige
AW: Zelladresse aus einer Variable verwenden
12.02.2020 17:13:44
ChrisL
Nachtrag: Fällt mir ein, dass Zelle1.Value = Zelle2.Value auch keine Formatierung übergibt :)
Mit Copy/Paste geht es
Dim z As Long
With Tabelle98
For z = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
.Cells(z, .Range("E2")).Copy Range(.Cells(z, 3))
Next z
End With

Anzeige
AW: Zelladresse aus einer Variable verwenden
13.02.2020 13:03:26
Christoph
Hallo Chri,
danke erst einmal für die Antwort.
Ich will keine Formeln auf den Tabellenblättern verwenden, da diese Vorlage von mehreren verwendet wird und ich dann nicht sicherstellen kann, ob eventuell was gelöscht wird.
Die Idee mit den Zellennamen war aber die Lösung. Die relevanten Zellen habe ich umbenannt und in die Spalte E eingetragen, den Code habe ich dann folgendermaßen angepasst:
Range(Tabelle98.Range("E" & z)) = Tabelle98.Cells(z, Alsp).Value
Jetzt geht die Schleife alle Zeilen durch und überträgt entweder die deutschen oder englischen Wörter.
Danke noch einmal und schönen Tag noch.
Christoph
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zelladresse aus einer Variable verwenden in Excel


Schritt-für-Schritt-Anleitung

  1. Initialisierung: Definiere die Variable für die Zelladresse.

    Dim Adstr As Range
  2. Bestimme, ob du die deutsche oder englische Übersetzung benötigst (z.B. durch eine vorherige Funktion, die diese Entscheidung trifft).

  3. Erstelle eine Schleife: Gehe die relevanten Zeilen in deiner Tabelle durch.

    For z = 2 To 15
  4. Setze die Zelladresse: Nutze die Range-Methode, um die Adresse basierend auf der Variable zu definieren.

    Set Adstr = Tabelle98.Range("E" & z) ' Hier wird die Adresse gesetzt
  5. Übertrage den Wert: Wechsle zwischen den deutschen und englischen Wörtern, indem du die Zelle aktualisierst.

    Adstr.Value = Tabelle98.Cells(z, Alsp).Value
  6. Schließe die Schleife ab:

    Next z

Häufige Fehler und Lösungen

  • Fehler: Zelle wird nicht aktualisiert
    Lösung: Stelle sicher, dass du die richtige Zelladresse verwendest. Überprüfe die Syntax und die Range-Referenzen.

  • Fehler: Typkonflikt bei der Zuweisung
    Lösung: Achte darauf, dass die Variablen korrekt deklariert sind und die Zellen den richtigen Datentyp enthalten.


Alternative Methoden

  • Verwendung von Formeln: Statt VBA kannst du auch Excel-Formeln verwenden, um die Übersetzungen dynamisch abzurufen:

    =INDEX(Tabelle98!A:B;1;Tabelle98!E2)
  • Zellennamen definieren: Benenne die Zellen in Tabelle98 und verwende diese Namen in deiner VBA-Logik. Dadurch wird die Zellenadressierung noch einfacher.


Praktische Beispiele

Angenommen, du hast eine Tabelle mit deutschen und englischen Wörtern. Mit folgendem Code überträgst du die Übersetzungen aus der Spalte E:

Dim z As Long
With Tabelle98
    For z = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
        .Range(.Cells(z, 3)) = .Cells(z, .Range("E2"))
    Next z
End With

Dieser Code nutzt die dynamische Zeilenanzahl, um die Übersetzungen zu verarbeiten.


Tipps für Profis

  • Namen für Zellen verwenden: Definiere Namen für häufig verwendete Zellen, um die Zelladressierung in deinen Formeln und VBA-Codes zu vereinfachen.

  • Dynamische Bereiche: Verwende End(xlUp) für dynamische Bereiche, damit dein Code auch bei Änderungen in der Tabelle funktioniert.

  • Kombination von Formeln und VBA: Nutze die Stärken von beiden: Formeln für einfache Berechnungen und VBA für komplexe Automatisierungen.


FAQ: Häufige Fragen

1. Wie kann ich eine Zelladresse als Variable in Excel nutzen?
Du kannst die Zelladresse in einer Variable speichern, indem du die Range-Methode verwendest: Set Adstr = Worksheets("Tabelle98").Range("E" & z).

2. Was ist der Vorteil der Zelladressierung in VBA?
Mit der Zelladressierung hast du die Flexibilität, auf verschiedene Zellen dynamisch zuzugreifen und Werte zu ändern, ohne die Formeln direkt in den Zellen zu verwenden.

3. Wie kann ich sicherstellen, dass meine Zellreferenzen korrekt sind?
Überprüfe die Referenzen auf Schreibfehler und teste deinen Code in einem kleinen Bereich, bevor du ihn auf eine große Datenmenge anwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige