[英]I get Type Mismatch error
我有一個數據表,其中A列包含年,B列包含月,C列包含天,d包含總數
我正在嘗試創建將d列中的當月統計數據相加的函數
Function countMessagesbyDate(xYear As Integer, xMonth As Integer, xDay As Integer) As Integer
Dim wsData As Worksheet
Dim LastRow As Long
Dim tMessages As Integer
Dim rowYear As Range
Dim rowMonth As Range
Dim rowDay As Range
Dim rowMessages As Range
Dim rCell As Range
Dim i As Integer
Application.ScreenUpdating = False
Set wsJData = ThisWorkbook.Sheets("daily_report")
Set rowYear = wsData.Range("A1").End(xlDown).Row
Set rowMonth = wsData.Range("B1").End(xlDown).Row
Set rowDay = wsData.Range("C1").End(xlDown).Rows
Set rowMessages = wsData.Range("D1:").End(xlDown).Rows
tMessages = 0
i = 0
For Each rCell In rowYear
i = i + 1
If rCell.Value = xYear And rowMonth.Offset(i) = xMonth And rowDay.Offset(i) < Day(Today) Then
tMessages = tMessages + rowMessages.Offset(i).Value
End If
Next rCell
countMessagesbyDate = tMessages
End Function
嘗試設置范圍時出現類型不匹配的情況。 你能幫忙嗎?
提前致謝
您說:-
嘗試設置范圍時出現類型不匹配的情況
您已將rowYear
聲明為范圍( Dim rowYear As Range
),但隨后Dim rowYear As Range
提供了一個數字,而不是范圍,因此不匹配。 Set rowYear = wsData.Range("A1").End(xlDown).Row
將提供行號而不是范圍。
要解決此問題,請更改聲明:-
Dim rowYear As Long
或更改變量的設置:-
Set rowYear = wsData.Range("A1").End(xlDown).Range
您聲明此變量:
Dim wsData As Worksheet
但是然后您設置此變量:
Set wsJData = ThisWorkbook.Sheets("daily_report")
然后,您嘗試調用Dim
變量,但問題是它為空。
因此,如果將wsJData
更改為wsData
,則代碼可能會起作用。
一個簡單的Countifs()可以代替您的UDF來完成。
如果您非常熱衷於使用UDF,為什么不在UDF中使用Countifs()而不是遍歷每個單元格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.