Excel VBA代码添加空行

时间:2018-05-18 12:31:12

标签: vba excel-vba excel

我是VBA的新手,我编写了下面的代码,它应该比较两列中的日期,然后选择哪个日期更大并将其显示在名为PPDCI的工作表上。如果没有日期或日期相等,那么它将在另一个名为“错误”和“查看PPD数据”的工作表上显示该记录。

对于将数据输出到PPDCI工作表的变量PPD_1_Date和PPD_2_Date的前两个IF条件,该程序似乎工作正常,但是Error选项卡上的结果不是我所期望的。它似乎包括空白行(我认为在PPDCI选项卡上包含数据的行),仅包含具有“REVIEW PPD DATA”(ID,缺少名称信息)的单元格的行,以及仅包含A列数据的行 - C(来自“数据”工作表列F-H)。

我尝试更改代码(下面注释掉)以包含一个条件,如果两个日期字段为空,那么GoTo EmptyRange,就在迭代Next i之前。这产生了运行时错误,即使它适用于我的模块中的其他几个函数

Function PPDdate()

Dim PPD_1_Date As Date
Dim PPD_2_Date As Date
Dim i As Long, j As Long, k As Long

j = Worksheets("PPDCI").Range("A" & Rows.Count).End(xlUp).Row + 1
k = Worksheets("Error").Range("A" & Rows.Count).End(xlUp).Row + 1
For i = 2 To lstrow

PPD_1_Date = Worksheets("Data").Range("AW" & i)
PPD_2_Date = Worksheets("Data").Range("BA" & i)

If PPD_1_Date > PPD_2_Date Then
 Worksheets("PPDCI").Range("A" & j & ":C" & j).Value = 
 Worksheets("Data").Range("F" & i & ":H" & i).Value
 Worksheets("PPDCI").Range("F" & j).Value = PPD_1_Date
j = j + 1
Else
 If PPD_1_Date < PPD_2_Date Then
  Worksheets("PPDCI").Range("A" & j & ":C" & j).Value = 
  Worksheets("Data").Range("F" & i & ":H" & i).Value
  Worksheets("PPDCI").Range("F" & j).Value = PPD_2_Date
  Worksheets("PPDCI").Range("G" & j).Value = "ELSE IF CONDITION"
  j = j + 1
 Else
'If IsEmpty(Worksheets("Data").Range(PPD_1_Date & i).Value) = True And 
 IsEmpty(Worksheets("Data").Range(PPD_2_Date & i).Value) = True Then
   'GoTo EmptyRange
'Else
  Worksheets("Error").Range("A" & k & ":C" & k).Value = 
  Worksheets("Data").Range("F" & i & ":H" & i).Value
  Worksheets("Error").Range("F" & j).Value = "REVIEW PPD DATA"
  k = k + 1
  'End If

 End If
End If
EmptyRange:

'k = k + 1

Next i

End Function

enter image description here

我希望所有符合最终Else语句的行都能组合在一起,而不会遗漏任何单元格。我应该在代码中的其他地方增加k(k = k + 1)吗?任何反馈都表示赞赏!

enter image description here

0 个答案:

没有答案