J'ai obtenu les fonctions simples suivantes:Travailler avec des cellules
Public Function AddFields(field1 As Range, field2 As Range) As String
AddFields = "=" + field1.Address + "+" + field2.Address
End Function
Private Function GetCustomerCount(monthNumber As Integer) As Range
If monthNumber < 6 Then
GetCustomerCount = Range("D13")
ElseIf monthNumber < 12 Then
GetCustomerCount = Range("D14")
Else
GetCustomerCount = Range("D15")
End If
End Function
que j'appelle de la sous suivante:
Private Sub mDateLooper_OnMonth(looper As DateLooper)
Cells(looper.Row, looper.Column).Value = "Månad " & CStr(looper.MonthIndex + 1)
Cells(looper.Row + 1, looper.Column).Value = AddFields(GetCustomerCount(looper.MonthIndex + 1), Range("m21"))
Cells(looper.Row + 2, looper.Column).Value = AddFields(Cells(looper.Row + 1, looper.Column - 1), Cells(looper.Row, looper.Column))
End Sub
Il ne fonctionne pas. J'obtiens l'erreur suivante: La variable d'objet ou le bloc n'est pas défini.
sur GetCustomerCount = plage ("D13").
Pourquoi?
Dans Outils-> Options vous pouvez activer « exiger la déclaration des variables » - c'est un peu gênant au début, mais en fait que vous avez tous vos canards dans une rangée avant de commencer à obtenir des erreurs étranges. Ce que Marg a mentionné est une convention de VBA facile à oublier: les "variables normales" telles que les entiers, les longs, et les chaînes sont normalement assignées avec i = 4 ou userName = "John Smith". Tout le reste, les plages, les feuilles de calcul, etc., sont des objets et doivent utiliser le mot-clé "Set" comme dans l'exemple de Marg. – Michael