如何使一个子停止,当它发现一个空白单元格?

我在Excell 2010的数据库工作,发现许多重复的名称。 我试图做一个VBA脚本来解决这个问题,但它只是在一个无限循环结束。 当它打到一个空白的单元格时,我希望它停止。 下面是我提出的代码

Sub excluirDuplicatas() Dim lngCont As Long Dim lngLinhas As Long Dim rngNom1 As Range Dim rngNom2 As Range lngCont = 0 lngLinhas = Cells.SpecialCells(xlCellTypeLastCell).Row While lngCont <= lngLinhas Set rngNom1 = ActiveCell Set rngNom2 = rngNom1.Offset(1, 0) While rngNom1.Value = rngNom2.Value And rngNom2 <> lastRow rngNom2.Select rngNom2.EntireRow.Delete Set rngNom2 = ActiveCell Wend Set rngNom1 = rngNom2 Set rngNom1 = ActiveCell Set rngNom1 = rngNom2 rngNom1.Select lngCont = lngCont + 1 Wend End Sub 

我不知道什么是错的,我的猜测是我说的部分

rngNom2 <> Cells.SpecialCells(xlCellTypeLastCell).Row

请注意,我今天(3月22日)主持了VBA编程。 如果你可以请张贴不仅答案,而且快速解释,我将不胜感激。

PS:数据表有2000多行

我会build议使用For循环,以便您可以避免使用。select您可能想看到这个链接

所以例如你的代码看起来像这样

 For i = 1 To lastRow If Len(Trim(Sheets("Sheet1").Range("A" & i).Value)) = 0 Then Exit For ' '~~> Rest of your code ' Next i 

我认为这个命令会帮助你。 将Range("a1")replace为您想要testing的任何范围。

IsEmpty(Range("a1"))

即, do while isempty(range("a1")) …或do while not isempty(range("a1"))

那么我不是100%确定你在做什么,但这将是一个开始。

首先声明一个范围variablesrng taht包含你想要检查的所有单元格。 我设置这个rngvariables的方法自动停在列的第一个空白单元格

我们将使用计数器r遍历这些单元格,从最后到第一个(删除时这是必要的)。

在这个迭代过程中,我们将使用variablescl作为单个单元格区域。

 Sub excluirDuplicatas() Dim rng as Range Dim r as Integer 'row counter. Dim cl As Range lngCont = 0 lngLinhas = Cells.SpecialCells(xlCellTypeLastCell).Row set rng = Range(ActiveCell.Address, Range(ActiveCell.Address).End(xlDown)) For r = rng.Rows.Count to 1 Step - 1 'Step backwards when deleting, otherwise you have infinite loop 'This tests to see if the cell value is the same as the value below it. ' and deletes it if it is the same value. If cl.Value = cl.Offset(1,0).Value Then cl.EntireRow.Delete End If Next 

结束小组