Supportnet / Forum / Tabellenkalkulation
Makro zum Färben von Excel-Zellen durch Funktion starten
Frage
Hallo Leute,
ich habe mir in Excel das folgende Makro zum Färben einer Zelle gebastelt.
Sub Faerben()
ThisWorkbook.Sheets("Tabelle2").Visible = True
Sheets("Tabelle2").Select
Range("C3").Select
Selection.Interior.ColorIndex = 6
End Sub
Wenn ich das Makro manuell starte klappt das ohne Probleme.
Jetzt möchte ich diese Sub bei Bedarf durch eine Funktion aufrufen:
Habe in einer Funktion schon mit Call bzw. Application.run gearbeitet, aber es passiert nichts; keine Farbe, aber auch keine Fehlermeldung.
Kann mir vielleicht jemand sagen, wie ich eine solche Sub korrekt aufrufe?
Besten Dank schon mal.
Gruß
Stefan
Antwort 1 von JoeKe
Moin Stefan,
erstmal nen kleiner tip verwende nicht so viel select oder selection ist in den meisten fällen nicht notwendig.
Sub Faerben()
ThisWorkbook.Sheets("Tabelle2").Visible = True
Sheets("Tabelle2").Select
Range("C3").Interior.ColorIndex = 6
End Sub
reicht auch.
So und nun zu deinem Prob. Leider beschreibst du nicht wie die Funktion aussehen soll aus der dein Code ausgeführt werden soll, deshalb mein Tipp verwende eine IF-Endscheidung.
also etwa so:
Sub Test()
IF Range("A1") = 1 Then
ThisWorkbook.Sheets("Tabelle2").Visible = True
Sheets("Tabelle2").Select
Range("C3").Interior.ColorIndex = 6
Exit Sub
End If
End Sub
MfG JöKe
erstmal nen kleiner tip verwende nicht so viel select oder selection ist in den meisten fällen nicht notwendig.
Sub Faerben()
ThisWorkbook.Sheets("Tabelle2").Visible = True
Sheets("Tabelle2").Select
Range("C3").Interior.ColorIndex = 6
End Sub
reicht auch.
So und nun zu deinem Prob. Leider beschreibst du nicht wie die Funktion aussehen soll aus der dein Code ausgeführt werden soll, deshalb mein Tipp verwende eine IF-Endscheidung.
also etwa so:
Sub Test()
IF Range("A1") = 1 Then
ThisWorkbook.Sheets("Tabelle2").Visible = True
Sheets("Tabelle2").Select
Range("C3").Interior.ColorIndex = 6
Exit Sub
End If
End Sub
MfG JöKe
Antwort 2 von nighty
hi stefan :)
eine function gibt einen wert zurueck net mehr und net weniger ,kann also keine direkten bzw gezielte aenderung herbeifuehren :))
gruss nighty
eine function gibt einen wert zurueck net mehr und net weniger ,kann also keine direkten bzw gezielte aenderung herbeifuehren :))
gruss nighty
Antwort 3 von nighty
hi stefan :)
man koennte noch ein wenig tricksen,doch bedenke das es bei diesem beispiel schnell zu extremen gechwindigkeitseinbussen kommen koennte :))
gruss nighty
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If fest <> Range("A3") Then
fest = Range("A3")
makro01
End If
Application.EnableEvents = True
End Sub
Sub makro02()
Public fest As Variant
End Sub
Sub makro01()
Cells(1, 1) = Cells(1, 1) + 1
End Sub
man koennte noch ein wenig tricksen,doch bedenke das es bei diesem beispiel schnell zu extremen gechwindigkeitseinbussen kommen koennte :))
gruss nighty
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If fest <> Range("A3") Then
fest = Range("A3")
makro01
End If
Application.EnableEvents = True
End Sub
Sub makro02()
Public fest As Variant
End Sub
Sub makro01()
Cells(1, 1) = Cells(1, 1) + 1
End Sub
Antwort 4 von nighty
hi stefan :)
hier noch eine variante ohne select zum ueben :))
gruss nighty
Option Explicit
Sub Test()
With Sheets(2)
If Sheets(1).[a1] = 1 Then .Visible = True: .[c3].Interior.ColorIndex = 6
End With
End Sub
hier noch eine variante ohne select zum ueben :))
gruss nighty
Option Explicit
Sub Test()
With Sheets(2)
If Sheets(1).[a1] = 1 Then .Visible = True: .[c3].Interior.ColorIndex = 6
End With
End Sub

