Vba 日期格式错误类型不匹配
下面是我遇到错误的代码 如果DOJ=”“,那么。错误为“错误13,类型不匹配” 我想检查单元格是否为空,如果为空,则将内部颜色更改为蓝色,但它由于类型不匹配而给出错误。 请帮忙解决Vba 日期格式错误类型不匹配,vba,Vba,下面是我遇到错误的代码 如果DOJ=”“,那么。错误为“错误13,类型不匹配” 我想检查单元格是否为空,如果为空,则将内部颜色更改为蓝色,但它由于类型不匹配而给出错误。 请帮忙解决 Sub BGVslaCheck() fpath = Worksheets("Refrence").Range("C9").Value fname = Worksheets("Refrence").Range("b9").Value & ".xlsx" Dim Emp1 As Date Dim DOJ As D
Sub BGVslaCheck()
fpath = Worksheets("Refrence").Range("C9").Value
fname = Worksheets("Refrence").Range("b9").Value & ".xlsx"
Dim Emp1 As Date
Dim DOJ As Date
Dim Cri As Date
Dim Edu As Date
'On Error Resume Next
Workbooks.Open (fpath & fname)
Worksheets("BGV").Select
Set wf = Application.WorksheetFunction
i = Range("a65536").End(xlUp).Row
For J = 11 To i
DOJ = Worksheets("BGV").Range("c" & J).Value
Cri = Worksheets("BGV").Range("g" & J).Value
Edu = Worksheets("BGV").Range("i" & J).Value
Emp1 = Worksheets("BGV").Range("K" & J).Value
a = wf.NetworkDays(DOJ, Cri)
b = wf.NetworkDays(DOJ, Edu)
c = wf.NetworkDays(DOJ, Emp)
Worksheets("BGV").Range("N" & J).Select
If a > 14 Or b > 14 Or c > 14 Then
With Selection.Interior
.Color = VBA.RGB(250, 0, 0)
End With
Else
With Selection.Interior
.Color = VBA.RGB(0, 250, 0)
End With
End If
'If DOJ = " " Or Cri = " " Or Edu = " " Then
If DOJ = " " Then
With Selection.Interior
.Color = VBA.RGB(0, 0, 250)
End With
End If
Next
Workbooks(fname).Close
DOJ变暗为日期,而您的支票为字符串。下面的方法也可以,你可以把它作为一个日期,如果我是空的(美国司法部)就这样做
另外,
VBA.RGB
语法是否有效?你就不能说.Color=RGB(0,0,250)
,等等吗?@dwirony,是的,它是有效的,并尝试了你的建议,这也是有效的。谢谢。谢谢你的回答。代码正在运行。
Sub BGVslaCheck()
fpath = Worksheets("Refrence").Range("C9").Value
fname = Worksheets("Refrence").Range("b9").Value & ".xlsx"
Dim Emp1 As Date
Dim DOJ
Dim Cri As Date
Dim Edu As Date
'On Error Resume Next
Workbooks.Open (fpath & fname)
Worksheets("BGV").Select
Set wf = Application.WorksheetFunction
i = Range("a65536").End(xlUp).Row
For J = 11 To i
DOJ = Worksheets("BGV").Range("c" & J).Value
Cri = Worksheets("BGV").Range("g" & J).Value
Edu = Worksheets("BGV").Range("i" & J).Value
Emp1 = Worksheets("BGV").Range("K" & J).Value
a = wf.NetworkDays(DOJ, Cri)
b = wf.NetworkDays(DOJ, Edu)
c = wf.NetworkDays(DOJ, Emp)
Worksheets("BGV").Range("N" & J).Select
If a > 14 Or b > 14 Or c > 14 Then
With Selection.Interior
.Color = VBA.RGB(250, 0, 0)
End With
Else
With Selection.Interior
.Color = VBA.RGB(0, 250, 0)
End With
End If
'you could try: if isempty(DOJ) then
'If DOJ = " " Or Cri = " " Or Edu = " " Then
If DOJ = " " Then
With Selection.Interior
.Color = VBA.RGB(0, 0, 250)
End With
End If
Next
Workbooks(fname).Close