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

Zellenformat dynamisch übernehmen

Forumthread: Zellenformat dynamisch übernehmen

Zellenformat dynamisch übernehmen
Dom
Hallo,
ich habe mit Excel und Vba eine Mappe erstellt, in der ich per VBA-Makro neue Tabellenblätter erstelle. Diese enthalten alles was ich benötige um den Preis eines Produktes zu berechnen. Ein weiteres VBA-Makro erstellt mir eine Tabelle die aus den vorherigen Tabellen ein Angebot erstellt. (Alle Makros hab ich zu Fuß und nicht mit Makrorecorder gemacht).
Das funtioniert auch alles sehr gut. Mein Problem ist jetzt nur, ich habe eine Zelle (immer feste Position) auf jedem Kalkulationsblatt das die Lieferzeit beinhaltet. Diesen Zelleninhalt ziehe ich auch ins Angebot.
Da oft Angebote überarbeitet werden müssen, muss sich auch der Zelleninhalt dynamisch verändern. Das ist auch kein Problem. Jedoch kommt es regelmäßig vor, das aus einer Kalenderwochenangabe (Lieferzeitraum z.B. Lieferzeit/-termin: 10-12KW) ein festes Lieferdatum wird (Lieferzeit/-termin: 25.12.2011). Das gibt im Angebot natürlich eine nicht gerade sinnvolle Formatierung. Aus 10-12KW wird dann nicht 25.12.2011 sondern 40902.
Daher habe ich versucht analog zum Zelleninhalt auch das Zellenformat dynamisch zu übernehmen. Würde ich die Angebot Tabelle bei jeder Änderung löschen und neu erstellen würde es die Formatierung mit übernehmen, das reicht mir aber nicht. Ich möchte gern, dass sie sich wie der Zelleninhalt dynamisch verändert.
Meine Lösung zur Erstellung des Angebots:
Modul: AngebotErstellen
Kopf und Fusszeile erstellen (in Abhängigkeit der GesamtPositionszahl (16 Pos/Seite danach neue Seite)
Schleife1 Anfang: (Läuft von 1 bis Sheets.Count -1)
---Angebot erstellen (je Schleifendurchlauf eine Position, jede Position entnimmt dabei die Daten aus dem dazugehörigen KalkulationsTabellenBlatt)
Schleife1 Ende
Kurzer Text mit Lieferbedingungen
Dabei wird der Zellenihalt folgendermaßen übertragen (Verkürzt, geht hier ja nur ums Verständnis)
Range().Select
With Selection
.Formula = "=" & iAktuellePosition & "!r3c21"
End With
Hierbei ist iAktuellePosition die Nummer der aktuellen Tabelle/Position, die gleichzeitig der Name der Tabelle ist.
Gibt es hierzu eine Möglichkeit?
Danke schonmal im Vorraus.
Dom
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Zellenformat dynamisch übernehmen
26.11.2011 15:01:03
fcs
Hallo Dom,
hier gibt es das generelle Problem, dass Excel extrem verliebt in Zahlen-/Datumsangaben ist und es dabei zu Problemen bei der Darstellung kommen kann.
Hier solltest du die Einabezellen für die problematischen Werte als "Text" formatieren, so dass Eingaben wie 10.1 oder 2-4 nicht von Excel automatisch in ein Datum umgewandelt werden.
Die Zellen, in die du die Formeln einfügst, um solche Werte zu übernehmen muss du als Zahlenformat "Standard" formatieren.
With Selection
.Formula = "=" & iAktuellePosition & "!r3c21"
.Numberformat = "General"
End With
Gruß
Franz
Anzeige
AW: Zellenformat dynamisch übernehmen
28.11.2011 16:00:56
Dom
Hallo,
bin heute erst dazu gekommen das zu testen. Hat sehr gut funktioniert. Danke für den Tipp.
Dom
;
Anzeige

Infobox / Tutorial

Zellenformat dynamisch übernehmen in Excel


Schritt-für-Schritt-Anleitung

Um das Zellenformat dynamisch zu übernehmen, während Du mit VBA arbeitest, kannst Du folgende Schritte ausführen:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

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

    • Klicke mit der rechten Maustaste auf „VBAProject (DeinWorkbookName)“ und wähle „Einfügen“ > „Modul“.
  3. Schreibe das folgende VBA-Skript:

    • Dieses Skript übernimmt sowohl den Zelleninhalt als auch das Format der Zelle.
    Sub AngebotErstellen()
       Dim iAktuellePosition As Integer
       Dim wsQuelle As Worksheet
       Dim wsZiel As Worksheet
    
       Set wsZiel = ThisWorkbook.Sheets("Angebot") ' Zielarbeitsblatt
    
       For iAktuellePosition = 1 To ThisWorkbook.Sheets.Count - 1
           Set wsQuelle = ThisWorkbook.Sheets(iAktuellePosition)
    
           With wsZiel.Cells(iAktuellePosition + 1, 1) ' Beispiel für Position
               .Formula = "=" & wsQuelle.Name & "!R3C21"
               .NumberFormat = wsQuelle.Cells(3, 21).NumberFormat ' Übernimmt das Zellenformat
           End With
       Next iAktuellePosition
    End Sub
  4. Führe das Makro aus:

    • Schließe den VBA-Editor und gehe zurück zu Excel.
    • Drücke ALT + F8, wähle „AngebotErstellen“ und klicke auf „Ausführen“.

Häufige Fehler und Lösungen

  • Problem: Excel wandelt Datumsangaben automatisch um.

    Lösung: Stelle sicher, dass die Eingabezellen im Quellblatt als „Text“ formatiert sind. So verhinderst Du, dass Eingaben wie „10-12KW“ in ein Datum umgewandelt werden.

  • Problem: Die Formatierung wird nicht korrekt übernommen.

    Lösung: Überprüfe, ob das Format der Zielzelle auf „Standard“ gesetzt ist. Verwende .NumberFormat = "General" im VBA-Code, um formatierte Werte zu übernehmen.


Alternative Methoden

  • Verwendung von Formeln: Du kannst auch einfache Excel-Formeln verwenden, um den Zelleninhalt ohne VBA zu übernehmen. Zum Beispiel:

    =Kalkulationsblatt!B3
  • Kopieren und Einfügen: Eine manuelle Methode ist das Kopieren und Einfügen von Zellen mit „Inhalte einfügen“ > „Formate“. Diese Methode ist jedoch nicht dynamisch.


Praktische Beispiele

  1. Lieferzeit dynamisch übergeben:

    • Angenommen, Du hast in Zelle B3 auf dem Kalkulationsblatt die Lieferzeit „10-12KW“. Wenn Du diese in Dein Angebot übernimmst, wird es so aussehen:
    .Formula = "=" & wsQuelle.Name & "!B3"
  2. Format übernehmen:

    • Wenn in B3 ein Datum steht, kannst Du das Format wie folgt übernehmen:
    .NumberFormat = wsQuelle.Cells(3, 2).NumberFormat

Tipps für Profis

  • Nutze Debug.Print, um die Werte und Formate in der Konsole zu überprüfen, falls Du auf Probleme stößt.
  • Halte Deinen VBA-Code modular, indem Du wiederverwendbare Funktionen schreibst.
  • Verwende die Excel-Dokumentation für spezifische Formatierungsoptionen, um die besten Ergebnisse zu erzielen.

FAQ: Häufige Fragen

1. Wie kann ich verhindern, dass Excel Daten automatisch umformatiert?
Du kannst die Zellen, in die Du Daten eingibst, als „Text“ formatieren. Das verhindert, dass Excel Eingaben wie „10-12KW“ in Datumsangaben umwandelt.

2. Welche Excel-Version benötige ich für die oben genannten VBA-Funktionen?
Die beschriebenen VBA-Funktionen sind in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010 und neuer.

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