vba Fehler bei Textbox

pcfreak35

Ensign
Registriert
Nov. 2007
Beiträge
171
Hallo,
ich habe in Excel 3 verschiedene Arbeitsblätter, in denen oben jeweils eine Textbox vorhanden ist, in die man einen 3-stelligen Wert eingeben kann.
Passend dazu gibt es eine Suchfunktion, diese hab ich jetzt in ein Modul ausgelagert, nachdem die zuvor jeweils im Arbeitsblatt waren.
Jetzt geht nur leider nichts mehr, da anscheinend die Textbox nicht mehr angesprochen wird. Es wir nur das aktive Arbeitsblatt als visible gesetzt, von daher ist auch nur eine TextBox sichtbar.

Jetzt habe ich versucht über eine If funktion die Variable tb zu definieren, wobei mir aber der Fehler "Typen unverträglich" ausgeworfen wird. Ich habe versucht, dass alle Boxen den gleichen Namen haben und jede eine andere Ziffer am Ende, beides ohne Erfolg.

Vielleicht kann mir ja einer von euch helfen :)

das ganze sieht so aus:

If Worksheets("EB").Visible = True Then
Set ws = Worksheets("EB")
Set tb = TB_Kst_1

Else

If Worksheets("EK").Visible = True Then
Set ws = Worksheets("EK")
Set tb = TB_Kst_2
Else

If Worksheets("S").Visible = True Then
Set ws = Worksheets("S")
End If
End If
End If

frei ws.Name

If tb = "" Then .........
 
Ich kann ja nicht deinen ganzen Code sehen aber sofern du TB_Kst_1 nicht irgendwo weiter oben als variable vom typ string definiert hast kannst du auch unten nicht gut mit "" vergleichen
 
wie meinst du das genau mit dem String? Kannst du mir das mal in den Code schreiben?
Bin in VBA recht unerfahren.:)

der ganze code sieht so aus:

ublic Sub Filter()
Dim ws

If Worksheets("EB").Visible = True Then
Set ws = Worksheets("EB")
Set tb = TB_Kst_1

Else

If Worksheets("EK").Visible = True Then
Set ws = Worksheets("EK")
Set tb = TB_Kst_2

Else

If Worksheets("S").Visible = True Then
Set ws = Worksheets("S")
Set tb = TB_Kst_3

End If
End If
End If

frei ws.Name

If tb = "" Then
With ws

'setze Autofilter zurück
.Range("A6:P65536").AutoFilter Field:=16

'lösche Status "WAHR" oder "FALSCH" in Spalte "gefiltert"
.Range("P6:P65536").ClearContents

End With
Else
Ergänzung ()

bzw. nicht der ganze, der wäre etwas lang. Aber das ist der Teil wo ich die Textbox benötige. Da fehlt oben auch das P von Public, fällt mir auf.
 
Hab ich auch gerade eingefügt, jetzt sieht das ganze so aus und der Fehler Objekt erforderlich kommt.

Public Sub Filter()
Dim ws as Worksheet
Dim tb As MSForms.TextBox

If Worksheets("EB").Visible = True Then
Set ws = Worksheets("EB")

Else

If Worksheets("EK").Visible = True Then
Set ws = Worksheets("EK")
Else

If Worksheets("S").Visible = True Then
Set ws = Worksheets("S")
End If
End If
End If


frei ws.Name
Set tb = ws.Name.TB_Kst
 
Zuletzt bearbeitet:
Du solltest uns vielleicht immer die Zeile markieren in der der Fehler kommt, dann sehn wir das Problem vermutl schneller...

Jedenfalls hast du jetzt die if gestrichen und die Textbox weider umbenannt oder wieso ist jetzt wieder ohne 1,2,3 hinten?
 
Oh, ja sorry.
Ich hab jetzt das alles aus der If Funktion rausgezogen, damit die If Funktion kürzer ist.
Die Textboxen heißen jetzt alle TB_Kst, scheint wohl egal zu sein, ob die alle andere Bezeichnungen haben.

Fehler entsteht in der letzten Zeile.

Public Sub Filter()
Dim ws as Worksheet
Dim tb As MSForms.TextBox

If Worksheets("EB").Visible = True Then
Set ws = Worksheets("EB")

Else

If Worksheets("EK").Visible = True Then
Set ws = Worksheets("EK")
Else

If Worksheets("S").Visible = True Then
Set ws = Worksheets("S")
End If
End If
End If


frei ws.Name
Set tb = ws.Name.TB_Kst
 
Und du bist sicher dass da
Set tb = ws.Name.TB_Kst gehört und nicht nur
Set tb = ws.TB_Kst ?

Ich bin mehr ein Freund von vbs als vba aber das erscheint mir merkwürdig von der konvention her
 
also falls das hilft:

Gedanke war jetzt, sobald durch die If Funktion bestimmt wurde, welches Blatt sichtbar ist, wird die Textbox aus diesem Blatt als tb definiert. Dachte mir, dadurch entfällt der ganze Teil in der If Funktion
Ergänzung ()

ich teste es mal eben aus.
Ergänzung ()

das war der Fehler :)

danke dir :)
 
Zurück
Oben