【问题标题】:Excel VBA, find the next empty cellExcel VBA,找到下一个空单元格
【发布时间】:2015-12-21 09:34:48
【问题描述】:

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

【问题讨论】:

标签: excel vba


【解决方案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

【讨论】:

    【解决方案2】:

    这将找到提供的工作簿和工作表中使用的最后一个单元格(最后一列和最后一行)。适应口味(例如,如果您只使用一个工作簿,则不需要 targetwkb)。如果您不需要找到最后一列,或者只想要给定列的特定最后一行,您可以定义不同的“With”部分(例如“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 将停止搜索,并且您可以覆盖后面的所有数据,因为在某处留下了一个空白单元格。

    如果您有大量数据(例如数千个),您可能希望将整数更改为 long,这样您就不会碰到整数限制。它也不需要是一个函数,可以是一个子但没关系...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-05
      • 1970-01-01
      相关资源
      最近更新 更多