Parameterübergabe

guten Abend,

wer kann mir einen Tipp geben, wie man Parameter an ein Userform übergeben kann?

z.B.: EZ = 35; diesen Wert nach userform001

vielen Dank und guten Abend

Nikodemo

Grüezi NikoDemo

wer kann mir einen Tipp geben, wie man Parameter an ein
Userform übergeben kann?

z.B.: EZ = 35; diesen Wert nach userform001

Dimensioniere in einem allgemeinen Modul der Mappe eine ‚Public‘-Variable:

Public NikoDemosVariable as Double

Weise dieser Variablen dann vor dem Aufruf der Userform den gewünschten Wert zu.

Greife dann aus der Userform auf diese Variable zu.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Mahlzeit, Thomas!

ich habe jetzt folgendes gebastelt:

Erhalte dann die Fehlermeldung:
„Fehler beim Kompilieren:
ungültiges Attribut in Sub oder Funktion“

Was kann da passieren?

Danke im Voraus für deinen Tipp.

Nikodemo

Grüezi NikoDemo

…Du bist wahrlich ‚eine harte Nuss‘… :wink:

ich habe jetzt folgendes gebastelt:

Erhalte dann die Fehlermeldung:
„Fehler beim Kompilieren:
ungültiges Attribut in Sub oder Funktion“

Was kann da passieren?

Du hast schlicht nicht getan was ich dir geschrieben/geraten habe!

Ich schrub Du sollest in einem allgemeinen Modul eine Public-Variable erstellen - Du aber tust das in einer Click-Prozedur und vermutlich ert noch im Codemodul eines Tabellenblattes oder der Userform.

Füge im VBA-Editor in der Mappe ein Modul ein über Menü: ‚Einfügen‘/Modul.

In diesem neuen Modul schreibst Du ganz als erstes die folgenden beiden Zeilen:

Option Explicit
Public EZ As Integer

Nun wird es schwierig, dir weiter zu helfen, da ich den Aufbau deines Codes nicht kenne.
Jedenfalls musst Du vor dem Aufruf der Userform, dieser Variablen den entsprechenden Wert zuweisen, den Du dann in der UF über diese Variable abfragen und verwenden kannst.

Mir scheint (einmal mehr), dass dich die Vorschläge ab und zu überfordern. Daher rate ich dir dringend, dass Du dich mit den Grundlagen und Basics der VBA-Programmierung eingehend befasst, bevor Du solche Projekte angehst. Du tust dir (und auch uns :wink:) damit einen grossen Gefallen, weil dann nicht immer wieder Dinge nicht funktionieren, die eigentlich problemlos tun sollten.

Hier mal zwei Anlaufstellen für solche Basics:

http://de.wikibooks.org/wiki/VBA_in_Excel_-_Grundlagen
http://www.fernuni-hagen.de/zmi/katalog/B012.shtml

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hey, Thomas,

ich tu ja alles für dich, deshalb hier der gesamte Code des UF.

&gt:stuck_out_tongue_winking_eye:rivate Sub COMMANDBUTTON1_CLICK()
Dim DATUM As Date
Dim WERT As Double
Dim TEXT As String
Dim KATEGORIE As String
Dim SUBKATEGORIE As String
Dim ZUORDNUNG As String
Dim t1 As Integer, t2 As Integer
t1 = AZ
t2 = EZ
'10 DATENSÄTZE = Cells(35, 9).Value ’ ANZAHL ALLER BISHERIGEN EINTRÄGE
'20 AZ = EZ + DATENSÄTZE: ’ AKTUELLE AUSGABZEILE ERRECHNET

'EINTRAG DATUM
30 Cells(AZ, 2).Value = ListBox1.Value
If Cells(AZ, 2).Value = „“ Then GoTo 880
'FORMAT AUSGABELISTE SPALTE DATUM
270 Range(Cells(EZ, 2), Cells(LZ, 2)).Select
280 Selection.NumberFormat = „DD/MM/YY“
290 With Selection
300 .HorizontalAlignment = xlCenter
310 .VerticalAlignment = xlCenter
320 End With

'EINTRAG TEXT
40 Cells(AZ, 3).Value = TextBox1.Value
If Cells(AZ, 3).Value = „“ Then GoTo 881
'FORMAT AUSGABELISTE SPALTE TEXT
330 Range(Cells(EZ, 3), Cells(LZ, 13)).Select
340 Selection.NumberFormat = " @"
350 With Selection
360 .HorizontalAlignment = xlLeft
370 .VerticalAlignment = xlCenter
380 End With

'EINTRAG WERT
385 If TextBox2.Value = „“ Then GoTo 882
50 WERT = CDbl(TextBox2.Value)
60 Cells(AZ, 7).Value = WERT
If Cells(AZ, 7).Value = „“ Then GoTo 882
'FORMAT AUSGABELISTE SPALTE WERT
390 Range(Cells(EZ, 7), Cells(LZ, 13)).Select
400 Selection.NumberFormat = "0.00 € "
410 With Selection
420 .HorizontalAlignment = xlRight
430 .VerticalAlignment = xlCenter
With Selection.Font
.Bold = True
End With
440 End With

'EINTRAG KATEGORIE
70 Cells(AZ, 8).Value = ListBox2.Value
If Cells(AZ, 8).Value = „“ Then GoTo 883
'FORMAT AUSGABELISTE SPALTE KATEGORIEN
450 Range(Cells(EZ, 8), Cells(LZ, 8)).Select
460 Selection.NumberFormat = " @"
470 With Selection
480 .HorizontalAlignment = xlLeft
490 .VerticalAlignment = xlCenter
With Selection.Font
.Bold = False
End With
500 End With

'EINTRAG SUBKATEGORIE
80 Cells(AZ, 10).Value = ListBox3.Value
If Cells(AZ, 10).Value = „“ Then GoTo 884
'FORMAT AUSGABELISTE SPALTE SUBKATEGORIE
510 Range(Cells(EZ, 10), Cells(LZ, 10)).Select
520 Selection.NumberFormat = " @"
530 With Selection
540 .HorizontalAlignment = xlLeft
550 .VerticalAlignment = xlCenter
With Selection.Font
.Bold = False
End With
End With

'EINTRAG ZUORDNUNG
90 Cells(AZ, 12).Value = ListBox4.Value
If Cells(AZ, 12).Value = „“ Then GoTo 885
'FORMAT AUSGABELISTE SPALTE ZUORDNUNG
560 Range(Cells(EZ, 12), Cells(LZ, 12)).Select
570 Selection.NumberFormat = " @"
580 With Selection
590 .HorizontalAlignment = xlLeft
600 .VerticalAlignment = xlCenter
With Selection.Font
.Bold = False
End With
610 End With

'EINTRÄGE SORTIEREN NACH DATUM
100 Range(Cells(EZ, 2), Cells(LZ, 2)).Select
110 Cells(LZ, 2).Activate
120 Selection.Sort KEY1:=Cells(EZ, 2), ORDER1:=xlAscending, HEADER:=xlNo, ORDERCUSTOM:=1, MatchCase:=False, Orientation:=xlTopToBottom, DATAOPTION1:=xlSortNormal

'AUGABE VON HEUTIGEM DATUM
130 USRFM001.Label2.Caption = Cells(34, 161).Value

GoTo 900
880 Select Case MsgBox(„KEIN DATUM EINGETRAGEN“, vbAbortRetryIgnore, „FEHLER DATUM“)
Case vbAbort: GoTo 900
Case vbRetry: GoTo 999
End Select

GoTo 900
881 Select Case MsgBox(„KEIN ARTIKEL EINGETRAGEN“, vbAbortRetryIgnore, „FEHLER ARTIKEL“)
Case vbAbort: GoTo 900
Case vbRetry: GoTo 999
End Select

GoTo 900
882 Select Case MsgBox(„KEIN WERT EINGETRAGEN“, vbAbortRetryIgnore, „FEHLER WERT“)
Case vbAbort: GoTo 900
Case vbRetry: GoTo 999
End Select

GoTo 900
883 Select Case MsgBox(„KEINE KATEGORIE GEWÄHLT“, vbAbortRetryIgnore, „FEHLER KATEGORIE“)
Case vbAbort: GoTo 900
Case vbRetry: GoTo 999
End Select

GoTo 900
884 Select Case MsgBox(„KEINE SUBKATEGORIE GEWÄHLT“, vbAbortRetryIgnore, „FEHLER SUBKATEGORIE“)
Case vbAbort: GoTo 900
Case vbRetry: GoTo 999
End Select

GoTo 900
885 Select Case MsgBox(„KEINE ZUORDNUNG GEWÄHLT“, vbAbortRetryIgnore, „FEHLER ZUORDNUNG“)
Case vbAbort: GoTo 900
Case vbRetry: GoTo 999
End Select

900 Range(„A1“).Select
910 Unload USRFM001
999 End Sub>

EZ, LZ und AZ sind die drei Parameter, um die es geht. Diese möchte ich im vorhergehenden Programmteil an das UF übergeben.

Funktioniert noch nicht ganz zuverlässig.

Gute Nacht

Nikodemo

Grüezi NikoDemo

ich tu ja alles für dich, deshalb hier der gesamte Code des
UF.

Ic denke, dass da dann noch ein paar andere Hürdne zu nehemen sind, aber das ist wohl eine andere Baustelle…

EZ, LZ und AZ sind die drei Parameter, um die es geht. Diese
möchte ich im vorhergehenden Programmteil an das UF übergeben.

Ja, dann tu das so wie ich es vorgeschlagen habe - dafür ist der Code, der in der UF verwendet wird nicht notwendig, weil die Zuweisung an diese Variablen ja vor dem Aufruf der UF stattfinden muss.
Diesen Teil des Codes meinte ich eigentlich…

Funktioniert noch nicht ganz zuverlässig.

Da kann ich dir wieder nicht weiterhelfen, da Du leider nicht spezifisch äusserst was nicht funktioniert:

  • Die Erstellung der Variablen (hast Du die überhaupt so angelegt?)

  • Die Zusweisung der Parameter an selbige?

  • Die Verwendung der zugewiesenen Variablen in der UF?

  • Das Schreiben der Werte ins Tabellenblatt (die erwähnte andere Baustelle)?

  • Erhältst Du zu irgend einem Zeitpunkt des Code-Ablaufs Fehlermeldungen - wenn ja welche?

Schau dir doch mal die folgende Datei näher an, da habe ich dieses Pronzip der Übergabe von Werten und Objekten an eine ‚Public‘-Variable genutzt um diese an eine UF zu übergeben, dort zu verwenden und über eine weitere Variable wieder zurückzugeben.

http://www.office-loesung.de/ftopic370781_30_0_asc.p…

Du kannst dir auch ruhig die Beiträge durchlesen und all die vorher entstandenen Varianten betrachten - ich hatte da auch einige Prpbleme weil der User nicht imstande war das Ganze selbst angzugehen und auch wichitge ‚Details‘ nicht genannt hat…

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -