Ich entschuldige mich, wenn dies eine dumme Frage ist, aber ich konnte keine Antwort auf mein aktuelles Problem finden. Ich versuche, ein Benutzerformular zu erstellen, das Tabellendaten basierend auf Eingabe in der Combobox nach Benutzername, einem Startdatum und einem Enddatum durchsucht.Funktion nicht richtig in Benutzerformular Unterprogramm definiert
Es gibt eine Benutzerspalte und alle anderen Spalten entsprechen Daten. Die Daten sind eine tägliche Workload-Produktivitätszahl (z. B. 87 Widgets). Das Ziel besteht darin, Eingaben einzugeben und die Daten aus der Rohdatenkalkulation in eine Ergebniskalkulation zu kopieren, die Informationen für einen Benutzer in diesem Zeitraum anzeigt.
Ich bekomme immer einen Fehler ("Kompilierfehler: Sub oder Funktion nicht definiert") in Bezug auf meinen Versuch, die Funktion zu verwenden, um Spalten für die entsprechenden Daten zu definieren. Ich würde mich über jede Eingabe freuen. Vielen Dank.
'Function changes column number to column name
Public Function fnColumnToLetter_CellAdressReplace(ByVal ColumnNumber As Integer)
fnColumnToLetter_CellAdressReplace = Replace(Replace(Cells(1, ColumnNumber).Address, "1", ""), "$", "")
End Function
Private Sub SearchButton1_Click()
'Dim variables
Dim sheet As Worksheet
Dim name1 As String
Dim date1 As Date
Dim date2 As Date
Dim STARTcol As String
Dim ENDcol As String
Dim pharmcol1 As String
Dim pharmcol2 As String
Set sheet = ActiveWorkbook.Sheets("Data")
Set Results = ActiveWorkbook.Sheets("Results")
'Variables for entries input into userform
name1 = userform1.NameBox1.Value
date1 = userform1.DateBox1.Value
date2 = userform1.DateBox2.Value
'Define row based on pharmacist name
rowno = Application.WorksheetFunction.Match(name1, Range("A:A"), 0)
pharmrow = "a" + rowno
'Find first column from start date
STARTcol = Application.WorksheetFunction.Match(date1, Range("A1:AZZ1"), 0)
'Find last column from end date
ENDcol = Application.WorksheetFunction.Match(date2, Range("A1:AZZ1"), 0)
'Call function to replace column number to column name
pharmcol1 = fnColumnToLetter_CellAddressReplace(STARTcol) + rowno
pharmcol2 = fnColumnToLetter_CellAddressReplace(ENDcol) + rowno
'Copy table array to RESULTS worksheet
sheet.Range("pharmcol1:pharmcol2").Copy Destination = Results.Range("A1")
End Sub
Welche Zeile ist markiert, wenn der Fehler auftritt? –
Versuchen Sie 'fnColumnToLetter_CellAddressReplace (STARTcol) & rowno'. Das kaufmännische Und ist der richtige String-Verkettungsoperator. – Jeeped
Sie haben einen Tippfehler 'fnColumnToLetter_CellAddressReplace' sollte' fnColumnToLetter_CellAdressReplace' sein Die Funktion hat nur ein 'd' in' Adresse' –