Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1084to1088
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 dynamisch ansprechen

Userform dynamisch ansprechen
Dirk
Hallo liebes Forum!
Folgendes Problem:
Ich habe eine Funktion, die ich aus einer Userform heraus aufrufe. Dieser Funktion gebe ich informationen mit
eine Kundennummer und den Namen der Userform aus der ich sie aufrufe.
in etwa so

Private Sub tb_Kundennummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Kundenid = tb_Kundennummer.Value
Formname = Me.Name
Call Kundendetailactualize(Formname, Kundenid)
End Sub


In einem Modul steht folgende Funktion:
Function Kundendetailactualize(Formname, Kundenid)
Dim uf As UserForm.Name
Sheets("Kunden").Select
Range("a1").Select
Do Until ActiveCell.Text = Kundenid Or ActiveCell.Text = ""
ActiveCell.Offset(1, 0).Select
Loop
with control(Formname)
.tb_Kundenbezeichnung.value = activecell.offset(0,1).value
end with
End Function


wie kann ich der Funktion beibringen, dass Formname für die jeweilige Userform steht
also gleicher Funktionsaufruf für Userform1, Userform2 usw.
Ich verzweifle bald

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: du verwechselst Sub und Function
27.06.2009 14:33:35
Daniel
Hi
eine Sub ist normalerweise nicht dazu geeignet, eine Wert zurückzugeben
als Funktion würde dein Makro so aussehen:

Private Sub tb_Kundennummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Kundenid = tb_Kundennummer.Value
Formname = Me.Name
tb_Kundenbezeichnung.value = Kundendetailactualize(Kundenid)
End Sub



Function Kundendetailactualize(Kundenid) as string
Sheets("Kunden").Select
Range("a1").Select
Do Until ActiveCell.Text = Kundenid Or ActiveCell.Text = ""
ActiveCell.Offset(1, 0).Select
Loop
Kundendetailactualize = activecell.offset(0,1).value
End Function


wobei deine Funktion schlecht aufgebaut ist, besser gehts so:


Function Kundendetailactualize(Kundenid) as string
dim Zelle as Range
Set Zelle = Sheets("Kunden").Columns(1).Find(what:=Kundenid)
if Zelle is nothing then
Kundendetailactualize = ""
Else
Kundendetailactualize = Zelle.offset(0,1).vaue
end if
End Function


Gruß, Daniel

Anzeige
AW: du verwechselst Sub und Function
27.06.2009 15:42:08
Dirk
Daniel du hast recht meine Funktion ist nicht so fein aufgebaut. -Danke für die verbesserte Version.
Die Lösung für mein Problem ist aber folgende:
Dim Formname as Userform

Private Sub tb_Kundennummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Kundenid = tb_Kundennummer.Value
Set Formname = Me
Call KundendetailActualize(Formname, Kundenid)
End Sub


Function Kundendetailactualize(Formname, Kundenid)
dim Zelle as Range
Set Zelle = Sheets("Kunden").Columns(1).Find(what:=Kundenid)
if Zelle is nothing then
formname.tb_Kundennummer = ""
Else
formname.tb_Kundennummer = Zelle.offset(0,1).vaue
end if
End Function


Anzeige
AW: du verwechselst Sub und Function
27.06.2009 16:35:04
Nepumuk
Hallo Dirk,
warum so kompliziert?
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Sub Kundendetailactualize(objBox As MSForms.TextBox)
    Dim Zelle As Range
    Set Zelle = Sheets("Kunden").Columns(1).Find(What:=objBox.Text)
    If Zelle Is Nothing Then
        objBox.Text = ""
    Else
        objBox.Text = Zelle.Offset(, 1).Value
    End If
End Sub

' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private Sub tb_Kundennummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Call Kundendetailactualize(tb_Kundennummer)
End Sub

Gruß
Nepumuk
Anzeige
AW: Userform dynamisch ansprechen
27.06.2009 18:00:49
Gerd
Hallo Dirk,
nach deinem ersten Code so?

Public Sub Kundendetailactualize(objBoxFrom As MSForms.TextBox, objBoxTo As MSForms.TextBox)
Dim Zelle As Range
Set Zelle = Sheets("Kunden").Columns(1).Find(What:=objBoxFrom.Text, lookat:=xlWhole, LookIn: _
=xlValues)
If Zelle Is Nothing Then
objBoxFrom.Text = ""
Else
objBoxTo.Text = Zelle.Offset(, 1).Value
End If
End Sub



Private Sub tb_Kundennummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call Kundendetailactualize(tb_Kundennummer, tb_Kundenbezeichnung)
End Sub


Gruß Gerd

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige