Ich habe ein Makro, das den Wert in Spalte E zurückgeben soll, wenn es den Werten in Spalte A, Spalte B und Spalte D entspricht. Die folgende Formel eingegeben Excel funktioniert super:VBA gibt "type-mismatch" zurück, wenn Formel einwandfrei funktioniert
=SUMPRODUCT(--(A1:A180="Category Name"),--(B1:B180="Specific Type"),--(D1:D180=2015),(E1:E180))
aber das folgende VBA-Programm gibt einen "Typ-Mismatch-Fehler". Das Programm befindet sich als Modul und nicht unter einem bestimmten Blatt. Ich habe überprüft, dass die "Blattname" Bereiche auch existieren. Kann jemand sehen, was der Fehler ist?
Für den Datensatz sind Spalten a und b Text und Spalten d und e sind Zahlen.
Function LocateFirstCell()
Dim FirstCell
Dim ColA
Dim ColB
Dim ColD
Dim ColE
Dim Name As String
Dim BOD As String
Dim Year As Integer
Set ColA = Worksheets("Sheet Name").Range("A1:A180")
Set ColB = Worksheets("Sheet Name").Range("B1:B180")
Set ColD = Worksheets("Sheet Name").Range("D1:D180")
Set ColE = Worksheets("Sheet Name").Range("E1:E180")
Name = "Category Name"
BOD = "Specific Type"
Year = 2015
FirstCell = [SUMPRODUCT(--(ColA=Name),--(ColB=BOD),--(ColD=Year),(ColE))]
'=SUMPRODUCT(--(A1:A180="Category Name"),--(B1:B180="Specific Type"),--(D1:D180=2015),(E1:E180))
MsgBox ("FirstCell is " & FirstCell)
End Function
Sowohl [.Name] (https://msdn.microsoft.com/en-us/ Bibliothek/Büro/aa175750 (v = Büro.11) .aspx) und [Jahr] (https://msdn.microsoft.com/en-us/library/88k2aec8.aspx) sind ** reservierte Wörter **. Es ist nie eine gute Idee, reservierte Wörter zu verwenden, es sei denn aus einem ganz besonderen Grund (das gehört nicht dazu). – Jeeped