Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA,查找下一个空单元格_Excel_Vba - Fatal编程技术网

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

Excel VBA,查找下一个空单元格,excel,vba,Excel,Vba,我想做的应该很容易,但我内心的noob正在显现。我正在使用另一个工作表中的数据输入表单在excel中创建数据库。单击“输入”按钮时,它会运行一个宏,将数据输入表中的信息放入Excel数据库。当然,问题是下一条记录会覆盖上一条记录。我要做的是从dataentry表单中的一个字段复制数据,然后转到数据库,找到下一个空行并将信息粘贴到那里。理想情况下,该过程将继续并复制数据输入表单中的下一个字段,在先前粘贴的数据右侧找到空单元格,然后重复,直到所有6个字段都已复制并粘贴到excel数据库。我想在exc

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

你可以试试

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

这将查找所提供工作簿和工作表中使用的最后一个单元格(最后一列和最后一行)。适应口味(例如,如果您只使用一个工作簿,则不需要targetwkb)。如果您不需要查找最后一列,或者只需要给定列的特定最后一行,您可以使用工作表(targetSheet).Range(“a:a”)或类似的内容定义不同的“With”部分(w.e.):

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将停止搜索,并且您可以覆盖后面的所有数据,仅仅因为某个空单元格被保留在某个位置


如果你有很多数据(比如10万个)您可能需要长时间更改整数,这样您就不会碰到整数限制。它也不需要是函数,也可以是子函数,但没什么大不了的…

欢迎使用它!在web上有很多这样做的示例。请了解如何提问,以及什么是好问题。可能重复的