MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 06.12.2018, 11:24   #1
alina1004
Neuer Benutzer
Neuer Benutzer
Konfus VBA - Textfeld unsichtbar machen, wenn ...

Hallo zusammen,

ich versuche seit geraumer Zeit etwas in Excel mit VBA zu programmieren. Ich habe schon einige ähnliche Sachverhalte in diversen Foren gefunden, aber wenn ich es in meiner Datei ausprobiere, erscheinen immer nur Fehlermeldungen. Und da VBA für mich Neuland ist, weiß ich nicht mehr weiter.
Und zwar möchte ich, dass ein Textfeld unsichtbar ist, wenn in einer der Zellen K7, K8, K9, K10 oder K11 eine 1 steht. Wenn in keiner dieser Zellen eine 1 steht, soll das Textfeld sichtbar sein.

Ich hoffe Ihr könnt mit den Angaben etwas anfangen und bedanke mich schonmal im Voraus
Alina
alina1004 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.12.2018, 11:37   #2
mrcojanes
MOF User
MOF User
Standard

Moin, du machst sehr wenige Angaben... So ?
Code:

Private Sub CommandButton1_Click()
Dim Rng As Range
Dim Wert As Long

Wert = 1
Set Rng = Worksheets("Tabelle1").Range("K7:K11").Find(Wert)
If Rng Is Nothing Then
    TextBox1.Visible = True
Else
 Exit Sub
 
End If

End Sub

Geändert von mrcojanes (06.12.2018 um 11:39 Uhr).
mrcojanes ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.12.2018, 11:39   #3
RPP63neu
MOF Meister
MOF Meister
Standard

Moin!
Mit einem Hauch weniger Code …
Code:

Private Sub Worksheet_Change(ByVal Target As Range)
  TextBox1.Visible = WorksheetFunction.CountIf(Range("K7:K11"), 1) > 0
End Sub
Gruß Ralf

__________________

Meine Logik war nicht fehlerhaft, nur meine Interpretation!
Tuvok
RPP63neu ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.12.2018, 11:42   #4
mrcojanes
MOF User
MOF User
Standard

Zitat:

Mit einem Hauch weniger Code …

Definitiv die bessere Lösung :P

Mal eine Frage dazu,

Zitat:

ByVal Target As Range

Wofür steht das ?
Also das Target as Range kann ich mir ja noch erklären, aber ByVal?
Ersatz für Dim ?
mrcojanes ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.12.2018, 11:52   #5
RPP63neu
MOF Meister
MOF Meister
Standard

Die Übergabeparameter in Ereignismakros sind festgelegt und dürfen nicht geändert werden.
Bevor ich hier meine Tastatur quäle, verweise ich (für den Unterschied ByVal – ByRef) auf jemanden, der dies bereits gemacht hat:
https://activevb.de/rubriken/faq/faq0131.html

__________________

Meine Logik war nicht fehlerhaft, nur meine Interpretation!
Tuvok
RPP63neu ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.12.2018, 12:01   #6
mrcojanes
MOF User
MOF User
Standard

Zitat:

Die Übergabeparameter in Ereignismakros sind festgelegt und dürfen nicht geändert werden.
Bevor ich hier meine Tastatur quäle, verweise ich (für den Unterschied ByVal – ByRef) auf jemanden, der dies bereits gemacht hat:
https://activevb.de/rubriken/faq/faq0131.html

Okay Danke Dir.
mrcojanes ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.12.2018, 12:22   #7
RPP63neu
MOF Meister
MOF Meister
Standard

Noch etwas, da Du ja interessiert erscheinst.
"Normalerweise" wertet man das Target auch aus, damit das _Change nicht unnötig rechnen muss.
Das hatte ich mir oben geschenkt, weil nicht zeitkritisch.
"Richtiger" wäre jedenfalls folgender Code:
Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim MeinBereich As Range: Set MeinBereich = Range("K7:K11")
If Not Intersect(Target, MeinBereich) Is Nothing Then
  TextBox1.Visible = WorksheetFunction.CountIf(MeinBereich, 1) > 0
End If
End Sub

__________________

Meine Logik war nicht fehlerhaft, nur meine Interpretation!
Tuvok
RPP63neu ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.12.2018, 13:02   #8
mrcojanes
MOF User
MOF User
Standard

Okay Interessant.

Zitat:

nicht zeitkritisch.

damit ist die performance gemeint, oder?

Ist ByVal nur für _Change anwendbar, oder wäre folgendes auch möglich;

Code:

Private Sub CommandButton1_Click(ByVal Target As Range)
Dim Rng As Range
Dim Wert As Long

Wert = 1
Set Rng = Worksheets("Tabelle1").Range("K7:K11").Find(Wert)
If Not (Target, Rng) Is Not Nothing Then
    TextBox1.Visible = True
Else
      Exit Sub

End If

End Sub
EDIT: Mir ist grade eingefallen ich kann ja selbst Testen... und es geht wohl nicht.

Geändert von mrcojanes (06.12.2018 um 13:06 Uhr).
mrcojanes ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.12.2018, 13:09   #9
RPP63neu
MOF Meister
MOF Meister
Standard

Wie oben bereits geschrieben:

Zitat:

Die Übergabeparameter in Ereignismakros sind festgelegt und dürfen nicht geändert werden.

Das musst Du Dir aber alles gar nicht merken (habe ich auch nicht ).
Schließlich helfen Dir die Dropdowns in der Entwicklungsumgebung dabei, dass Du nichts falsch machen kannst.
Als Einstieg wunderbar geeignet:
https://www.online-excel.de/excel/singsel_vba.php?f=160

__________________

Meine Logik war nicht fehlerhaft, nur meine Interpretation!
Tuvok
RPP63neu ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.12.2018, 13:12   #10
mrcojanes
MOF User
MOF User
Standard

Zitat:

Die Übergabeparameter in Ereignismakros sind festgelegt und dürfen nicht geändert werden.

ahh richtig!

Danke dir!
mrcojanes ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.12.2018, 13:22   #11
alina1004
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hey, erst mal vielen Dank für eure Antworten!

@RPP63neu
Der Code funktioniert nur, wenn das Textfeld ein ActiveX-Steuerelement ist, oder?
Geht das auch, wenn das Textfeld ganz normal mit Excel eingefügt wurde?
alina1004 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.12.2018, 13:36   #12
RPP63neu
MOF Meister
MOF Meister
Standard

Nun, der Code funktioniert auch bei Textfeldern.
Allerdings musst Du das Shape entsprechend adressieren:
(Me steht für die Tabelle, in der der Code steht)
Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim MeinBereich As Range: Set MeinBereich = Range("K7:K11")
If Not Intersect(Target, MeinBereich) Is Nothing Then
  Me.Shapes("TextBox 1").Visible = WorksheetFunction.CountIf(MeinBereich, 1) > 0
End If
End Sub
Gruß Ralf

__________________

Meine Logik war nicht fehlerhaft, nur meine Interpretation!
Tuvok
RPP63neu ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.12.2018, 14:02   #13
alina1004
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ich habe den Code jetzt wie folgt, aber es klappt leider nicht.

Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim MeinBereich As Range: Set MeinBereich = Range("K7:K11")
If Not Intersect(Target, MeinBereich) Is Nothing Then
  Me.Shapes("Textfeld 2").Visible = WorksheetFunction.CountIf(MeinBereich, 1) > 0
End If
End Sub
Die Einsen in den Zellen K7 bis K11 werden erzeugt, wenn ein Optionsfeld ausgewählt ist. Könnte es daran liegen?

Geändert von alina1004 (06.12.2018 um 14:10 Uhr).
alina1004 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.12.2018, 14:13   #14
RPP63neu
MOF Meister
MOF Meister
Standard

Weißt Du, wie ich Salami mag?
In hauchdünnen Scheiben auf einer Pizza!
Jedenfalls nicht als Taktik in einem Thread …
Jedenfalls lösen Formularsteuerelemente kein auswertbares Ereignis aus.

Zeigst Du mal die Datei, bevor das hier ins endlose abgleitet?

__________________

Meine Logik war nicht fehlerhaft, nur meine Interpretation!
Tuvok
RPP63neu ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.12.2018, 20:51   #15
alina1004
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Okay, hier die Datei.
Also nochmal kurz eine Erklärung, um was es geht: Die Checkboxen generieren eine 1 in der Spalte K, wenn "ja" ausgewählt ist und eine 2, wenn "nein" ausgewählt ist. Sobald in einer der Zeilen 7-11 einmal ja ausgewählt wurde, erscheint der ganze rechte Teil mithilfe bedingter Formatierung. Mein Problem ist jetzt, dass das bei den Checkboxen auf diese Weise nicht möglich ist. Wenn in diesen Zeilen keinmal "ja" ausgewählt ist, sieht man rechts trotzdem die 2 Checkboxen. Das weiße Textfeld soll dafür sorgen, dass man sie nicht sieht. Man kann wahrscheinlich auch die Checkboxen mit einem VBA-Code unsichtbar machen, aber die Variante mit dem Textfeld kam mir irgendwie einfacher vor.
Der Grund warum Formularsteuerelemente verwendet wurden ist, dass die generierten Einsen und Zweien für eine Formel in der Zelle D13 gebraucht werden.

So, ich hoffe das ist jetzt hilfreicher. Tut mir leid, dass das jetzt so häppchenweise kam. Ich hatte nur gehofft, dass sich das schnell und einfach lösen lassen würde. Also vielen Dank für Deine Mühe.

Grüße,
Alina
Angehängte Dateien
Dateityp: xlsm Fragebogen.xlsm (50,2 KB, 4x aufgerufen)
alina1004 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:15 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.