Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
27.02.2015, 12:42
(Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2015, 13: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, 12: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, 20: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, 21:17
(Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2015, 21: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.Unprotect
und im Else-Teil dann
Else
.
.
Me.Protect Password:="xxx"
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
27.02.2015, 21:25
(Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2015, 21: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)
|