2016-03-30 2 views
0

Я новичок в vba, в настоящее время я работаю, и моему боссу нужно создать макрос excel.Excel 2013 сравнивает даты в разных строках с использованием макроса «Ошибка времени выполнения 13, несоответствие типа»

Функция макросъемки:

  • сравнить данные даты, даты с датой End Start.
  • auto напоминают сотрудникам, работающим с контрактом, устаревшим при открытии рабочего листа.
  • если работники контракта устарели, выделите детали сотрудников.

Так что теперь я застреваю до «Ошибка времени выполнения 13, несоответствие типа».

Ниже приведена моя часть трещин, разница между >>> < < <.

Private Sub Worksheet_Activate() 
Dim rngA As Range 
Dim rngD As Range 

With Worksheets("Sheet1") 

    For Each rngA In .Range(.Range("A1"), .Cells(.Rows.Count, "A").End(xlUp)) 
    For Each rngD In .Range(.Range("D1"), .Cells(.Rows.Count, "D").End(xlUp)) 

     >>> If rngA.Value("A1:xlUp") >= rngD.Value("D1:xlUp") Then <<< 
      MsgBox "Sheet 1 Row " & rngA.Row & " expiring" 
      rngC.Interior.ColorIndex = 3 
      rngC.Font.ColorIndex = 2 
      rngC.Font.Bold = True 

     End If 


    Next rngD 
    Next rngA 


End With 
End Sub 
+0

'Если rngA.Value> = rngD.Value затем' – Sam

+0

Почему бы вам не использовать условное форматирование? Также отмечая, что ваш код смотрит на столбец A и столбец D в той же строке (что отличается от того, что вы объясняете в своем вопросе). – brettdj

+0

Спасибо за ответ, но я не понимаю вашего предложения .... @@ – Han

ответ

1

Пожалуйста, попробуйте этот

With Worksheets("Sheet2") 
lastrow = Range("A1048576").End(xlUp).Row 
For i = 2 To lastrow 
    If Range("A" & i).Value <> "" And Range("D" & i).Value <> "" Then 
     If Range("A" & i).Value >= Range("D" & i).Value Then 
      Range("C" & i).Value = "Contract Going to Expire" 
      Range("C" & i).Interior.Color = 3 
      Range("C" & i).Font.ColorIndex = 2 
      Range("C" & i).Font.Bold = True 
     End If 
    End If 
Next i 

конец с

+0

yeap ~! он работает! ... но чувак ... Я до сих пор пытаюсь добавить в поле сообщения до сих пор я только что добавил в этом MsgBox «Лист 1 ряд» и диапазон («A» & i) & « expating " Работает MsgBox. – Han

+0

Клянусь, могу ли я узнать о значении вашей трединга? >>> Диапазон («H1048576»). Конец (xlUp) .Что <<< что это значит? Как насчет того, если я начну считать счет H4 до конца, а не H1? Как мне изменить его? Ждем вашего ответа. thx – Han

+0

@Han, это означает найти последнюю непустую строку со дна листа excel определенного столбца. –