Registriert seit: 08.07.2016
Version(en): 2016
29.01.2017, 23:53
(Dieser Beitrag wurde zuletzt bearbeitet: 29.01.2017, 23:54 von o0Julia0o.)
hi, ich habe ein Optionsfeld. Wenn es angehakt ist, soll Makro 1 aktiviert werden. Wenn es nicht angehakt ist, Makro 2. Wie geht das? Ich habe ein Makro aufgezeichnet und es steht unter Module1: Code: Sub N16OS() ' ' N16OS Makro '
' If Shapes("Check Box 1").DrawingObject.Value = 1 Then Range("AN6:AN40").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("T42:AI45").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("T41").Select Selection.Font.Bold = True ActiveWindow.SmallScroll Down:=-15 Else Range("AN6:AN40").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent4 .TintAndShade = 0.399975585192419 .PatternTintAndShade = 0 End With Range("T42:AI45").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent4 .TintAndShade = 0.399975585192419 .PatternTintAndShade = 0 End With Range("AJ4").Select End Sub
Ich habe die beiden Makros durch Else getrennt. Und ein If Shapes("Check Box 1").DrawingObject.Value = 1 Then vorrangestellt. Doch es funktioniert nicht: "Fehler beim Compilieren. Sub oder Function nicht definiert." Julia :)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Julia, Sub Kontrollkaestchen1_Klicken() If ActiveSheet.CheckBoxes(Application.Caller).Value = 1 Then With Range("AN6:AN40,T42:AI45").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("T41").Font.Bold = True Else With Range("AN6:AN40,T42:AI45").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent4 .TintAndShade = 0.399975585192419 .PatternTintAndShade = 0 End With Range("T41").Font.Bold = False End If End Sub Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• o0Julia0o
Registriert seit: 08.07.2016
Version(en): 2016
30.01.2017, 02:29
(Dieser Beitrag wurde zuletzt bearbeitet: 30.01.2017, 02:30 von o0Julia0o.)
wow, das funktioniert! Ich habe Sub Kontrollkaestchen1_Klicken() durch Sub OS() ersetzt, weil ich mir den Namen besser zuordnen kann. Jetzt soll er noch zusätzlich folgendes machen: Code: With Range( _ "AN6,AN8,AN10,AN12,AN14,AN16,AN18,AN20,AN22,AN24,AN26,AN28,AN30,AN32,AN34,AN36,AN38,AN40" _ ).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorDark2 .TintAndShade = -0.249977111117893 .PatternTintAndShade = 0
So sieht das dann aus insgesamt: Code: Sub OS2() If ActiveSheet.CheckBoxes(Application.Caller).Value = 1 Then With Range("AN6:AN40,T42:AI45").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("T41").Font.Bold = True Else With Range("AN6:AN40,T42:AI45").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent4 .TintAndShade = 0.399975585192419 .PatternTintAndShade = 0 End With With Range( _ "AN6,AN8,AN10,AN12,AN14,AN16,AN18,AN20,AN22,AN24,AN26,AN28,AN30,AN32,AN34,AN36,AN38,AN40" _ ).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorDark2 .TintAndShade = -0.249977111117893 .PatternTintAndShade = 0 End With Range("T41").Font.Bold = False End If End Sub
Dann bekomme ich aber eine Fehlermeldung: "End If ohne If-Block." Außerdem habe ich mir das Makro von Dir nochmal kopiert und unter deines direkt wieder eingefügt, um dort meine Änderung zu machen. Nur OS durch OS2 ersetzt. Wenn ich jetzt mein Makro verbinden möchte mit dem Optionsfeld kommt folgender Fehler: "Bezug muss ein Makroblatt betreffen.".
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Julia, ich habe Dir doch gezeigt, wie es ohne Select geht. ;-( Sub OS_2() If ActiveSheet.CheckBoxes(Application.Caller).Value = 1 Then With Range("AN6:AN40,T42:AI45").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("T41").Font.Bold = True Else With Range("AN6:AN40,T42:AI45").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent4 .TintAndShade = 0.399975585192419 .PatternTintAndShade = 0 End With With Range("AN6,AN8,AN10,AN12,AN14,AN16,AN18,AN20,AN22,AN24,AN26,AN28,AN30,AN32,AN34,AN36,AN38,AN40").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorDark2 .TintAndShade = -0.249977111117893 .PatternTintAndShade = 0 End With Range("T41").Font.Bold = False End If End Sub Das solltest Du mal in Ruhe durchgehen: Achtung Makrorekorder oder Wer selektiert denn da? (30.01.2017, 02:29)o0Julia0o schrieb: Außerdem habe ich mir das Makro von Dir nochmal kopiert und unter deines direkt wieder eingefügt, um dort meine Änderung zu machen. Nur OS durch OS2 ersetzt. Wenn ich jetzt mein Makro verbinden möchte mit dem Optionsfeld kommt folgender Fehler: "Bezug muss ein Makroblatt betreffen.". Guckst Du: Fehlerquellen (1) - Namen von Routinen (Makros)Gruß Uwe
Registriert seit: 08.07.2016
Version(en): 2016
Registriert seit: 29.09.2015
Version(en): 2030,5
Vermeide überflüssigkeiten: Code: Sub OS_2() If ActiveSheet.CheckBoxes(Application.Caller).Value = 1 Then With Range("AN6:AN40,T42:AI45").Interior .Pattern = xlSolid ' überflüssig .PatternColorIndex = xlAutomatic ' überflüssig .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 ' überflüssig End With Range("T41").Font.Bold = True Else With Range("AN6:AN40,T42:AI45").Interior .Pattern = xlSolid ' überflüssig .PatternColorIndex = xlAutomatic ' überflüssig .ThemeColor = xlThemeColorAccent4 .TintAndShade = 0.399975585192419 .PatternTintAndShade = 0' überflüssig End With With Range("AN6,AN8,AN10,AN12,AN14,AN16,AN18,AN20,AN22,AN24,AN26,AN28,AN30,AN32,AN34,AN36,AN38,AN40").Interior .Pattern = xlSolid ' überflüssig .PatternColorIndex = xlAutomatic ' überflüssig .ThemeColor = xlThemeColorDark2 .TintAndShade = -0.249977111117893 .PatternTintAndShade = 0' überflüssig End With Range("T41").Font.Bold = False End If End Sub
Dann reicht Code: Sub OS_2() Range("T41").Font.Bold = ActiveSheet.CheckBoxes(Application.Caller).Value = 1
If ActiveSheet.CheckBoxes(Application.Caller).Value = 1 Then With Range("AN6:AN40,T42:AI45").Interior .Color = 65535 .TintAndShade = 0 End With Else With Range("AN6:AN40,T42:AI45").Interior .ThemeColor = xlThemeColorAccent4 .TintAndShade = 0.399975585192419 End With With Range("AN6,AN8,AN10,AN12,AN14,AN16,AN18,AN20,AN22,AN24,AN26,AN28,AN30,AN32,AN34,AN36,AN38,AN40").Interior .ThemeColor = xlThemeColorDark2 .TintAndShade = -0.249977111117893 End With End If End Sub
Registriert seit: 08.07.2016
Version(en): 2016
o.k., danke für die Optimierung. Das kann man ja kaum alles wissen, warum jetzt PatternTintAndShade überflüssig, aber TintAndShade nicht überflüssig ist.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Julia, (30.01.2017, 19:22)o0Julia0o schrieb: o.k., danke für die Optimierung. Das kann man ja kaum alles wissen, warum jetzt PatternTintAndShade überflüssig, aber TintAndShade nicht überflüssig ist. da brauchst Du Dir jetzt keine Gedanken machen, dass/ob dies "überflüssig" ist, denn es schadet auch nicht. Im Gegensatz zum meist überflüssigen Select/Activate. snb ist nicht gerade ein Vorbildprogrammierer, denn er hält bspw. auch Variablendeklarationen und "Option Explicit" für überflüssig. Gruß Uwe
Registriert seit: 29.09.2015
Version(en): 2030,5
30.01.2017, 23:49
(Dieser Beitrag wurde zuletzt bearbeitet: 30.01.2017, 23:49 von snb.)
(30.01.2017, 22:37)Kuwer schrieb: snb ist nicht gerade ein Vorbildprogrammierer, denn er hält bspw. auch Variablendeklarationen und "Option Explicit" für überflüssig.  Andere Helfer bewerten ist, dem Forenreglen gemäß, Zitat:Der Umgang miteinander
Respektiere Meinungen, auch wenn du sie nicht teilst. Jeder kann seine Ansicht kundtun, aber bitte in entsprechend friedlicher Art überflüssig. Bitte verzichte darauf.
Registriert seit: 08.07.2016
Version(en): 2016
Wenn ich nun das Blatt schütze & das Makro ausführe erhalte ich einen Fehlermeldung(Laufzeitfehler 1004, anwendungs- oder objektdefinierter Fehler) & es wird nicht ausgeführt. Ich habe die Felder welche verändert werden vom Blattschutz ausgenommen. Über deren Feldeigenschaften das Häkchen weggenommen. Auch von den Steuerelementen, womit ich das Makro ausführe.
|