Thema Datum  Von Nutzer Rating
Antwort
Rot Verschiedene Fragen(Formatieren, Sortieren, Vergleich etc.)
04.10.2012 09:31:59 MaxKiel
NotSolved
04.10.2012 09:33:05 MaxKiel
NotSolved
05.10.2012 07:12:32 MaxKiel
NotSolved

Ansicht des Beitrags:
Von:
MaxKiel
Datum:
04.10.2012 09:31:59
Views:
1725
Rating: Antwort:
  Ja
Thema:
Verschiedene Fragen(Formatieren, Sortieren, Vergleich etc.)

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:
[url]https://rapidshare.com/files/3884808837/VBA.zip[/url]

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:
[code]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
[/code]

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

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Verschiedene Fragen(Formatieren, Sortieren, Vergleich etc.)
04.10.2012 09:31:59 MaxKiel
NotSolved
04.10.2012 09:33:05 MaxKiel
NotSolved
05.10.2012 07:12:32 MaxKiel
NotSolved