Supportnet Computer
Planet of Tech

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

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

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

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