Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1464to1468
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Formatierung beim einlesen behalten

Formatierung beim einlesen behalten
06.01.2016 20:30:09
Werner
Hallo Excel-Freunde.
Habe ein Makro zum einlesen von einer Datei.
Funktioniert alles einwandfrei, nur löscht es jedes mal meine voeher eingegebene Schriftgröße, bzw. die vorgegebene Ausrichtung der Schrift.
Beispiel: Ich gebe under F5 die Schriftgröße 28 und die Ausrichtung 0° ein, nach dem einlesen mit dem Makro ist die Schriftgröße jedesmal 10 und die Ausrichtung 90°.
Hier das Makro:
Sub Refresh2()
' test Makro
Dim Tabelle As Worksheet
Wert = Range("E1").Text
Set Tabelle = ThisWorkbook.Worksheets("Lager")
'Wert der eingefügt wird
'MsgBox ("=INDEX('[Stamm " & Wert & ".xlsm]Tabelle1'!$A:$L;VERGLEICH(FF!$E4;'[Stamm " & Wert & " _
.xlsm]Tabelle1'!$A:$A;0);2)")
MsgBox ("Bitte Tabelle Stamm " & Wert & ".xlsm in Verzeichnis C:\Stammdaten legen!")
If Dir("C:\Stammdaten\Stamm " & Wert & ".xlsm")  "" Then
Workbooks.Open ("C:\Stammdaten\Stamm " & Wert & ".xlsm")
Windows("Brot 2016 KW 01 .xlsm").Activate
'Fülle Artikel
Tabelle.Range("D4").FormulaLocal = "=INDEX('[Stamm " & Wert & ".xlsm]Tabelle1'!$A:$L;VERGLEICH( _
Lager!$E4;'[Stamm " & Wert & ".xlsm]Tabelle1'!$A:$A;0);2)"
'Fülle Einheit
Tabelle.Range("f4").FormulaLocal = "=INDEX('[Stamm " & Wert & ".xlsm]Tabelle1'!$A:$L;VERGLEICH( _
Lager!$E4;'[Stamm " & Wert & ".xlsm]Tabelle1'!$A:$A;0);8)"
Tabelle.Range("g4").FormulaLocal = "=INDEX('[Stamm " & Wert & ".xlsm]Tabelle1'!$A:$L;VERGLEICH( _
Lager!$E4;'[Stamm " & Wert & ".xlsm]Tabelle1'!$A:$A;0);6)"
Tabelle.Range("h4").FormulaLocal = "=INDEX('[Stamm " & Wert & ".xlsm]Tabelle1'!$A:$L;VERGLEICH( _
Lager!$E4;'[Stamm " & Wert & ".xlsm]Tabelle1'!$A:$A;0);3)"
Tabelle.Range("i4").FormulaLocal = "=INDEX('[Stamm " & Wert & ".xlsm]Tabelle1'!$A:$L;VERGLEICH( _
Lager!$E4;'[Stamm " & Wert & ".xlsm]Tabelle1'!$A:$A;0);3)"
'Kopiere Zeilen nach unten
Range("D4").Select
Selection.AutoFill Destination:=Range("D4:D58"), Type:=xlFillDefault
Range("F4").Select
Selection.AutoFill Destination:=Range("F4:F58"), Type:=xlFillDefault
Range("G4").Select
Selection.AutoFill Destination:=Range("G4:G58"), Type:=xlFillDefault
Range("h4").Select
Selection.AutoFill Destination:=Range("h4:h58"), Type:=xlFillDefault
Else
MsgBox ("Datei mit dem Namen: Stamm " & Wert & ".xlsm existiert nicht!")
End If
End Sub
Vielen Dank für euere Hilfe
Werner

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

Betreff
Datum
Anwender
Anzeige
AW: Formatierung beim einlesen behalten
06.01.2016 21:15:39
Michael
Hi Werner,
meinst Du wirklich F5 (fünf)? Die Formel wird ja bereits in F4 erzeugt und mit Autofill "heruntergezogen".
Wenn Du anstatt autofill copy & pastespecial mit xlformula verwendest, sollte es gehen, etwa so:
'Kopiere Zeilen nach unten
Range("D4").Copy
Range("D5:D58").PasteSpecial Paste:=xlPasteFormulas
Range("F4:H4").Copy
Range("F5:F58").PasteSpecial Paste:=xlPasteFormulas
Übrigens: Die "letzte" Formel für I4 wird nicht mitkopiert; außerdem ist sie mit H4 identisch, so daß in I4 ein schlichtes =H4 genügt.
Schöne Grüße,
Michael
P.S.: Ich sehe keinen rechten Verweis auf ein Tabellenblatt: Du öffnest die externe Datei, aktivierst dann wieder die ursprüngliche, schreibst aber dort in "Lager" (das in "Tabelle" zugewiesen wird); also ist anscheinend gerade ein Übersichtsblatt geöffnet. Das könnte man etwas "expliziter" gestalten.
Auf alle Fälle: bitte erst mit Kopien Deiner Datein testen...
Und: bitte die externe Datei wieder schließen.

Anzeige
AW: Formatierung beim einlesen behalten
06.01.2016 21:18:00
Daniel
Hi
du verwendest den Autofill mit der Zeile 4 (vier!) als Quelle.
beim Autofill wird der vollständige Zellinhalt nach unten kopiert, auch die Formate.
Dh du musst die Zellen der Zeile 4 im Wunschformat formatieren, nicht die Zeile 5.
allerdings ist der Autofill nicht notwendig.
anstelle des Autofills kannst du die Formeln auch gleich in alle Zellen direkt schreiben, dann werden nur die Formeln geschrieben und die Formate bleiben so wie sie sind.
statt
Range("D4").FormulaLocal = "= Deine Formel"
Range("D4").AutoFill Destination:=Range("D4:D58")
schreibt man einfach:
Range("D4:D58").FormulaLocal = "=Deine Formel"
das entspricht folgendem manuellen Vorgehen:
1. alle Zellen markieren, die die Formel bekommen sollen
2. Formel in die aktive Zelle eingeben
3. Eingabe mit STRG+ENTER abschliessen
Gruss Daniel

Anzeige
ist ja noch besser, Gruß @Daniel owT
06.01.2016 21:38:15
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige