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

Forumthread: Zelle inkl. Format in Variable speichern

Zelle inkl. Format in Variable speichern
22.06.2006 11:36:06
peteregloff
Wie kann ich den Inhalt einer Zelle (Cells()) oder Zellbereichs (Range()) in einer Variable speichern, um später im Programm den kopierten Inhalt in eine andere Zelle, einer anderen Arbeitsmappe zu kopieren - so alla Copy - Paste
Danke für Euro Unterstützung
Peter
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zelle inkl. Format in Variable speichern
22.06.2006 12:09:09
Erich
Hallo Peter,
das könntest du mit einem DataObject machen - ähnlich wie mit der Zwischenablage.
Die Zelle/den Bereich inkl. den diversen Formaten in einer Array-Variablen unterzubringen,
geht sicher auch, ist aber viel aufwändiger.
In der VBA-Hilfe gibt als nettes Beispiel zum DataObject, die Programmierung einer Drag&Drop-Operation.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Zelle inkl. Format in Variable speichern
22.06.2006 12:25:58
fcs
Hallo Peter,
solange beide Arbeitsmappen geöffnet bleiben ist es am einfachsten entsprechende Range-Objekte zu deklarieren. Für Zellwerte kann man auch Variablen verwenden, bei Bereichen müssen die Daten in entsprechende Arrays eingelesen werden.
Beispiel:

Public rngZelle As Range, rngBereich As Range, iWert1 As String, iBereich1() As String
Sub Zuweisen()
Set rngZelle = ActiveWorkbook.Sheets("Tabelle1").Range("B5")
Set rngBereich = ActiveWorkbook.Sheets("Tabelle1").Range(Cells(11, 1), Cells(11, 10))
iWert1 = ActiveWorkbook.Sheets("Tabelle1").Range("B5").Value
ReDim iBereich1(1 To 10)
For I = 1 To 10
iBereich1(I) = ActiveWorkbook.Sheets("Tabelle1").Cells(11, 1).Offset(0, I - 1).Value
Next
End Sub
Sub Uebertragen()
With Workbooks("Mappe2.xls").Sheets("Tabelle2")
.Cells(2, 4).Value = rngZelle.Value
rngZelle.Copy
.Cells(2, 4).PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False
.Range(.Cells(4, 1), .Cells(4, 10)).Value = rngBereich.Value
.Cells(1, 7) = iWert1
.Cells(3, 1) = iBereich1(5)
End With
End Sub

Formatierungen von Zellen lassen sich nicht in eine einzelne Variable einlesen. Diese muß man in einzelne Variablen oder auch in ein Array einlesen.
mfg
Franz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zelle inkl. Format in Variable speichern


Schritt-für-Schritt-Anleitung

  1. Zelle oder Zellbereich auswählen: Bestimme zuerst die Zelle oder den Zellbereich, den du speichern möchtest. In unserem Beispiel verwenden wir die Zelle B5.

  2. Variablen deklarieren: Lege die entsprechenden Variablen für die Zelle und den Bereich an. Beispiel:

    Public rngZelle As Range, rngBereich As Range, iWert1 As String, iBereich1() As String
  3. Zelle und Bereich zuweisen:

    Set rngZelle = ActiveWorkbook.Sheets("Tabelle1").Range("B5")
    Set rngBereich = ActiveWorkbook.Sheets("Tabelle1").Range(Cells(11, 1), Cells(11, 10))
    iWert1 = rngZelle.Value
  4. Bereich in ein Array einlesen: Wenn du einen Zellbereich speichern möchtest, kannst du die Werte in ein Array einlesen:

    ReDim iBereich1(1 To 10)
    For I = 1 To 10
        iBereich1(I) = ActiveWorkbook.Sheets("Tabelle1").Cells(11, 1).Offset(0, I - 1).Value
    Next
  5. Werte in eine andere Arbeitsmappe übertragen: Um die Werte und Formate in eine andere Arbeitsmappe zu übertragen, kannst du den folgenden Code verwenden:

    With Workbooks("Mappe2.xls").Sheets("Tabelle2")
        .Cells(2, 4).Value = rngZelle.Value
        rngZelle.Copy
        .Cells(2, 4).PasteSpecial Paste:=xlFormats
        Application.CutCopyMode = False
        .Range(.Cells(4, 1), .Cells(4, 10)).Value = rngBereich.Value
        .Cells(1, 7) = iWert1
        .Cells(3, 1) = iBereich1(5)
    End With

Häufige Fehler und Lösungen

  • Fehler: "Typenübereinstimmung": Achte darauf, dass die Variablen korrekt deklariert sind. Überprüfe, ob du die richtigen Datentypen verwendest.

  • Fehler: "Objekt nicht gefunden": Stelle sicher, dass die Arbeitsmappe und die Tabellenblätter, auf die du zugreifen möchtest, auch tatsächlich geöffnet sind.

  • Fehler beim Kopieren von Formaten: Wenn du beim Kopieren von Formaten auf Probleme stößt, überprüfe, ob die Zielzelle im richtigen Format vorliegt. Verwende PasteSpecial für die Formate.


Alternative Methoden

Eine alternative Methode zur Speicherung von Zellinhalten und deren Formaten ist die Verwendung eines DataObject. Dies ist besonders nützlich, wenn du Inhalte wie in der Zwischenablage speichern möchtest. Hier ein einfaches Beispiel:

Dim DataObj As New MSForms.DataObject
DataObj.SetText rngZelle.Value
DataObj.PutInClipboard

Denke daran, dass du die Microsoft Forms 2.0 Object Library aktivieren musst, um das DataObject verwenden zu können.


Praktische Beispiele

Hier sind einige praktische Anwendungsbeispiele für das Speichern von Zellinhalten und -formaten in Variablen:

  • Speichern einer IBAN in Excel formatieren: Wenn du eine IBAN in Excel formatieren möchtest, kannst du die Formatierung direkt in der Zelle vornehmen, bevor du sie in eine Variable speicherst.

  • Datenübertragung zwischen verschiedenen Tabellen: Der obige Code zeigt, wie du Daten und Formate von einer Tabelle in eine andere überträgst, was in der täglichen Arbeit mit Excel VBA sehr nützlich sein kann.


Tipps für Profis

  • Verwende Option Explicit: Dies hilft dir, Fehler bei der Variablendeklaration zu vermeiden und sorgt für klareren Code.

  • Nutze Application.ScreenUpdating = False: Dies kann die Ausführungsgeschwindigkeit deiner VBA-Makros erhöhen, indem die Bildschirmaktualisierung während der Ausführung deaktiviert wird.

  • Teste deinen Code Schritt für Schritt: Verwende den Debugger, um sicherzustellen, dass jeder Teil deines Codes wie gewünscht funktioniert.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Formatierung beim Kopieren beibehalten wird?
Nutze PasteSpecial und wähle xlFormats, um die Formatierungen zu übertragen.

2. Kann ich auch mehrere Zellen auf einmal speichern?
Ja, du kannst einen Zellbereich in ein Array speichern, wie im obigen Beispiel gezeigt. Achte darauf, dass du die richtigen Indizes verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige