我们有一个导出到excel的SQL数据库。数据库中的每条记录都是对项目的评估。每个项目都有一个项目标识符(字符串)。由于项目可以评估两次,因此每个项目可以有两个记录。两个记录之间的差异是id号(数字),最近的记录具有更高的id号。记录将导出为excel,每条记录作为电子表格中的一行。我正在尝试编写一个比较两个项目标识符的子项,并删除具有较低ID号的行。我一直在为SameP获取一个对象所需的错误。
Dim Pident1 As String
Dim Pident2 As String
Dim IdNumb1 As Variant
Dim IdNumb2 As Variant
Dim i As Integer
Dim SameP As Integer
i = 2
For i = 2 To 100
Pident1 = ActiveSheet.Cells(i, 2).Text
Pident2 = ActiveSheet.Cells(i + 1, 2).Text
IdNumb1 = ActiveSheet.Cells(i, 1).Value
IdNumb2 = ActiveSheet.Cells(i + 1, 1).Value
Set SameP = StrComp(Pident1, Pident2, CompareMethod.Text)
If SameP = 0 And IdNumb1> Idnumb2 Then Data.Rows(i).EntireRow.Delete
Next i
End Sub
非常感谢任何帮助。我不是程序员,我只是尽力而为。提前谢谢。
答案 0 :(得分:1)
您需要更改此
SameP = StrComp(Pident1, Pident2, CompareMethod.Text)
到此:
SameP = StrComp(Pident1, Pident2)
错误就是这一行
Data.Rows(i).EntireRow.Delete
将此更改为
Sheets("Name_of_sheet_here").Rows(i).EntireRow.Delete
或者这也可以使用
Activeworksheet.Rows(i).EntireRow.Delete
答案 1 :(得分:1)
改变这个:
Set SameP = StrComp(Pident1, Pident2, CompareMethod.Text)
If SameP = 0 And IdNumb1> Idnumb2 Then Data.Rows(i).EntireRow.Delete
到
SameP = StrComp(Pident1, Pident2, vbTextCompare )
If SameP = 0 And IdNumb1> Idnumb2 Then ActiveSheet.Rows(i).EntireRow.Delete