03.01.2016, 12:22
Hallo,
habe mich jetzt etwas in VBA eingelesen, einige Videos geschaut, aber das will einfach nicht. Habe noch nie etwas mit Programmierung gemacht und bin jetzt also ratlos :16: Ich bin gerademal dazu gekommen, dass ich ein Makro aufnehmen und abspeichern kann. Und Google will mir da auch nicht wirklich helfen.
Für folgendes suche ich eine Lösung:
Aus unserer WaWi-Datenbank erstelle ich mir eine Liste von Artikeln mit verschiedenen Spalten. Dabei variieren die Spaltenreihenfolge/-anzahl sowie die Zeilenanzahln (Datensätze). Was aber gleich bleibt ist der Spaltenname der einzelnen Spalten. Ich würde nun gerne die Formatierung automatisieren, sodass ich nicht immer dieselben Arbeitsschritte manuell durchgehen muss, bevor ich mit der Liste arbeiten kann.
Mein Makro habe ich folgend aufgenommen, nur macht mir das jetzt nicht die gewünschte Formatierung bei einem anderen File mit mehr Datensätzen/Spalten.
Sub Test_Formatierung()
'
' Test_Formatierung Makro
'
'hinter der letzten Spalte mit Inhalt eine Spalte "Kontrolle" mit fortlaufender Nummerierung bis ans Ende der Tabelle anlegen.
'1 Zeile bis leere/r Datensatz/Zellen fett und grün färben.
'Bereich mit Datensätzen Gitterrahmen geben, Zeilenumbruch und Text im Zeilenbereich oben
'Spalte mit Namen "EK" und "VK" in Währung Euro formatieren.
Range("M1").Select
ActiveCell.FormulaR1C1 = "Kontrolle"
Range("M2").Select
ActiveCell.FormulaR1C1 = "1"
Range("M3").Select
ActiveCell.FormulaR1C1 = "2"
Range("M4").Select
ActiveCell.FormulaR1C1 = "3"
Range("M5").Select
ActiveCell.FormulaR1C1 = "4"
Range("M2:M5").Select
Selection.AutoFill Destination:=Range("M2:M56"), Type:=xlFillDefault
Range("M2:M56").Select
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 16
ActiveWindow.ScrollRow = 15
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 1
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.399975585192419
.PatternTintAndShade = 0
End With
Selection.Font.Bold = True
Range(Selection, Selection.End(xlDown)).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection
.HorizontalAlignment = xlGeneral
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlTop
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveWindow.SmallScroll Down:=-3
Range("H2").Select
Columns("F:G").Select
Selection.Style = "Currency"
End Sub
Wie kann ich die einzelnen Formatierungsschritte dynamisch machen, sprich die Zeilen namens "EK" und "VK" (steht für Einkaufspreis und Verkaufspreis und sind aktuell oben als F und G filespezifisch angesteuert) ansteuern, sodass ich die bei variierender Spaltenanzahl doch noch formatieren kann?
Und das selbe dann auch mit der restlichen Formatierung.
Freue mich auf jede Hilfe
Lg
Matthias
habe mich jetzt etwas in VBA eingelesen, einige Videos geschaut, aber das will einfach nicht. Habe noch nie etwas mit Programmierung gemacht und bin jetzt also ratlos :16: Ich bin gerademal dazu gekommen, dass ich ein Makro aufnehmen und abspeichern kann. Und Google will mir da auch nicht wirklich helfen.
Für folgendes suche ich eine Lösung:
Aus unserer WaWi-Datenbank erstelle ich mir eine Liste von Artikeln mit verschiedenen Spalten. Dabei variieren die Spaltenreihenfolge/-anzahl sowie die Zeilenanzahln (Datensätze). Was aber gleich bleibt ist der Spaltenname der einzelnen Spalten. Ich würde nun gerne die Formatierung automatisieren, sodass ich nicht immer dieselben Arbeitsschritte manuell durchgehen muss, bevor ich mit der Liste arbeiten kann.
Mein Makro habe ich folgend aufgenommen, nur macht mir das jetzt nicht die gewünschte Formatierung bei einem anderen File mit mehr Datensätzen/Spalten.
Sub Test_Formatierung()
'
' Test_Formatierung Makro
'
'hinter der letzten Spalte mit Inhalt eine Spalte "Kontrolle" mit fortlaufender Nummerierung bis ans Ende der Tabelle anlegen.
'1 Zeile bis leere/r Datensatz/Zellen fett und grün färben.
'Bereich mit Datensätzen Gitterrahmen geben, Zeilenumbruch und Text im Zeilenbereich oben
'Spalte mit Namen "EK" und "VK" in Währung Euro formatieren.
Range("M1").Select
ActiveCell.FormulaR1C1 = "Kontrolle"
Range("M2").Select
ActiveCell.FormulaR1C1 = "1"
Range("M3").Select
ActiveCell.FormulaR1C1 = "2"
Range("M4").Select
ActiveCell.FormulaR1C1 = "3"
Range("M5").Select
ActiveCell.FormulaR1C1 = "4"
Range("M2:M5").Select
Selection.AutoFill Destination:=Range("M2:M56"), Type:=xlFillDefault
Range("M2:M56").Select
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 16
ActiveWindow.ScrollRow = 15
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 1
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.399975585192419
.PatternTintAndShade = 0
End With
Selection.Font.Bold = True
Range(Selection, Selection.End(xlDown)).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection
.HorizontalAlignment = xlGeneral
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlTop
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveWindow.SmallScroll Down:=-3
Range("H2").Select
Columns("F:G").Select
Selection.Style = "Currency"
End Sub
Wie kann ich die einzelnen Formatierungsschritte dynamisch machen, sprich die Zeilen namens "EK" und "VK" (steht für Einkaufspreis und Verkaufspreis und sind aktuell oben als F und G filespezifisch angesteuert) ansteuern, sodass ich die bei variierender Spaltenanzahl doch noch formatieren kann?
Und das selbe dann auch mit der restlichen Formatierung.
Freue mich auf jede Hilfe
Lg
Matthias