Anzeige
Archiv - Navigation
852to856
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
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Objekt an Prozedur übergeben

Objekt an Prozedur übergeben
16.03.2007 10:06:00
Bertram
Hallo zusammen,
isch hätt gern mal a Problem:-)
Wenn ich ein UF (FdatenErfassen) mit einem ToggleButton (tglKundeBearbeiten) habe und schreibe schreibe:
FDatenErfassen.tglKundeBearbeiten = True
dann funktioniert das einwandfrei.
Möchte ich den TB allerdings als Object an eine andere Prozedur übergeben, dann funktioniert das nicht mehr:-(
Im Bsp. funktioniert alles bis auf diesen TG. Kann mir einer sagen, was ich falsch mache?

Sub PrepareForNeuerDatensatz(obj As Object, cb As Object, tb As Object)
For Each ctrl In obj.Controls
If TypeOf ctrl Is MSForms.TextBox Then ctrl.Value = ""
Next ctrl
cb.MatchRequired = False
With FDatenErfassen
.cmdSpeichern.Enabled = True
.tglKundeBearbeiten = True'DAS FUNKTIONIERT NICHT:-(
End With
End Sub


Sub Neu_Click()
Do
warning = InputBox("Bite wählen Sie:" & vbCrLf & vbCrLf & "Kunde, Rechnungsempfänger:" & vbTab & "K" & _
vbCrLf & "Patient, Kassenmitglied:" & vbTab & vbTab & "P", "Neuen Datensatz anlegen")
Loop Until UCase(warning) = "K" Or UCase(warning) = "P"
If UCase(warning) = "K" Then
Call PrepareForNeuerDatensatz(FDatenErfassen.frmKunde, FDatenErfassen.cboKName, FDatenErfassen.tglKundeBearbeiten)
Else
Call PrepareForNeuerDatensatz(FDatenErfassen.frmPatient, FDatenErfassen.cboPName, FDatenErfassen.tglPatientBearbeiten)
End If
End Sub

Danke für jeden Tip
Gruß
Bertram

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Objekt an Prozedur übergeben
16.03.2007 10:35:00
Ramses
Hallo
was steht für
With FDatenErfassen
Ist das ein Userform ?
Wenn Ja, wo ist das deklariert und zugewiesen ?
Ansonsten läuft With nämlich ins leere ;-)
Demzufolge immer mit "Option Explicit" arbeiten,... dann passiert sowas nicht.
Gruss Rainer
AW: Objekt an Prozedur übergeben
16.03.2007 10:53:00
Bertram
Hallo Rainer,
was steht für With FDatenErfassen
Wie gesagt handelt es sich um ein UserForm
Demzufolge immer mit "Option Explicit" arbeiten
Das mache ich prinzipiell. ich bin nämlich auch gern ein "Deklarier-Vergesser":-)
Habe gerade gesehen, dasss sich in meinem 1. Code ein Fehler eingeschlichen hat. So wie's dasteht funktioniert's (war zum Testen). Aber Im Original heißt es so:
With FDatenErfassen
.cmdSpeichern.Enabled = True
.tb = True'DAS FUNKTIONIERT NICHT:-(
End With
Gruß
Bertram
Anzeige
AW: Objekt an Prozedur übergeben
16.03.2007 10:56:29
Ramses
Hallo
Ist das das eigene Userform oder ein anderes Userform wo da was verändert werden soll ?
Wenn es das eigene ist dann muss das funktionieren
With Me
.tb.value = True
End With
Gruss Rainer
AW: Objekt an Prozedur übergeben
16.03.2007 11:12:48
Bertram
Hallo Rainer,
die Prozeduren stehen in einem normalen Modul daher spreche ich es auch mit FDatenErfassen an und nicht mit Me. Hintergrund sind die Variablen 'ctrl' und 'warning' die dort als Public deklariert sind.
Habe sie gerade mal testhalber in das Modul des UserForms gepackt, da funktioniert's aber auch nicht.
Hast du noch ne Idee?
Gruß
Bertram
AW: Objekt an Prozedur übergeben
16.03.2007 12:17:06
Ramses
Hallo
".tb" ist der Name des Togglebuttons,... oder ?
Ansonsten kann ich das nicht nachvollziehen. Der Code zum Hin- und Herschalten des Buttons funktioniert bei mir einwandfrei,... auch aus einem externen Makro heraus.
Gruss Rainer
Anzeige
AW: Objekt an Prozedur übergeben
16.03.2007 12:42:00
Bertram
hallo,
die TogggleButtons heißen tglKundeBearbeiten und tglPatientBearbeiten. Damit ich die Prozedur PrepareForNeuerDatensatz nicht 2x (für jeden TB einzeln) schreiben muss, wollte ich es eben mit 'Objekt übergeben' machen.
Wenn ich mit
Call PrepareForNeuerDatensatz(FDatenErfassen.frmKunde, FDatenErfassen.cboKName, FDatenErfassen.tglKundeBearbeiten)
die Prozedur
Sub PrepareForNeuerDatensatz(obj As Object, cb As Object, tb As Object)
aufrufe, funktioniert obj und cb. Bei tb wird mir allerdings der Wert des TB übergeben, aber nicht das Objekt selbst.
Bei .tb=True kommt dann der Komilierungsfehler 'Method or data member not found' und tb wird blau markiert.
Gruß
Bertram
Anzeige
AW: Objekt an Prozedur übergeben
16.03.2007 12:49:55
Ramses
Hallo
mal auf die Schnelle

Sub PrepareForNeuerDatensatz(obj As Object, cb As Object, tb As String)
With FDatenErfassen
.cmdSpeichern.Enabled = True
.Controls(tb) = True'DAS FUNKTIONIERT NICHT:-(
End With
End Sub
Der Aufruf erfolgt dann mit
Call PrepareForNeuerDatensatz(FDatenErfassen.frmKunde, FDatenErfassen.cboKName, "tglKundeBearbeiten")
Dann haut das mal hin
Ansonsten müsste ich erst mal ein wenig probieren
Gruss Rainer
AW: Objekt an Prozedur übergeben
16.03.2007 12:56:20
Bertram
Besten Dank Rainer,
so funktioniert es wunderprächtig.
Hätte ich auch selbst drauf kommen können. Aber warum muss ich in dem Fall ein "Würg-Around" machen? Hast du mir evtl. eine Erklärung warum es mit den anderen beiden Objekten funktioniert und mit den ToggleButtons nicht?
Gruß
Bertram
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige