Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1464to1468
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Userform in Abhängihkeit von Zellinhalt öffnen

Userform in Abhängihkeit von Zellinhalt öffnen
17.12.2015 12:34:04
Zellinhalt
Hallo,
ich möchte in Abhängigkeit vom Inhalt der Zelle S4 (Gerätetyp)die dazu gehörige Userform öffnen. Dazu setzte ich mir den Namen der Userform zusammen und mit diesem Code:
Dim UFS As String
Dim SWT As String
ActiveSheet.Name = Range("Q4").Value
SWT = Range("S4").Value
Range("U4") = "UF_" & Right(SWT, 6)
UFS = Range("U4").Value
VBA.UserForms.Add(UFS).Show

klappt das auch. ABER: In der Userform wird über ein Klassenmodul das _Click-Event für bis zu 48 Label festgelegt. Hier steigt Excel mit "Laufzeitfehler9, Index außerhalb des gültigen Bereiches" aus.
der Code dazu:
 Dim Zeile As Long
Dim AB As String
AB = UF_J9022A.TB_Switchinfo_Name
Zeile = PortLabelJ9022A.Caption + 2
UF_J9022A.Lbl_Port = PortLabelJ9022A.Caption
UF_J9022A.TB_Standort = Sheets(AB).Cells(Zeile, 9).Value - hier stoppt der Code, weil AB=""
UF_J9022A.TB_Gebaeude = Sheets(AB).Cells(Zeile, 10).Value
UF_J9022A.TB_Raum = Sheets(AB).Cells(Zeile, 11).Value
UF_J9022A.TB_Dose = Sheets(AB).Cells(Zeile, 12).Value
Die Variable AB bleibt schlicht leer. Da die Werte in TB_Switchinfo_Name übernommen werden und das ganze bei Aufruf der Userform über einen Button (UF_xxx.show) reibungslos funktioniert, bin ich ratlos. Habt ihr eine Idee dazu? Gern auch Alternativ-Vorschläge ala Case... es gibt 4 Gerätetypen (jeweils ein Gerät pro Sheet) und x Geräte. Dazu möchte ich eben in Abhängigkeit vom Gerätetyp im Activate-Ereignis des Arbeitsblattes die passende UF öffnen.
Danke und Gruß
Vic

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform in Abhängihkeit von Zellinhalt öffnen
17.12.2015 13:00:55
Zellinhalt
hallo,
ich sehe nirgends, dass was in TB_Switchinfo_Name geschrieben wird. Wie kommt der Wert da rein?
Wo steht dieser Code?
Warum benennst du das aktive Blatt um?
Gruß
Rudi

AW: Userform in Abhängihkeit von Zellinhalt öffnen
17.12.2015 13:24:03
Zellinhalt
Hallo Rudi,
TB_Switchinfo_Name wird beim aktivieren der Userform geladen. Das Blatt benenne ich um, weil die Namen per Katalog hinterlegt sind und ich das Blatt über ein Dropdown ansteuere. Somit kann ich bei Änderungen am Namen weitestgehend sicherstellen, dass das Blatt dem Katalogbegriff entspricht und gefunden wird. Dieses Zeile fliegt aber aus dem activate des Arbeitsblattes raus und kommt an anderer Stelle zum Einsatz.
Ich habe mich jetzt mal mit Select Case auseinandergesetzt - war einfacher als gedacht. Die Lösung:
Option Explicit
Private Sub Worksheet_Activate()
Dim a As String
Dim b As String
b = Range("S4").Value
Range("U4") = "UF_" & Right(b, 6)
a = Range("U4").Value
Select Case a
Case "UF_J4903A": UF_J4903A.Show
Case "UF_J9022A": UF_J9022A.Show
Case "UF_J9726A": UF_J9726A.Show
Case Else
MsgBox "Keine passende Userform vorhanden" & vbLf & " oder Switch-Typ prüfen"
End Select
End Sub
funktioniert sehr gut. Mich würde allerdings trotzdem interessieren, wo mein Denkfehler im Ablauf der ersten Variante liegt. Hier der Code aus der Userform:
Option Explicit
Dim oLabels(1 To 48) As New LblPortSammlung48 'Klassenmodul für Label-Click
Private Sub UserForm_Activate()
Dim tb As Integer 'Declaration Zähler
Dim sngTop As Single, sngLeft As Single ' Declaration für Bildschirmposition
For tb = 1 To 48
Set oLabels(tb).PortLabelJ9022A = Controls("Lbl_Port_" & tb) 'Label 1 bis 48 an Klassenmodul -  _
benötigt "DIM oLabels..." im Header
Me.Controls("Lbl_Port_" & tb).Caption = tb 'Label 1 bis 48 Nummerierung
If ActiveSheet.Cells(tb + 2, 13).Value = "frei" Then 'Label 1 bis 48 Farbe nach Inhalt  _
aktive Tabelle Spalte 11
Me.Controls("Lbl_Port_" & tb).BackColor = vbGreen
Else
Me.Controls("Lbl_Port_" & tb).BackColor = vbRed
End If
Next tb
'Felder Switch-Info füllen:
Lbl_Switchname = ActiveSheet.Range("Q4").Value 'Name des Switch zur Anzeige aus Tabelle holen
Me.TB_Switchinfo_Name.Text = ActiveSheet.Range("Q4").Value 'Name des Switch zur Bearbeitung aus  _
Tabelle in holen
....usw - hier werden die restlichen TextBoxen befüllt
Gruß
Vic
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige