Je m'excuse si c'est une question stupide mais j'ai été incapable de trouver une réponse à mon problème actuel. J'essaye de créer un userform qui recherche des données de tableur basées sur l'entrée dans la liste déroulante pour le nom d'utilisateur, une date de début, et une date de fin.Fonction non définie de manière appropriée dans le sous-programme userform
Il existe une colonne utilisateur et toutes les autres colonnes correspondent à des dates. Les données sont un nombre quotidien de productivité de charge de travail (par exemple, 87 widgets). L'objectif est de pouvoir saisir des entrées et copier les données de la feuille de calcul des données brutes dans une feuille de calcul des résultats, en affichant des informations pour un utilisateur au cours de cette période.
Je reçois toujours une erreur ("Erreur de compilation: Sub ou Function non définie") concernant ma tentative d'utiliser la fonction pour définir des colonnes pour les dates appropriées. J'apprécierais toute contribution. Merci.
'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
Quelle ligne est mise en évidence lorsque l'erreur se produit? –
Essayez 'fnColumnToLetter_CellAddressReplace (STARTcol) & rowno'. L'esperluette est l'opérateur de concaténation de chaîne correct. – Jeeped
vous avez une faute de frappe 'fnColumnToLetter_CellAddressReplace' devrait être' fnColumnToLetter_CellAdressReplace' La fonction n'a qu'un 'd' dans' Adresse ' –