我有一个Master.xlsx。我有两个变量开始和结束-定义了我应该在字典中存储的日期范围。
我也有单独的工作表中的假期列表,我正尝试从字典中删除该列表。
Set hld = Sheet2.Range("A2:A7")
....
....
Dim WDdict As New Scripting.dictionary
For n = startd To endd: WDdict(n) = 1: Next
For Each hd In hld
If hd > 0 Then hd = DateValue(hd): If WDdict.Exists(hd) Then WDdict.Remove (hd)
Next
“基础”是工作表之一的名称。此“基础”工作表有两个关键列-电子邮件和加入日期(DOJ)
EmlsrcA = Application.Transpose(src.Sheets("Base").Range("A2:A" & rowsn))
DojsrcA = Application.Transpose(src.Sheets("Base").Range("G2:G" & rowsn))
我想做什么
如果每行的DOJ值晚于/迟于startd(输入参数),那么我想从字典中删除startd和DOJ之间的每个日期。
所以,我尝试了类似的事情
For Each emls In EmlsrcA 'each line in email in base page
Dim WDdictrs As New Scripting.dictionary
For Each elm In WDdict: WDdictrs(elm) = 1: Next
remove dates before doj
dj = 0
If DojsrcA(dj) > startd Then
dj = dj + 1
For n = startd To DojsrcA(dj):
If WDdictrs.Exists(n) Then WDdictrs.Remove (n) Else WDdictrs(n) = 1
Next
End If
在“如果DojsrcA(dj)> Startd Then”上引发下标超出范围错误。我在做什么错了?
答案 0 :(得分:1)
DojsrcA是Range对象中基于Variants的基数为1的二维数组。 您的变量dj = 0,所以超出范围以1开始。