Discussion:
Listbox RowSource
(zu alt für eine Antwort)
FRANZ LUWEIN
2008-01-12 00:29:43 UTC
Permalink
Hallo alle,

EXCEL 2002, SP3
Win XP Prof, SP 2 Build 2600

Ich habe ein (weiteres) Problem und bitte um Hilfe.

Auf meiner Userform befinden sich List- und Textboxen.
Nach dem Verlassen von TB_VN soll aus einen festen Text und den Werten
aus LB_Art und LB_Ort der Name eines vorhandenen Tabellenblattes
gebildet werden. Danach wird auf diesem TBL im Bereich A2:A72 nach dem
Begriff gesucht, der in TB_VN eingegeben wurde. Soweit so gut.
Nun soll der LB_SchonDa die RowSource übergeben werden.
Doch genau das funktioniert nicht. Keine Meldung, keine Eintragung,
nichts wird angezeigt.
Was mache ich da falsch?

Mit freundlichen Grüßen

Franz Luwein



Sub TB_VN_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Dim c As Range
Dim TBL As String

TBL = "SL-" & LB_Art.value & "-" & LB_Ort.value

On Error Resume Next

With Worksheets(TBL).Range("A2:A72")

Set c = .Find(TB_VN, LookIn:=xlValues)

If Not c Is Nothing Then

UF_SL.LB_SchonDa.RowSource = TBL & "!A" & c.Row + 1 & ":B" & c.Row + 10

End If

End With
End Sub
{Boris}
2008-01-12 08:20:48 UTC
Permalink
Hi Franz,
Post by FRANZ LUWEIN
Auf meiner Userform befinden sich List- und Textboxen.
Nach dem Verlassen von TB_VN soll aus einen festen Text und den Werten
aus LB_Art und LB_Ort der Name eines vorhandenen Tabellenblattes
gebildet werden. Danach wird auf diesem TBL im Bereich A2:A72 nach dem
Begriff gesucht, der in TB_VN eingegeben wurde. Soweit so gut.
Nun soll der LB_SchonDa die RowSource übergeben werden.
Doch genau das funktioniert nicht. Keine Meldung, keine Eintragung,
nichts wird angezeigt.
Was mache ich da falsch?
Sub TB_VN_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim c As Range
Dim TBL As String
TBL = "SL-" & LB_Art.value & "-" & LB_Ort.value
On Error Resume Next
With Worksheets(TBL).Range("A2:A72")
     Set c = .Find(TB_VN, LookIn:=xlValues)
     If Not c Is Nothing Then
UF_SL.LB_SchonDa.RowSource = TBL & "!A" & c.Row + 1 & ":B" & c.Row + 10
End If
End With
End Sub
Ohne die Inhalte Deiner Variablen zu kennen, ist es schwierig. Kann es
vielleicht sein, dass Dein neuer Blattname auch Leerzeichen enthalten
kann? Falls ja, dann musst Du das in dem zusammengebastelten String
gebührend mit den beiden Hochkommata berücksichtigen. Ein Bezug auf
ein Blatt/Zelle mit einem Leerstring folgt dieser Syntax:

Me.ListBox1.RowSource = "'Tabelle 2'!A1:A3"

--
Grüße Boris
FRANZ LUWEIN
2008-01-12 10:34:00 UTC
Permalink
Hallo Boris,
Hallo alle,
Post by {Boris}
Ohne die Inhalte Deiner Variablen zu kennen, ist es schwierig.
Ich denke, dass nicht an den Variablen liegt, denn sowohl der
"Zusammenbau" des Blattnamens funktioniert als auch das finden der Zeile
mit den gesuchten Wert auf diesem Blatt.

Auch die MsgBox gibt die gewünschte Variable aus.

Rs = TBL & "!A" & c.Row + 1 & ":B" & c.Row + 10 'OK
MsgBox Rs 'OK

Sogar das klappt (fast)

With UF_SL.LB_SchonDa
.ColumnCount = 2 'OK
.ColumnHeads = True 'OK
.ColumnWidths = "50;150" 'OK
.RowSource = Rs 'FEHLER!
End With

Die Listbox zeigt zwei leere Heads in der angegebenen Breite an aber
keinen Inhalt!

Hier noch einmal der Text aus der MsgBox:

SL-PT-Kreis!A27:B36

Was muss ich tun, dass daraus eine "richtige" RowSource wird?


Dank für die Hilfe

Franz Luwein
Lorenz Hölscher
2008-01-12 11:00:49 UTC
Permalink
Hallo Franz,
Post by FRANZ LUWEIN
SL-PT-Kreis!A27:B36
das, was Boris über Leerzeichen gesagt hat, gilt für alle anderen
Rechen(!)zeichen auch. Das Leerzeichen ist nämlich genauso ein
Rechenzeichen wie das Minuszeichen (welches Du möglicherweise wie
viele als Bindestrich betrachtest). Also:

'SL-PT-Kreis'!A27:B36

mit den Hochkommata, sonst versucht Excel zu rechnen: Variable 'SL'
minus Variable 'PT' minus 'Kreis!A27:B36'

tschö, Lorenz

--
http://www.cls-software.de/cls_software/TippsExcelVBA.aspx
FRANZ LUWEIN
2008-01-12 11:57:17 UTC
Permalink
Hallo Lorenz,

danke für deine Aufklärung.

Der String sieht jetzt so aus:

"'" & TBL & "'" & "!A" & c.Row + 1 & ":B" & c.Row + 10

und macht was er soll!

Nochmals besten Dank.

Franz Luwein

Loading...