Textfeld anzeigen, wenn A1=1
#1
Question 
hi, wie kann ich ein Textfeld samt Inhalt nur anzeigen lassen, wenn A1=1 ist?

Ich kann zwar so nur den Inhalt anzeigen lassen: https://support.office.com/de-de/article...d112c2099f
Jedoch das leere Textfeld wird auch angezeigt, wenn das Feld mit dem Inhalt leer ist. Und das soll ja eben nicht sein.

lieben Dank

Julia :)
Top
#2
Hallo Julia,

das geht meines Wissens nur mit VBA. Ist das für dich in Ordnung?

Wenn das Feld A1 manuel geändert wird über das Change-Ereignis.
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Range("A1").Value <> 1 Then
        ActiveSheet.Shapes.Range(Array("TextBox 3")).Visible = False
    Else
        ActiveSheet.Shapes.Range(Array("TextBox 3")).Visible = True
    End If
End Sub

Ansonsten über das Calculate Ereignis
Code:
Private Sub Worksheet_Calculate()
    If Range("A1").Value <> 1 Then
        ActiveSheet.Shapes.Range(Array("TextBox 3")).Visible = False
    Else
        ActiveSheet.Shapes.Range(Array("TextBox 3")).Visible = True
    End If
End Sub
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Top
#3
Danke Dir, Ego. Ich habe beide Varianten durchprobiert. Natürlich auf meine Textboxnummer(also Textbox 4) bezogen. Aber beide funktinieren nicht. Ich habe auch mal Textbox durch Textfeld 4 ersetzt, weil das Textfeld mir so angezeigt wird obenlinks.

Ich verstehe den Unterschied nicht zwischen den beiden Varianten.
Ich dachte das hier wäre auch nur der Name des Makros, also die 1. Zeile:

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Top
#4
(13.02.2017, 20:48)Ego schrieb: Hallo Julia,

das geht meines Wissens nur mit VBA. Ist das für dich in Ordnung?
...

Hallo, warum sollte das nur mit VBA gehen..? Das kommt, denke ich, auf das konkrete Beispiel an ...
Gruß Jörg
stolzes Mitglied im ----Excel-Verein
Freund einer excellenten Power Query-Abfrage
Top
#5
Hallo Julia,

"Worksheet_Change" und "Worksheet_Calculate" sind in Excelereignisse zu einem Arbeitsblatt.
Die Makros müssen im VBA-Editor unbedingt mit diesen Namen in das Modul zum entsprechenden Arbeitsblatt.

Falls in einem Arbeitsblatt eine Eingabe erfolgte, sucht Excel automatisch ob es in dem Modul diese Arbeitsblattes ein Makro mit dem Namen "Worksheet_Change" vorhanden ist und führt dieses aus.

Falls in einem Arbeitsblatt eine Zelle neu berechnet wurde, sucht Excel automatisch ob es in dem Modul diese Arbeitsblattes ein Makro mit dem Namen "Worksheet_Calculate" vorhanden ist und führt dieses aus.

Du kannst den code dieser Makros auch in ein anderes Makro schreiben, dann must du dieses Makro nur selbst anstossen.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Top
#6
Hallo Jockel,

was ist an diesem Beispiel nicht konkret genug?
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Top
#7
Hallo,

das Ganze könnte auch so zusammengestutzt werden:

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
   ActiveSheet.Shapes("Textfeld 1").Visible = Range("A1").Value = 1
End Sub


Wobei ich mir angewöhnt habe, bei Change auf Änderungen einer bestimmten Zelle oder einer bestimmten Zelle in einem Bereich zu schauen um eine bestimmte Aktion zu starten.

Viele Worte für das hier:

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
 If Target.Address(0, 0) = "A1" Then
     ActiveSheet.Shapes("Textfeld 1").Visible = Range("A1").Value = 1
 End If
End Sub
Gruß Atilla
Top
#8
(15.02.2017, 21:08)Ego schrieb: "Worksheet_Change" und "Worksheet_Calculate" sind in Excelereignisse zu einem Arbeitsblatt.
So sieht das aus:
[url=
Dateiupload bitte im Forum! So geht es: Klick mich!
]
Wenn ich jetzt hinter Private_Sub Benotung schreibe, dann gilt dieses Makro nur für das Arbeitsblatt "Benotung"?
Wenn ich jetzt hinter Private_Sub Change schreibe, dann gilt dieses Makro nur für das Arbeitsblatt "Change"?

Und dieses (ByVal Target As Excel.Range) hat dann eine tatsächliche Funktion? Also das heißt, wenn ich in dem Arbeitsblatt in dem angegebenem Feld etwas ändere, dann wird das Marko ausgeführt?
Und das andereMakro (ohne (ByVal Target As Excel.Range) auch, wenn auf dem Arbeitsblatt in dem angegebenem Feld =B1 steht und ich B1 ändere?
(15.02.2017, 21:08)Ego schrieb:    Ego
   Die Makros müssen im VBA-Editor unbedingt mit diesen Namen in das Modul zum entsprechenden Arbeitsblatt.
Das habe ich nicht verstanden. Wie mache ich das? Ich habe in VBA 8 Module. Die sind nach und nach automatisch hinzugekommen, wenn ich Makros aufgezeichnet & gelöscht habe. In ein solches Modul habe ich auch deine Codes geschrieben.
Top
#9
Hallo Julia,



dat geht so nich!

schau mal unter folgendem Link, besonders Beispiel2:  Dropdowns in Modulen
Gruß Atilla
Top
#10
(15.02.2017, 21:11)Ego schrieb: Hallo Jockel,

was ist an diesem Beispiel nicht konkret genug?

Hallo, es kommt immer darauf an, was der TE will für mich ist es ein Unterschied zwischen Betreff und geposteter Datei. Mein Beispiel mit einem Textfeld, wenn in A1 eine 1 steht, wäre also vergebene "Liebesmüh' ".. ...so oder so braucht's kein VBA...
Gruß Jörg
stolzes Mitglied im ----Excel-Verein
Freund einer excellenten Power Query-Abfrage
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste