Anzeige
Archiv - Navigation
1560to1564
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

Script anpassen, erst ab Zeile 4

Script anpassen, erst ab Zeile 4
02.06.2017 08:49:59
peterlijaba@gmail.com
Guten Morgen zusammen
Ich habe im Netz untenstehendes Script gefunden. Die Zeilen werden Blockweise, gemäss angegebener Spalte, grau/weiss eingefärbt und das auch bei aktivem Autofilter, das ist genau das was ich brauche, benötige jedoch noch zwei Anpassungen:
1. Die Formatierung beginnt bereits bei der zweiten Zeile, sollte jedoch erst ab der 4. Zeile sein (Titelzeilen 1-3, Autofilter in Zeile 3, Daten ab Zeile 4).
Ich habe versucht an der unten eingefügten Codestelle den Anfang der Bedingten Formartierung anzupassen:
    'bedingte Formatierung setzen
Range(Cells(2, 1), Cells(lzeile, lspalte + 1)).Select
Das hat auch funktioniert, jedoch stimmt dann die Blockformatierung nicht mehr, irgendwo im Sript muss nach mehr angepasst werden.
2. Gemäss unten eingefügter Codestelle, wird mit einem Popupfenster abgefragt, nach welcher Spalte formatiert werden soll, ich möchte jedoch nicht wählen müssen, sondern es soll immer nach Spalten C, resp. nach der Spalte "Produkt" formatiert werden.
'Inputbox mit Auswahlmöglichkeit
msgTitel = "Eingabe erforderlich!"
Set rngSelect = Application.InputBox _
(Prompt:="Bitte eine Zelle in der Spalte wählen " & vbCrLf & _
"nach welcher BLOCKWEISE markiert werden soll" & vbCrLf & vbCrLf & _
"(Bei Eingabe eines Zellbereichs wird nur die Spalte " & vbCrLf & _
"aus der ersten Zelladresse ausgelesen)", _
Title:=msgTitel, Type:=8)
Vollständiges Sript:
Sub Blockmarkierung_bedingte_Fomatierung()
Dim lzeile, lspalte, spdiff, i As Long
Dim farbe1, farbe2, X As Boolean
Dim rngSelect As Range
Dim msgTitel As String
'Makro zum Setzen einer Blockmarkierung aufgrund einer ausgewählten Spalte mit BEDINGTER  _
FORMATIERUNG!!!
'Hinweis: Überschriftszeile muss durchgehend vorhanden sein!!!
'Ermitteln der letzten gefüllten Zeile in Spalte C
lzeile = ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row
'Ermitteln der letzten gefüllten Spalte in Zeile 3
lspalte = ActiveSheet.Cells(3, Columns.Count).End(xlToLeft).Column
On Error Resume Next
'Inputbox mit Auswahlmöglichkeit
msgTitel = "Eingabe erforderlich!"
Set rngSelect = Application.InputBox _
(Prompt:="Bitte eine Zelle in der Spalte wählen " & vbCrLf & _
"nach welcher BLOCKWEISE markiert werden soll" & vbCrLf & vbCrLf & _
"(Bei Eingabe eines Zellbereichs wird nur die Spalte " & vbCrLf & _
"aus der ersten Zelladresse ausgelesen)", _
Title:=msgTitel, Type:=8)
'Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
If Not rngSelect Is Nothing Then
'Ermittlung der Anzahl von Spalten, welche zwischen der letzten und der Suchspalte liegen
spdiff = lspalte + 1 - rngSelect.Column
'vorhandene bedingte Formatierung löschen
Cells.FormatConditions.Delete
'Hilfspalte anlegen
'Überschrift für Hilfsspalte
'Überschrift Hilfsspalte
Cells(1, lspalte + 1).FormulaR1C1 = "Hilfsspalte wg. bedingter Format."
'Formel Hilfspalte
Range(Cells(2, lspalte + 1), Cells(lzeile, lspalte + 1)).FormulaR1C1 = _
"=IF(SUBTOTAL(3,RC[-" & spdiff & "]),RC[-" & spdiff & "],R[-1]C)"
'bedingte Formatierung setzen
Range(Cells(2, 1), Cells(lzeile, lspalte + 1)).Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=REST(SUMMENPRODUKT(N(" & Cells(1, lspalte + 1).Address & ":" & Cells(1, lspalte + 1). _
Address(0) & "" & Cells(2, lspalte + 1).Address & ":" & Cells(2, lspalte + 1).Address(0) & "));2)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.249946592608417
End With
Selection.FormatConditions(1).StopIfTrue = False
'Ausblenden der Hilfsspalte
Cells(1, lspalte + 1).Columns.EntireColumn.Hidden = True
Else
MsgBox "Keine Zelle wurde ausgewählt!" & vbCrLf & "Das Makro wird beendet", _
vbOKOnly + vbInformation, "Hinweis"
End If
'Markieren von Zelle A2
Range("A2").Select
'Bildschirmaktualisierung einschalten
Application.ScreenUpdating = True
End Sub
Wie muss das Script angepasst werden, hat jemand eine Idee?
Danke für eure geschätzte Unterstützung.
Viele Grüsse,
Peter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Script anpassen, erst ab Zeile 4
02.06.2017 13:43:32
dirk
Hallo!
Ohne zu testen:
Sub Blockmarkierung_bedingte_Fomatierung()
Dim lzeile, lspalte, spdiff, i As Long
Dim farbe1, farbe2, X As Boolean
Dim rngSelect As Range
Dim msgTitel As String
'Makro zum Setzen einer Blockmarkierung aufgrund einer ausgewählten Spalte mit BEDINGTER  _
FORMATIERUNG!!!
'Hinweis: Überschriftszeile muss durchgehend vorhanden sein!!!
'Ermitteln der letzten gefüllten Zeile in Spalte C
lzeile = ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row
'Ermitteln der letzten gefüllten Spalte in Zeile 3
lspalte = ActiveSheet.Cells(3, Columns.Count).End(xlToLeft).Column
On Error Resume Next
'Inputbox mit Auswahlmöglichkeit
'msgTitel = "Eingabe erforderlich!"
Set rngSelect = Range("C1") 'Application.InputBox _
(Prompt:="Bitte eine Zelle in der Spalte wählen " & vbCrLf & _
"nach welcher BLOCKWEISE markiert werden soll" & vbCrLf & vbCrLf & _
"(Bei Eingabe eines Zellbereichs wird nur die Spalte " & vbCrLf & _
"aus der ersten Zelladresse ausgelesen)", _
Title:=msgTitel, Type:=8)
'Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
If Not rngSelect Is Nothing Then
'Ermittlung der Anzahl von Spalten, welche zwischen der letzten und der Suchspalte liegen
spdiff = lspalte + 1 - rngSelect.Column
'vorhandene bedingte Formatierung löschen
Cells.FormatConditions.Delete
'Hilfspalte anlegen
'Überschrift für Hilfsspalte
'Überschrift Hilfsspalte
Cells(1, lspalte + 1).FormulaR1C1 = "Hilfsspalte wg. bedingter Format."
'Formel Hilfspalte
Range(Cells(4, lspalte + 1), Cells(lzeile, lspalte + 1)).FormulaR1C1 = _
"=IF(SUBTOTAL(3,RC[-" & spdiff & "]),RC[-" & spdiff & "],R[-1]C)"
'bedingte Formatierung setzen
Range(Cells(4, 1), Cells(lzeile, lspalte + 1)).Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=REST(SUMMENPRODUKT(N(" & Cells(4, lspalte + 1).Address & ":" & Cells(4, lspalte + 1).  _
_
Address(0) & "" & Cells(4, lspalte + 1).Address & ":" & Cells(4, lspalte + 1).Address(0) & ")) _
;2)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.249946592608417
End With
Selection.FormatConditions(1).StopIfTrue = False
'Ausblenden der Hilfsspalte
Cells(1, lspalte + 1).Columns.EntireColumn.Hidden = True
Else
'MsgBox "Keine Zelle wurde ausgewählt!" & vbCrLf & "Das Makro wird beendet", _
vbOKOnly + vbInformation, "Hinweis"
End If
'Markieren von Zelle A2
Range("A2").Select
'Bildschirmaktualisierung einschalten
Application.ScreenUpdating = True
End Sub
Gruss
Dirk aus Dubai
Anzeige
AW: Syntaxfehler,läuft nicht, keine Formatierungen
02.06.2017 14:14:38
peterlijaba@gmail.com
Hallo Dirk
Danke für Deine geschätzte Unterstützung.
Das Script hatte einen Syntaxfehler, dieser habe ich wie folgt korrgiert:
Syntaxfehler:

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=REST(SUMMENPRODUKT(N(" & Cells(4, lspalte + 1).Address & ":" & Cells(4, lspalte + 1).  _
_
_
Address(0) & "" & Cells(4, lspalte + 1).Address & ":" & Cells(4, lspalte + 1).Address(0) & ")) _
_
;2)"

Korrigiert:
"=REST(SUMMENPRODUKT(N(" & Cells(4, lspalte + 1).Address & ":" & Cells(4, lspalte + 1). _
Address(0) & "" & Cells(4, lspalte + 1).Address & ":" & Cells(4, lspalte + 1).Address(0) & ")) _;2)"
Jedoch funktioniert das Script nicht, mit F8 sehe ich, dass der richtige Bereich markiert wird, jedoch werden keine Formatierungen vorgenommen.
Was muss ich korrigieren?
Danke Dir.
Viele Grüsse,
Peter
Anzeige
AW: Syntaxfehler,läuft nicht, keine Formatierungen
02.06.2017 14:27:00
Daniel
Hi
wenn eine Programmzeile zu lang ist, kann man ja VBA-Editor die Programmzeile mit Leerzeichen - Unterstrich - Zeilenumbruch in der nächsten Textzeile fortsetzen.
diese Zeilenschaltung fügt die Software dieses Forums ebenfalls automatisch ein, wenn die Zeile für den Bildschirm zu lang wird.
Nur leider macht es die Forensoftware oft nicht an der passenden Stelle.
Daher sollte man, wenn man den Code kopiert und sowas vorkommt, diesen Zeilenumbruch entfernen und alles wieder in eine Zeile schreiben.
damit der Code funktioniert, muss man aber alle 3 Zeichen löschen: Leerzeichen - Unterstrich - Zeilenumbruch.
du hast jedoch nur den Zeilenumbruch gelöscht, aber nicht das Leerzeichen und den Unterstrich.
Dadurch ist die Formel für die bedingte Formatierung fehlerhaft und kann nicht berechnet werden.
Gruß Daniel
Anzeige
AW: Läuft trotzdem nicht, mach ich was falsch?
02.06.2017 15:10:47
peterlijaba@gmail.com
Hallo Daniel
Funktioniert trotzdem nicht....
Ich habe mal eine Testdatei hochgeladen.
https://www.herber.de/bbs/user/113986.xlsm
'bedingte Formatierung setzen
Range(Cells(4, 1), Cells(lzeile, lspalte + 1)).Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=REST(SUMMENPRODUKT(N(" & Cells(4, lspalte + 1).Address & ":" & Cells(4, lspalte + 1). _
Address(0) & "" & Cells(4, lspalte + 1).Address & ":" & Cells(4, lspalte + 1).Address(0) & "));2)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.249946592608417
End With
Selection.FormatConditions(1).StopIfTrue = False
mach ich was falsch, oder stimmt was mit dem Code nicht?
Danke
Viele Grüsse,
Peter
Anzeige
AW: Läuft trotzdem nicht, mach ich was falsch?
02.06.2017 15:22:37
Daniel
ehrlich gesagt, keine Ahnung, ich hatte jetzt nur auf den technischen Aspekt des Codes geschaut.
die Formel zur Berechnung sagt mir nichts, vielleicht solltest du die nochmal überprüfen.
Gruß Daniel
AW: Läuft trotzdem nicht, mach ich was falsch?
02.06.2017 15:24:51
dirk
Hallo!
ich habe das mal nachgeprüft, und das Macro macht genau, was es soll. Wie soll denn Deine Tabelle farblich aussehen?
Gruss
Dirk aus Dubai

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige