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
1736to1740
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

Prozedur aus userform aufrufen

Prozedur aus userform aufrufen
29.01.2020 12:58:16
Tobias
Hallo beieinander,
ich habe eine Userform erstellt und möchte mit Klick auf einen Button die Werte des Formulars an eine andere Prozedur weitergeben. Leider scheitere ich mit der Fehlermeldung:
Fehler beim Kompilieren:
Unzulässige Verwendung einer Eigenschaft
mein code lautet:
Private Sub zeugnisVorbereiten_Click()
Dim zeugnis As String
Dim schuljahr As String
Dim klasse As String
zeugnis = zeugnisFormular.ZeugnisBox
klasse = zeugnisFormular.klasse
schuljahr = zeugnisFormular.zeugnisSchuljahr
Call zeugnisVorbereiten(zeugnis, klasse, schuljahr)
End Sub
Die aufzurufende Prozedur startet folgendermaßen:
Sub zeugnisVorbereiten(zeugnis As String, klasse As String, schuljahr As String)
und befindet sich im gleichen Dokument.
Woran kann das liegen?
Vielen Dank schonmal für die Hilfe.
Tobias

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prozedur aus userform aufrufen
29.01.2020 13:05:28
ChrisL
Hi
Sieht soweit OK aus. Ich vermute der Fehler ist innerhalb vom Sub zeugnisVorbereiten.
cu
Chris
AW: Prozedur aus userform aufrufen
29.01.2020 14:42:05
Tobias
Die Prozedur zeugnisVorbereiten lief eigentlich schon bevor ich die userform erstellt habe. Das einzige was ich gemacht habe ist die Variablendefinitionen der übergebenen Parameter aus der Prozedur rauszunehmen. Seltsam das ganze
AW: Prozedur aus userform aufrufen
29.01.2020 14:53:00
ChrisL
Setze mal einen Haltepunkt und führe den Code im Einzelschritt-Modus aus.
AW: Prozedur aus userform aufrufen
29.01.2020 17:16:56
Tobias
Ich kann den Haltepunkt in der userform setzen und in der aufzurufenden Prozedur. der Fehler bleibt der gleiche, siehe File Userbild
Die Prozedur funktioniert auch ohne Parameterübergabe, da muss irgendwo der Hund begraben sein:
Sub zeugnisVorbereiten(zeugnis As String, klasse As String, schuljahr As String)
'Dim zeugnis As String
Dim z As Long
Dim i As Integer
Dim j As Integer
Dim letzteSpalte As Integer
Dim letzteZeile As Integer
Dim sAdresse As String, Zeile&, Spalte&
Dim Faecher As Integer
Dim rng As Range
Dim pfad As String
Dim ZielMappe As Workbook
Dim zielblatt As Worksheet
Dim QuellMappe As Workbook
Dim QuellBlatt As Worksheet
'Dim klasse As String
Dim varPath
Dim orgPath
'klasse = Application.InputBox _
("Bitte Klasse eingeben zB. 11a 11b 12a ...", "Klasse")
'zeugnis = Application.InputBox _
("Zwischenzeugnis oder Jahreszeugnis erstellen?", "Zeugnisart")
Set QuellMappe = Workbooks.Open(ThisWorkbook.Path & "/" & klasse & "/notenübersicht" &  _
klasse & ".xlsx")
Set QuellBlatt = QuellMappe.Worksheets("Notenübersicht")
z = AnzahlZeilen(QuellBlatt)
letzteSpalte = QuellBlatt.Cells(3, Columns.Count).End(xlToLeft).Column
pfad = QuellMappe.Path
orgPath = ActiveWorkbook.Path
varPath = Application.GetOpenFilename
Workbooks.Open varPath
Set ZielMappe = ActiveWorkbook
Set zielblatt = ZielMappe.Worksheets("Sheet0")
z = AnzahlZeilen(Worksheets("Sheet0"))
Range("A1").Value = "kuerzel"
Range("A2:A" & z).ClearContents
Range("A2").FormulaLocal = "=LINKS(C2;2)&LINKS(B2;2)"
Range("A2").Copy
Range("A3:A" & z).PasteSpecial
Range("A2:A" & z).Copy
Range("A2:A" & z).PasteSpecial xlPasteValues
Columns("B:B").Insert shift:=xlToLeft
Range("B2").FormulaLocal = "=VERKETTEN(D2;"" "";C2)"
Range("B2").Copy
Range("B3:B" & z).PasteSpecial
Range("B2:B" & z).Copy
Range("B2:B" & z).PasteSpecial xlPasteValues
Range("B1").Value = "name"
Range("C:D, H:U").Delete
QuellBlatt.Range("B3:K3").Copy
zielblatt.Range("F1").PasteSpecial
letzteSpalte = zielblatt.Cells(1, Columns.Count).End(xlToLeft).Column
zielblatt.Range("F2").FormulaLocal = "=WENN(ISTFEHLER(RUNDEN(SVERWEIS($A2;[Notenü _
bersicht11a.xlsx]Notenübersicht!$A$4:$K$36;SPALTE(B:B);FALSCH);2));""n.b."";RUNDEN(SVERWEIS($A2;[Notenübersicht11a.xlsx]Notenübersicht!$A$4:$K$36;SPALTE(B:B);FALSCH);2))"
'    zielblatt.Range("F2").FormulaLocal = "=RUNDEN(SVERWEIS($A2;[Notenübersicht11a.xlsx]Notenü _
bersicht!$A$4:$K$36;SPALTE(B:B);FALSCH);2)"
zielblatt.Range("f2").Copy
zielblatt.Range(Cells(2, 7), Cells(2, 9)).PasteSpecial
zielblatt.Range(Cells(2, 6), Cells(2, 9)).Copy
zielblatt.Range(Cells(3, 6), Cells(z, 9)).PasteSpecial
zielblatt.Columns("J:J").Insert shift:=xlToLeft
zielblatt.Cells(1, 10).Value = "IT-Anwendungen gesamt"
zielblatt.Cells(2, 10).FormulaLocal = "=wenn(ISTFEHLER(runden((h2*3+i2)/4;2));""n.b.""; _
runden((h2*3+i2)/4;2))"
zielblatt.Cells(2, 10).Copy
zielblatt.Range(Cells(3, 10), Cells(z, 10)).PasteSpecial
zielblatt.Range("K2").FormulaLocal = "=WENN(ISTFEHLER(RUNDEN(SVERWEIS($A2;[Notenü _
bersicht11a.xlsx]Notenübersicht!$A$4:$K$36;SPALTE(f:f);FALSCH);2));""n.b."";RUNDEN(SVERWEIS($A2;[Notenübersicht11a.xlsx]Notenübersicht!$A$4:$K$36;SPALTE(F:F);FALSCH);2))"
zielblatt.Range("k2").Copy
zielblatt.Range(Cells(2, 12), Cells(2, letzteSpalte + 1)).PasteSpecial
zielblatt.Range(Cells(2, 11), Cells(2, letzteSpalte + 1)).Copy
zielblatt.Range(Cells(3, 11), Cells(z, letzteSpalte + 1)).PasteSpecial
zielblatt.Cells(2, letzteSpalte + 2).FormulaLocal = "=SVERWEIS($A2;[Notenübersicht11a.xlsx] _
Notenübersicht!$A$4:$L$36;SPALTE(L:L);FALSCH)"
zielblatt.Cells(2, letzteSpalte + 2).Copy
zielblatt.Range(Cells(3, letzteSpalte + 2), Cells(z, letzteSpalte + 2)).PasteSpecial
zielblatt.Range("A:R").EntireColumn.AutoFit
ActiveWorkbook.Close
Call neueExcelDatei
Range("A1").Select
With Selection
.PasteSpecial
End With
Application.Dialogs(xlDialogSaveAs).Show
End Sub

Anzeige
AW: Prozedur aus userform aufrufen
29.01.2020 19:17:42
ChrisL
Hi
Mal einen anderen Variablen Namen wie "Klasse" verwenden. Scheint ein geschütztes VBA-Schlüsselwort zu sein (aus der Klassenprogrammierung).
Ansonsten bitte die Excel-Beispieldatei hochladen und Frage als offen kennzeichnen. Dabei kannst du auch die Unter-Prozedur reduzieren z.B.
Sub zeugnisVorbereiten(zeugnis As String, klasse As String, schuljahr As String)
MsgBox zeugnis
End Sub
Hauptsache man kann den Fehler reproduzieren. Manchmal kann man durch ein schrittweises Abspecken des Codes den Fehler eingrenzen. Im Moment fällt mir (ausser dass du Apple benutzt?) auch nichts aussergewöhnliches auf.
cu
Chris
Anzeige
AW: Prozedur aus userform aufrufen
31.01.2020 16:51:27
Tobias
Hallo Chris,
das mit dem Mac hab ich nur zu Hause probiert, macht die Sache aber eher komplizierter, speziell bei den Pfadangaben.
Ich hab Deinen Vorschlag einmal getestet und die aufzurufende Prozedur komplett neu aufgebaut und jetzt funktioniert alles.
Danke

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige