Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1280to1284
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

Verschiedene Fragen(Formatieren, Sortieren, Vergle

Verschiedene Fragen(Formatieren, Sortieren, Vergle
04.10.2012 09:55:41
Max
Hallo liebes Forum,
ich bin ziemlicher Neuling im Bereich VBA und habe nun eine für meine Kenntnisse sehr ausführliche Aufgabe bekommen. Ich habe mich bereits etwas voran gerarbeitet mit Hilfe dieses und anderer Foren und verschiedener Bücher. Dennoch bin ich nicht wirklich zu frieden.
Meine Aufgabe und die drei benötigten Dateien habe ich in dieser Datei zusammengefasst:
https://rapidshare.com/files/3884808837/VBA.zip
Im Prinzip geht es um folgende Schritte:
1. Das Format der Datei 1(Datei ist bereits vorhanden) soll geändert werden, die Zeilen sollen nach dem Wert in der Spalte Refcon aufsteigend sortiert werden, 2 Zellen sollen Formatiert werden und 5 Kriterien hinzugefügt werden.
2. In der Datei 2(Datei ist bereits vorhanden) sollen 2 Zellen formatiert werden.
3. Werte (varierend viele, d.h. es sollen jeweils die Werte verglichen werden, die an einem Tag X eingegangen sind, der Tag X soll per MsgBox erfragt werden) aus der Datei 1 sollen mit entsprechenden Werten der Datei 2 (Referenzwerte, d.h. vom Tag X mit passender ID) verglichen werden. Das Ergebnis soll in einer Datei 3(Datei ist bereits vorhanden) ausgegeben werden.
Meine Probleme basieren darauf, dass der Makrorekorder zu statisch ist und ich zu wenig Kenntnis in Excel selbst habe, um es richtig zu lösen.
Konkret:
Zu 1.:
a) Wie kann ich dynamisch die Zeilen nach dem Wert der Spalte Refcon sortieren lassen. Mit dem Makrorekorder wirkt das leider sehr statisch?
b) Kann ich das Suchen und darauffolgende Formatieren von Spalten "schöner" lösen?
Zu 2.:
a) s. 1. b) (zum Thema suchen und Finden: Ich möchte hier "Cashflow" finden, aber nicht Cashflowtype, daher suche ich einfach einmal "weiter" -> nicht so optimal)
Zu 3.:
Im Grunde weiß ich hier bisher gar nicht weiter. Der Makrorekorder ist wieder so statisch, dass z.B. bei Änderung der Dateinamen alles murks ist.
Geschrieben habe ich dazu bisher Folgendes:

Sub Berg1()
' Berg1 Makro
'Datei1 auswählen
MsgBox "Datei 1 auswählen"
ChDrive "N:\"
dateiname = Application.GetOpenFilename
If dateiname = False Then Exit 

Sub            'oder GoTo Omega zum Zurückstellen der Excel-Einstellungen
Workbooks.Open Filename:= _
dateiname
dateiNeu = ActiveWorkbook.Name       ' Name des Datenabzug
ActiveWorkbook.SaveAs FileFormat:=xlOpenXMLWorkbook
'Refcon finden & formatieren
Cells.Find(What:="refcon", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Columns(ActiveCell.Column).Select
Selection.NumberFormat = "0"
Select.Range
ActiveWorkbook.Worksheets("Datei 1").Sort.SortFields. _
Add Key:=Range("E2:E6074"), SortOn:=xlSortOnValues, Order:=xlDescending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Datei 1").Sort
.SetRange Range("A1:W6074")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Quantity finden & formatieren
Cells.Find(What:="quantity", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Columns(ActiveCell.Column).Select
Selection.NumberFormat = "#,##0"
'Amount finden & formatieren
Cells.Find(What:="Amount", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Columns(ActiveCell.Column).Select
Selection.NumberFormat = "#,##0.00"
'Kommentar hinzufügen und formatieren
Range("X1").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Color = -16777216
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Color = -16777216
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = "Kommentar"
With ActiveCell.Characters(Start:=1, Length:=9).Font
.Name = "Arial"
.FontStyle = "Fett"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
'Hinweis hinzufügen und formatieren
Range("Y1").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Color = -16777216
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Color = -16777216
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = "Hinweis"
With ActiveCell.Characters(Start:=1, Length:=7).Font
.Name = "Arial"
.FontStyle = "Fett"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
'Bearbeitet hinzufügen und formatieren
Range("Z1").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Color = -16777216
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Color = -16777216
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = "Bearbeitet"
With ActiveCell.Characters(Start:=1, Length:=10).Font
.Name = "Arial"
.FontStyle = "Fett"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
'Kategorie hinzufügen und formatieren
Range("AA1").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Color = -16777216
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Color = -16777216
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = "Kategorie"
With ActiveCell.Characters(Start:=1, Length:=9).Font
.Name = "Arial"
.FontStyle = "Fett"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
'zuletzt geprüft hinzufügen und formatieren
Range("AB1").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Color = -16777216
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Color = -16777216
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = "zuletzt geprüft"
With ActiveCell.Characters(Start:=1, Length:=15).Font
.Name = "Arial"
.FontStyle = "Fett"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
'Datei1 zuweisen
Set w = ActiveWorkbook
'Datei2 öffnen
MsgBox "Datei 2 auswählen"
ChDrive "N:\"
dateiname = Application.GetOpenFilename
If dateiname = False Then Exit 

Sub            'oder GoTo Omega zum Zurückstellen der Excel-Einstellungen
Workbooks.Open Filename:= _
dateiname
dateiNeu = ActiveWorkbook.Name       ' Name des Datenabzug
'Principal finden und formatieren
Cells.Find(What:="Principal", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Columns(ActiveCell.Column).Select
Selection.NumberFormat = "#,##0"
'Cashflow (nicht Cashflowtype) finden und formatieren
Cells.Find(What:="CashFlow", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Cells.FindNext(After:=ActiveCell).Activate
Columns(ActiveCell.Column).Select
Selection.NumberFormat = "#,##0.00"
Set e = ActiveWorkbook
'Zurück zu Datei1
w.Activate
End Sub

Ich hoffe, dass ihr mir weiterhelfen könnt.
Ich weiß, es ist ne ganze Menge, aber ich bin wirklich am Ende mit meinem Laienhalbwissen.
Danke in jedem Fall an jeden schon ein mal, der sich überhaupt die Mühe gemacht hat, bis hierhin zu lesen.
Grüße,
Max

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verschiedene Fragen(Formatieren, Sortieren, Vergle
04.10.2012 09:56:27
Max
Doppelpost war nicht gewollt.
Entschuldigung.

AW: Verschiedene Fragen(Formatieren, Sortieren, Vergle
06.10.2012 16:07:58
fcs
Hallo Max,
ich hab mal versucht mich durch deinen Datei-Dschungel zu wühlen.
Das umstellen der Formatierung/Sortierung auf optimierten Code mit flexibler Zeilenzahl sollte funktionieren.
Damit der Vergleich funktioniert musste in Datei2 auch noch die Datumsspalte so konertiert werden, dass dort ein Exceldatum steht und kein Text.
Den Vergleich hab ich auch mal versucht umzusetzen.
Es funktioniert im Prinzip, aber ich musste die Ergebniszeile aus Datei1 in 2 Teilen nach Datei3 kopieren, da du dort die Spalte "POSITION_ID" weggelassen hast.
In der Datei3 hab ich die untere Zeile mit der Wiederholung der Spaltentitel wieder gelöscht. Sie stört im ABlauf und ist doch eigentlich nicht erforderlich, wenn du das Fenster in in diesem Blatt unterhalb der Titelzeile fixierst.
Datei mit Code. Ich hab die Aufgaben jeweils in Teilprozeduren aufgeteilt, um die Übersichtlichkeit zu verbessern.
https://www.herber.de/bbs/user/82002.xlsm
Gruß
Franz

Anzeige
Teilantwort
04.10.2012 10:32:58
Matthias
Hallo
Zitat:

Ich möchte hier "Cashflow" finden, aber nicht Cashflowtype
Versuch mal statt: LookAt:=xlPart -> LookAt:=xlWhole
Gruß Matthias

AW: Teilantwort
04.10.2012 10:46:56
Max
Vielen Dank, das hat dieses Problem gelöst:)

AW: Verschiedene Fragen(Formatieren, Sortieren, Vergle
05.10.2012 07:12:53
Max
Niemand eine Idee?
Hab ich eventuell was falsch gepostet?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige