Object必需的VBA Strcomp函数

时间:2016-02-23 10:19:08

标签: excel vba excel-vba

我们有一个导出到excel的SQL数据库。数据库中的每条记录都是对项目的评估。每个项目都有一个项目标识符(字符串)。由于项目可以评估两次,因此每个项目可以有两个记录。两个记录之间的差异是id号(数字),最近的记录具有更高的id号。记录将导出为ex​​cel,每条记录作为电子表格中的一行。我正在尝试编写一个比较两个项目标识符的子项,并删除具有较低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

非常感谢任何帮助。我不是程序员,我只是尽力而为。提前谢谢。

2 个答案:

答案 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