Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1416to1420
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

Bedingte Formatierung Probleme VBA

Bedingte Formatierung Probleme VBA
07.04.2015 13:24:26
Christopher
Hallo zusammen,
ich habe folgendes Problem:
Ich habe ein ziemlich allgemein-gehaltendes Makro geschrieben, dass später von mehreren verschiedenen Dateien benutzt werden muss.
Es klappt alles soweit, bis auf eins:
Die bedingte Formatierung zieht sich etwas länger, als die Tabelle lang ist.
Liegt wahrscheinlich daran, dass es ein fest definiertet Bereich ist, jedoch kann ich diesen nicht variabel umändern.
Ich habe schon vieles Probiert, aber ich komm einfach nicht auf eine Lösung.
Meine beiden Dateien werden mit hochgeladen, folgendes ist zur Nachvollziehung zu tun:
-> Auf dem Desktop muss ein Ordner "Muterquoten Auswertung" angelegt werden.
Dort muss die Datei "auswertung.txt." und die "Musterdatei" hinterlegt sein.
nach Starten des Makros der "Musterdatei" (STRG+M), wird die Datei "auswertung.txt" formatiert.
Nun ist zu sehen, dass die Bedingte Formatierung in Spalte L ein bisschen mehr Platz in Anspruch nimmt, als Daten hinterlegt sind.
ACHTUNG! Mir ist klar, dass der defnierte Bereich bis 71 geht und die Daten aus der Textdatei bis Zeile 21. Ich müsste einen Befehl haben, der mir die bedingte Formatierung bis zur letzten Zeile der beschriebenen Tabelle macht.
Die mitgelieferte Textdatei in nur eine von vielen. Daher, dass das allgemein gehalten werden soll, gibt es auch andere Textdateien, die länger sind und auch mit dem selben Makro benutzt werden sollen.
EDIT: war leider nicht in der Lage, die Excel Datei hochzuladen, da xlsb Format.
Vielleicht könnt ihr mit dem Quellcode auch noch was anfangen:
Sub formatierung()
' formatierung Makro
Benutzer = VBA.Environ("Username")
ChDir "C:\Users\" & Benutzer & "\Desktop\Musterquoten Auswertung"
Workbooks.OpenText Filename:= _
"C:\Users\" & Benutzer & "\Desktop\Musterquoten Auswertung\auswertung.txt", Origin:= _
xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, _
1), Array(7, 1), Array(15, 1), Array(43, 1), Array(47, 1), Array(69, 1), Array(80, 1),  _
Array _
(89, 1), Array(101, 1), Array(111, 1), Array(125, 1), Array(135, 1)), _
TrailingMinusNumbers:=True
Range("B4").Select
Selection.Cut
Range("O8").Select
ActiveSheet.Paste
Rows("1:4").Select
Selection.Delete Shift:=xlUp
Columns("A:C").Select
Selection.Delete Shift:=xlToLeft
Range("C1:I1").Select
Selection.ClearContents
Range("C1").Select
ActiveCell.FormulaR1C1 = ""
Range("C1:F1").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
ActiveCell.FormulaR1C1 = "Anzahl A."
Columns("G:G").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("H1:J1").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
ActiveCell.FormulaR1C1 = "Anzahl P."
Range("K1").Select
ActiveCell.FormulaR1C1 = "P."
Range("K1").Select
Selection.Font.Bold = True
Range("L1").Select
ActiveCell.FormulaR1C1 = "P."
Range("L1").Select
Selection.Font.Bold = True
Range("K2").Select
ActiveCell.FormulaR1C1 = "V. %"
Range("L2").Select
ActiveCell.FormulaR1C1 = "Z. %"
Range("N1").Select
ActiveCell.FormulaR1C1 = "Zeitraum:"
Range("N2").Select
ActiveCell.FormulaR1C1 = "Datum:"
Range("M4").Select
Selection.Cut
Range("O1").Select
ActiveSheet.Paste
Range("O2").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
Range("O1").Select
Selection.NumberFormat = "m/d/yyyy"
Range("K3").Select
ActiveCell.FormulaR1C1 = "=IFERROR(RC[-2]*100/RC[-3],"""")"
Range("K9").Select
ActiveWindow.SmallScroll Down:=-12
Range("L3").Select
ActiveCell.FormulaR1C1 = "=IFERROR(RC[-2]*100/RC[-4],"""")"
Range("L4").Select
ActiveWindow.SmallScroll Down:=39
Rows("58:63").Select
Selection.Delete Shift:=xlUp
Range("O55").Select
ActiveWindow.SmallScroll Down:=-69
Dim lRow As Long
On Error Resume Next 'löscht letzte Zeile
lRow = Range("A1:N71").Find("*", searchdirection:=xlPrevious).Row
Range("A" & lRow, "N" & lRow).ClearContents
On Error Resume Next 'Löscht wieder die letzte Zeile
lRow = Range("A1:N71").Find("*", searchdirection:=xlPrevious).Row
Range("A" & lRow, "N" & lRow).ClearContents
On Error Resume Next 'Löscht wieder die letzte Zeile
lRow = Range("A1:N71").Find("*", searchdirection:=xlPrevious).Row
Range("A" & lRow, "N" & lRow).ClearContents
On Error Resume Next 'löscht wieder die letzte Zeile
lRow = Range("A1:N71").Find("*", searchdirection:=xlPrevious).Row
Range("A" & lRow, "N" & lRow).ClearContents
Range("K3").Select
Selection.AutoFill Destination:=Range("K3:K71"), Type:=xlFillDefault
Range("K3:K71").Select
Range("N60").Select
ActiveWindow.SmallScroll Down:=-42
Range("L3").Select
Selection.AutoFill Destination:=Range("L3:L71"), Type:=xlFillDefault
Range("L3:L71").Select
Range("N61").Select
ActiveWindow.SmallScroll Down:=-45
Range("K3:K71").Select
Selection.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""?_);_(@_)"
Range("L3:L71").Select
Selection.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""?_);_(@_)"
Range("K1:K71").Select
Selection.Font.Bold = True
Range("L1:L71").Select
Selection.Font.Bold = True
Range("L3").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$L3>=70"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$L3

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

Betreff
Datum
Anwender
Anzeige
Soso, du hast dieses Makro also 'geschrieben', ...
07.04.2015 13:51:18
Luc:-?
…Christopher;
sieht aber eher so aus, als ob du „schreiben lassen“ hast, nämlich den Makro-Recorder! ;-]
Man kann eine immer gleiche BedingtFormatierung auch ganz zum Schluss (bezogen auf die 1.Zelle!) für den gesamten Geltungsbereich hinzufügen und muss ihn nicht immer weiterkopieren; Stichworte .AppliesTo und .ModifyAppliesToRange.
Gruß, Luc :-?

AW: Soso, du hast dieses Makro also 'geschrieben', ...
07.04.2015 14:35:40
Christopher
Hey Luc,
ja, ich habe das Makro anfangs erst aufgezeichnet und später per Hand bearbeitet und sehr viel abgeändert.
Deshalb nutzte ich das Wort "geschrieben" :-)
Ich kann dir leider nicht ganz folgen, wie ich die Befehle ModifyAppliesToRange und AppliesTo in mein Makro einbauen kann...
Kannst du mir da helfen, das Makro anzupassen?
LG

Anzeige
Na, da hast du aber die vielen unnötigen und ...
07.04.2015 18:29:28
Luc:-?
…pgm-verlangsamenden .Selects vergessen, Christopher… ;-]
Ansonsten kannst du die BedingtFormatierung auch erst ganz zum Schluss für den ganzen betroffenen Bereich festlegen, dann wird der Geltungsbereich automatisch auf alle angegebenen Zellen gelegt. Zum nachträglichen Ändern würdest du dann fc.ModifyAppliesToRange, zur Abfrage fc.AppliesTo benötigen (fc lt nachfolgendem Bsp). Hier mal ein Bsp für Ersteres, bei dem ursprünglich nur eine Zelle ausgewählt wurde:
Sub TestFC()
Dim c As XlRgbColor, x As Range, fc As FormatCondition
Set x = ActiveWindow.RangeSelection.Cells(1)
Set fc = x.Resize(1, 2).FormatConditions.Add(xlCellValue, xlEqual, "=180")
c = rgbCornsilk: fc.Interior.Color = c
End Sub
Luc :-?
Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige