2017-09-22 1 views
0

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 
+0

Welche Zeile ist markiert, wenn der Fehler auftritt? –

+1

Versuchen Sie 'fnColumnToLetter_CellAddressReplace (STARTcol) & rowno'. Das kaufmännische Und ist der richtige String-Verkettungsoperator. – Jeeped

+2

Sie haben einen Tippfehler 'fnColumnToLetter_CellAddressReplace' sollte' fnColumnToLetter_CellAdressReplace' sein Die Funktion hat nur ein 'd' in' Adresse' –

Antwort

0

Compile Fehler: Sub oder Funktion nicht

definiert Jedes Mal, wenn ich diesen Fehler sehe ich für grammatische Fehler sehen in der Regel zwischen der Funktion/Unter und den Anruf. In Ihrem Fall haben Sie die Adresse zwischen den beiden unterschiedlich geschrieben.

Public Function fnColumnToLetter_CellAdressReplace(ByVal ColumnNumber As Integer) 

    pharmcol1 = fnColumnToLetter_CellAddressReplace(STARTcol) + rowno 
    pharmcol2 = fnColumnToLetter_CellAddressReplace(ENDcol) + rowno 

Hoffe, das hilft.