每当列中的值发生变化时,我都试图插入两行并复制并粘贴顶部行(标题)(这是一个较大的宏中的一项较小的任务,在该宏中,我正在格式化数据并粘贴该宏数据输入到Outlook电子邮件中)。出于某种原因,尽管数据显示“ j + 1”之间的值存在明显差异,但似乎我的“ if”语句未得到满足,因此没有执行“ then”代码(即未插入任何行)和“ j + 2”,因此应在它们之间插入行。根据下面的内容,您是否看到我的if语句有缺陷的任何原因?
Function RangetoHtml(rng As Range)
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
Dim TopR As Double
Dim j As Long
Dim LastR As Double
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
Range("B1").Select
For j = 1 To 100
If Cells(j + 1, 1).Value <> Cells(j + 2, 1).Value And Cells(j + 2, 1) <> 0 Then
Rows(j + 2).Resize(2).EntireRow.Insert
Rows("1").Copy
Rows(j + 3).PasteSpecial xlPasteFormats
Rows(j + 3).PasteSpecial xlPasteValues
j = j + 2
End If
Next
我已经在下面的代码中添加了一个用于测试我的代码的哑表,它确实在执行我想要的操作。我在上面的代码和下面的代码之间看不到任何区别,这似乎根本没有道理:
Sheets("Sheet1").Select
Range("E1").Select
For j = 1 To 100
If Cells(j + 1, 1).Value <> Cells(j + 2, 1).Value And Cells(j + 2, 1) <> 0 Then
Rows(j + 2).Resize(2).EntireRow.Insert
Rows("1").Copy
Rows(j + 3).PasteSpecial xlPasteFormats
Rows(j + 3).PasteSpecial xlPasteValues
j = j + 2
End If
Next