Makro Zellen färben
#1
Hallo Ihr Lieben,

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.


Angehängte Dateien Thumbnail(s)
   
Top
#2
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
[-] Folgende(r) 1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag:
  • Janemu
Top
#3
(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?


Angehängte Dateien Thumbnail(s)
   
Top
#4
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.

CDEFGHIJKLMN
6511111

ZelleFormatWert
F60;0;1

ZelleFormel
F6=N(SPALTE(A1)<=$C6)

Zellebedingte Formatierung...Format
F61: F6=1abc
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

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)
Top
#5
Zu Deiner letzten Frage:
Bei mir musst Du die Bereiche der drei Einstellungen einfach nur erweitern.
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)
Top
#6
Ich lade die erweiterte Datei mal hoch.


Angehängte Dateien
.xlsx   CEF Zellenfarbe.xlsx (Größe: 13,22 KB / Downloads: 6)
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)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Janemu
Top
#7
Hallo

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
Top
#8
Hallo

ach du hast noch Rahmenlinien drin

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")).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
MfG Tom
Top
#9
Wink 
(29.11.2017, 09:09)Crazy Tom schrieb: Hallo

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...
Top
#10
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)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste