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

Forumthread: VBA Eigenschaft aus Zelle auslesen

VBA Eigenschaft aus Zelle auslesen
23.03.2019 17:13:26
Kailash
Moin!
Ein immer wiederkehrendes Problem:
Ich möchte eine VBA Eigenschaft (z.B. xlpastevalues, xlpasteformats, xlpasteall) aus einer Zelle auslesen und dann an eine Variable übergeben und dann als Eigenschaft bei der Methode verweden.
Geht aber nicht. Wie macht man sowas?
Hier ein Beispiel was ich machen möchte (nicht nur fürs kopieren, ich brauche es auch für verschiedene andere Sachen)

Sub Kopieren()
Dim PasteOption As Variant
With Baltt1
PasteOption = .Range("H9").Value 'in der Zelle steht: "xlPasteValues"
.Range("G9").Copy
.Range("G11").PasteSpecial Paste:=PasteOption
End With
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Eigenschaft aus Zelle auslesen
23.03.2019 17:53:57
onur
"xlPasteValues" ist der NAME einer Enumeration (von XlPasteType), so etwas wie eine Variable, die eine Konstante enthält.
xlPasteValues steht z.B. für -4163.
Du jedoch versuchst den Namen der Konstante als String zu übergeben, statt den Wert -4163.
Du solltest eine 2. Zelle benutzen, wo auch die Zahl ausgelesen werden kann.
Anzeige
Danke!
23.03.2019 18:09:57
Kailash
Daaanke!
Da hast du mir sehr weitergeholfen!
Mit der Zahl funktioniert das. Grosse Klasse!
Alles Gute!
kailash
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA Eigenschaft aus Zelle auslesen


Schritt-für-Schritt-Anleitung

Um eine VBA Eigenschaft aus einer Zelle auszulesen, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne Excel und gehe zum Visual Basic for Applications (VBA) Editor. Dies kannst du mit Alt + F11 tun.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (dein Dokument)" und wähle "Einfügen" > "Modul".

  3. Füge den folgenden Code ein:

    Sub Kopieren()
        Dim PasteOption As Variant
        With Worksheets("Blatt1")
            PasteOption = .Range("H9").Value ' Hier steht der Name der Enumeration
            .Range("G9").Copy
            .Range("G11").PasteSpecial Paste:=PasteOption
        End With
    End Sub
  4. Setze die Werte in den Zellen:

    • In Zelle H9 schreibe den Namen der Paste-Option (z.B. "xlPasteValues").
    • In Zelle G9 schreibe den Inhalt, den du kopieren möchtest.
  5. Führe das Makro aus: Gehe zurück zur Excel-Oberfläche, drücke Alt + F8, wähle Kopieren aus und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Fehler: "Typeninkonsistenz" oder "Typ nicht definiert".

    • Lösung: Stelle sicher, dass der Wert in Zelle H9 genau mit dem entsprechenden Namen der Enumeration übereinstimmt, wie "xlPasteValues".
  • Fehler: Das Makro kopiert nicht richtig.

    • Lösung: Überprüfe, ob die Zellen G9 und G11 korrekt definiert sind und dass die Zielzelle nicht geschützt ist.

Alternative Methoden

Wenn du die VBA Eigenschaft aus einer Zelle auslesen möchtest, ohne eine Enumeration zu verwenden, kannst du auch den direkten Bezug zu einer Zahl herstellen. Zum Beispiel:

Sub KopierenAlternativ()
    Dim PasteOption As Long
    PasteOption = -4163 ' Wert für xlPasteValues
    With Worksheets("Blatt1")
        .Range("G9").Copy
        .Range("G11").PasteSpecial Paste:=PasteOption
    End With
End Sub

Das macht dein Makro weniger anfällig für Fehler, da du direkt mit dem Zahlenwert arbeitest.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du andere Eigenschaften aus Zellen auslesen kannst:

  1. Text aus Zelle auslesen:

    Dim Text As String
    Text = Worksheets("Blatt1").Range("A1").Value ' Liest den Text aus Zelle A1
  2. Datum aus Zelle auslesen:

    Dim Datum As Date
    Datum = Worksheets("Blatt1").Range("B1").Value ' Liest das Datum aus Zelle B1
  3. Format einer Zelle auslesen:

    Dim Format As String
    Format = Worksheets("Blatt1").Range("C1").NumberFormat ' Liest das Format der Zelle C1

Tipps für Profis

  • Nutze Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Verwende Fehlerbehandlungsroutinen mit On Error Resume Next, um unerwartete Fehler elegant zu handhaben.
  • Experimentiere mit der Immediate Window im VBA-Editor (Ctrl + G), um Variablenwerte während der Ausführung deines Codes zu überprüfen.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellen gleichzeitig auslesen?
Du kannst ein Array verwenden, um mehrere Zellen auszulesen und in einer Schleife über die Zellen iterieren.

2. Was ist der Unterschied zwischen .Value und .Value2?
.Value gibt den Wert in der Zelle zurück, während .Value2 eine schnellere Methode ist, die insbesondere bei Datums- und Währungsformaten nützlich ist.

3. Kann ich auch Werte aus anderen Arbeitsblättern auslesen?
Ja, du kannst auf andere Arbeitsblätter zugreifen, indem du den Namen des Arbeitsblatts in deiner Referenz angibst, z.B. Worksheets("AnderesBlatt").Range("A1").Value.

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