2017-07-07 126 views
0

下面是我在其中得到错误的代码 如果DOJ =“”那么。错误是“错误13,类型不匹配”日期格式错误类型不匹配

我想检查单元格是否为空,如果为空,则将内部颜色更改为蓝色,但它会给出错误,因为类型不匹配。 请帮忙解决。

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 
+0

此外,是'VBA.RGB'有效的语法?难道你不能说'.Color = RGB(0,0,250)'等等。 – dwirony

+0

@dwirony,是它的有效和尝试你的建议,这也是working.thanks。 Lowpar-感谢您的回答。代码正在运行。 –

回答

1

司法部黯淡的日期,而你的支票是一个字符串。下面应该可以工作,你可以保留它作为一个日期,然后如果是空的话(DOJ)。

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