首页 文章

Excel VBA,找到下一个空单元格

提问于
浏览
-1

我想做的事应该很容易,但我身上的菜鸟正在展示 . 我正在使用另一个工作表中的dataentry表单在Excel中创建数据库 . 单击“输入”按钮时,它会运行一个宏,将信息从dataentry表放入Excel数据库 . 当然,问题是下一条记录会覆盖以前的记录 . 我想要做的是从dataentry表单中的字段复制数据,然后转到数据库并找到下一个空行并将信息粘贴到那里 . 理想情况下,该过程将继续并复制dataentry表单中的下一个字段,找到先前粘贴的数据右侧的空单元格,然后重复,直到所有6个字段都已复制并粘贴到excel数据库 . 我想在excel中完成所有操作而不是访问数据库 . 有任何想法吗?

2 回答

  • 2

    这将找到提供的工作簿和工作表中使用的最后一个单元格(最后一列和最后一行) . 适应品味(例如,如果您只使用一本工作簿,则不需要targetwkb) . 如果您不需要查找最后一列,或者只是想要给定列的特定最后一行,您可以只定义不同的“With”部分(我们“使用Worksheets(targetSheet).Range(”A:A “)或类似的东西:

    Function FindLastCell(targetWbk As String, targetSheet As String) As Range
    Dim LastColumn As Integer, lastRow As Integer
    'Finds the last used cell in target wbk/sheet
    
    With Workbooks(targetWbk).Worksheets(targetSheet)
       lastRow = .Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows,       SearchDirection:=xlPrevious).row
       LastColumn = .Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
       Set FindLastCell = Range(.Cells(1, 1), .Cells(lastRow, LastColumn))
    End With
    End Function
    

    以上是一种更好的方法,因为它从最后一个单元格搜索到顶部 . 另一方面,如果你有一个空单元格,那么Excel将停止搜索,你可以覆盖所有后面的数据只是因为一个空白单元格留在某处 .

    如果你有很多数据(比如数十万)你可能想要长整数更改,所以你不要碰到整数限制 . 它也不需要是一个函数,可能是一个子函数但不重要...

  • 1

    你可以试试

    Sub LastRow() 
        Dim rngLast As Range 
    
        With ThisWorkbook.Worksheets("Sheet1") 
            If .Range("A1").Value = "" Then 
                Set rngLast = .Range("A1") 
            Else 
                Set rngLast = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0) 
            End If 
            MsgBox "Next blank row is " & rngLast.Address 
        End With 
    
    End Sub
    

相关问题