ich habe jetzt schon gefühlt komplett Google durchsucht nach einer Lösung.. Ich bin leider Anfänger was Makros angeht... ich schreibe mir aus verschiedenen immer mal was zusammen.
Jetzt benötige ich aber eure Hilfe...
Ich suche ein Makro, welches mit nach Vorgabe (Zahl) eine bestimmte Anzahl von Zellen nach rechts oder links einfärbt und/oder eine 1 reinschreibt...
Das heißt, ich schreibe in C6 eine 5 und dann soll Excel mir die Zellen (5 Stück) in einem Bereich von G6:AL6 einfärben oder halt eine 1 reinschreiben.
Sub test() Dim lngLaenge As Long lngLaenge = Range("C6").Value Range("G6:AL6").Clear Cells(6, 7).Resize(1, lngLaenge).Value = 1 Cells(6, 7).Resize(1, lngLaenge).Interior.ColorIndex = 6 End Sub
MfG Tom
Folgende(r) 1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag:1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag 28 • Janemu
29.11.2017, 09:02 (Dieser Beitrag wurde zuletzt bearbeitet: 29.11.2017, 09:05 von Janemu.)
(29.11.2017, 08:58)Crazy Tom schrieb: moinmoin
eine Möglichkeit
Code:
Sub test() Dim lngLaenge As Long lngLaenge = Range("C6").Value Range("G6:AL6").Clear Cells(6, 7).Resize(1, lngLaenge).Value = 1 Cells(6, 7).Resize(1, lngLaenge).Interior.ColorIndex = 6 End Sub
MfG Tom
Dankeschön :) Das funktioniert ja richtig spitze.
Wie müsste ich den Code den anpassen, wenn ich das über mehrere Zeilen hätte? (Beispiel angehängt) Muss ich dann einfach ab "Cells..." bis "=6" kopieren und einfach nur anpassen?
Nachtrag: Kann man eventuell die Tabelle irgendwie beibehalten?
29.11.2017, 09:02 (Dieser Beitrag wurde zuletzt bearbeitet: 29.11.2017, 09:03 von RPP63.)
Moin! Beides geht ohne VBA. Beachte das ben. def. Zahlenformat, die Formel und die bedingte Formatierung. Alles drei wird angewendet auf den Bereich [F6:Z6] Statt Z geht natürlich auch beliebig weit rechts, je nachdem, was Dein beabsichtigtes Maximum in C6 ist.
C
D
E
F
G
H
I
J
K
L
M
N
6
5
1
1
1
1
1
Zelle
Format
Wert
F6
0;0;
1
Zelle
Formel
F6
=N(SPALTE(A1)<=$C6)
Zelle
bedingte Formatierung...
Format
F6
1: F6=1
abc
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
dann würde ich es gleich bei Eingabe in eine Zelle in Spalte C auslösen dazu diesen Code in das Tabellenblattmodul
Code:
Private Sub Worksheet_Change(ByVal Target As Range) Dim lngLaenge As Long If Not IsNumeric(Target.Value) Then Exit Sub If Not Intersect(Target, Range("C6:C100")) Is Nothing Then lngLaenge = Cells(Target.Row, 3).Value Range(Cells(Target.Row, 7), Cells(Target.Row, "AL")).Clear Cells(Target.Row, 7).Resize(1, lngLaenge).Value = 1 Cells(Target.Row, 7).Resize(1, lngLaenge).Interior.ColorIndex = 6 End If End Sub
hier wirkt der Code bei Eingabe einer Zahl in den Zellen C6 bis C100 MfG Tom
Private Sub Worksheet_Change(ByVal Target As Range) Dim lngLaenge As Long If Not IsNumeric(Target.Value) Then Exit Sub If Not Intersect(Target, Range("C6:C100")) Is Nothing Then lngLaenge = Cells(Target.Row, 3).Value Range(Cells(Target.Row, 7), Cells(Target.Row, "AL")).ClearContents Range(Cells(Target.Row, 7), Cells(Target.Row, "AL")).Interior.ColorIndex = xlNone Cells(Target.Row, 7).Resize(1, lngLaenge).Value = 1 Cells(Target.Row, 7).Resize(1, lngLaenge).Interior.ColorIndex = 6 End If End Sub
dann würde ich es gleich bei Eingabe in eine Zelle in Spalte C auslösen dazu diesen Code in das Tabellenblattmodul
Code:
Private Sub Worksheet_Change(ByVal Target As Range) Dim lngLaenge As Long If Not IsNumeric(Target.Value) Then Exit Sub If Not Intersect(Target, Range("C6:C100")) Is Nothing Then lngLaenge = Cells(Target.Row, 3).Value Range(Cells(Target.Row, 7), Cells(Target.Row, "AL")).Clear Cells(Target.Row, 7).Resize(1, lngLaenge).Value = 1 Cells(Target.Row, 7).Resize(1, lngLaenge).Interior.ColorIndex = 6 End If End Sub
hier wirkt der Code bei Eingabe einer Zahl in den Zellen C6 bis C100 MfG Tom
Dankeschön :)
Ich bekomme es leider nicht eingefügt :( Ich sage ja ich bin Anfänger...
Gerade als Anfänger solltest Du imo Makros nur dann nutzen, wenn sie signifikante Vorteile bieten, was hier nicht der Fall ist. Hast Du Dir meine Datei mal angesehen?
By the way: Nutze zum Antworten den gleichnamigen Button und zitiere nicht unnötig.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)