2017-07-07 17 views
0

以下は、 にエラーが発生するコードです。エラーは「エラー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、はい有効で、あなたの提案を試しました。それはまた働いています。 Lowpar-あなたの答えをありがとう。コードが実行されています。 –

答えて

1

DOJは、文字列のチェック中に日付として淡色表示されます。以下は、代わりに動作する必要があります、あなたは日付としてそれを保つことができ、次にisempty(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