Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
27.02.2015, 13:42
(Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2015, 14:02 von Kuwer.)
H Günter,
ich vergaß leider das rot markierte:
If Target.Address = "$J$1" Then If Sheets("Daten").Visible = -1 Then Mit True oder False ist es leider nicht getan:
-1 - xlSheetVisible = True 0 - xlSheetHidden = False 2 - xlSheetVeryHidden = True
Gruß Uwe
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Uwe,
it's really true :21:
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Hi Uwe, (27.02.2015, 13:42)Kuwer schrieb: H Günter,
ich vergaß leider das rot markierte:
If Target.Address = "$J$1" Then If Sheets("Daten").Visible = -1 Then Mit True oder False ist es leider nicht getan:
-1 - xlSheetVisible = True 0 - xlSheetHidden = False 2 - xlSheetVeryHidden = True
Gruß Uwe ok, so wie ich das verstanden habe, ersetzen die Ziffern die einzelnen Blattzustände. Was ich nun nicht verstehe, ist dein Satz, dass es mit True oder False nicht getan ist. Ich habe deshalb ein Verständnisproblem, weil ich, neugierig wie ich nun mal bin ;), das "-1" mit True ausgetauscht und zudem Andrés Rat Zitat:und Me.Range("H2").Activate durch Me.Activate Range("H2").Activate befolgt. Somit sieht das Makro so aus: Code: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'Doppelklick im Sheet "Ausgabe" von Uwe
If Target.Address = "$J$1" Then If Sheets("Daten").Visible = True Then Sheets("Daten").Visible = xlVeryHidden Me.Protect 'Password:="xxx" Else Sheets("Daten").Visible = True Me.Unprotect 'Password:="xxx" Me.Activate Range("H2").Activate End If Cancel = True End If End Sub
Das Ergebnis: 100 % das Ziel erreicht!! Was ist nun der Unterschied zwischen den herkömmlichen (soweit mir laienhaft bekannt) =TRUE oder =FALSE bei den verschiedenen Zuständen und den von dir gezeigten Zahlen. Was wird wann benutzt/benötigt? Und wieso muss das Aktivieren der Zelle H2 durch doppeltes "Activate" erfolgen? Ich erhalte zwar die Meldung über den Laufzeitfehler 1004, sobald ich das Makro mit auskommentierter Zeile "Me.Activate" starte. Verstanden habe ich aber nicht warum. In so manchen Makros habe ich die Aktivierung einer Zelle durch einfaches "Range("xx").Activate" gesehen. Über ein paar erklärende Worte würde ich mich riesig freuen.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Günter,
wie ich schon scherzhaft schrieb, die -1 steht für TRUE. 0 und mehr dann für FALSE. Hintergrund ist, dass man anhand der Zahlen den Zustand False oder True auch berechnen kann. Du könntest z.B. eine Bedingung IF 4 - 3 Then ... setzen oder etwas in der Art a = 4 - 3 If a Then ... Das Beispiel ist jetzt zwar nicht besonders sinnvoll, aber manchmal ist das Prinzip schon zu gebrauchen.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo André, (27.02.2015, 21:10)schauan schrieb: wie ich schon scherzhaft schrieb, die -1 steht für TRUE. 0 und mehr dann für FALSE. ich meine, das mal anders gelesen zu haben: Alles was nicht 0 ist, ist wahr. Somit würde das 'und mehr dann für FALSE' nicht stimmen. Siehe auch das Beispiel von Uwe.
Gruß Stefan Win 10 / Office 2016
Registriert seit: 01.11.2014
Version(en): 2007, 2010
Hallo zusammen, das was Stefan schreibt, habe ich auch hier gelesen. Gruß Max
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, da hab ich wohl "mehr" geschrieben, als nötig. Siehe auch Code: Sub test() For i = -2 To 2 If i Then MsgBox "TRUE" & i Else MsgBox "FALSE" & i Next End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 01.11.2014
Version(en): 2007, 2010
27.02.2015, 22:17
(Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2015, 22:30 von Max.)
Hallo Günter, bei mir läuft das Makro auch mit folgender Zeile ohne Fehlermeldung Code: Me.Range("H2").Activate
Was ich allerdings nicht verstehe ist, warum Du für ein Blatt "xlVeryHidden" noch einen Blattschutz vergibst? Dieses Blatt kannst Du doch ohnehin nur über VBA wieder einblenden, oder? Gruß Max EDIT: Schnell das "h" in Günt(h)er entfernt  In Ergänzung: Du müsstest Deinen Code auch meiner Meinung nach im If-Statement ändern, andernfalls wird das Passwort nicht abgefragt: If... . . Me.Unprotectund im Else-Teil dann Else . . Me.Protect Password:="xxx"
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
27.02.2015, 22:25
(Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2015, 22:26 von Kuwer.)
Hi Günter, - alles ungleich Null ist Wahr/True. - If Sheets("Daten").Visible = True Then ist dasselbe wie If Sheets("Daten").Visible Then- das "von Uwe" im Code kannst Du weglassen, wenn es nicht der Code von Uwe ist  Was seltsam ist, ist, das es mit = True oder ganz weglassen von = True trotzdem anfangs manchmal funktioniert, bei mir auch, weshalb ich gar nicht weiter darüber nachdachte. Andrés Änderungen/Erweiterungen kann ich nicht beurteilen, weil ich den Sinn bezüglich einer Codeverbesserung nicht verstehe. So läuft es bei mir ohne Errors: Code: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'Doppelklick im Sheet "Ausgabe" If Target.Address = "$J$1" Then Cancel = True If Sheets("Daten").Visible = -1 Then Sheets("Daten").Visible = 2 Me.Protect Password:="xxx" Else Sheets("Daten").Visible = -1 Me.Unprotect Password:="xxx" Me.Range("H2").Activate End If End If End Sub
Gruß Uwe PS: Einrückungen werden im CODE-Tag verändert!
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Hallo Freunde,
ganz herzlichen Dank nochmals an alle Helfer.
Ich habe nun 2 funktionierende Makros, den Vorschlag von Edgar arbeite ich in ruhiger Minute nochmals durch. Danke auch für die Erklärungen, die mich wieder ein Stückchen (VBA-)klüger werden ließen.
@Max Ich kenne ja die Seiten von Peter Haserodt, trotzdem habe ich nicht daran gedacht, hier wieder mal zu stöbern. Schande :29:
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
|