Excel 如何在VBA中查找下一个空白列并使用VBA表单填充它

Excel 如何在VBA中查找下一个空白列并使用VBA表单填充它,excel,vba,Excel,Vba,我正在尝试设置一个VBA表单,该表单将查找表中的下一个空列,并使用表单中输入的值填充空单元格 当前代码基本上会在B列中找到下一个空单元格,并在提交表单后重置表单 我将在下面发布我正在使用的表格和表格的图像。 代码: Private Sub addButton1\u Click() 如果SurfaceTantCountBox.Value=“”或wetterCountBox.Value=“”或causticCountBox.Value=“”,则 如果MsgBox(“表单未完成。是否继续?”,vb

我正在尝试设置一个VBA表单,该表单将查找表中的下一个空列,并使用表单中输入的值填充空单元格

当前代码基本上会在B列中找到下一个空单元格,并在提交表单后重置表单

我将在下面发布我正在使用的表格和表格的图像。

代码:

Private Sub addButton1\u Click()
如果SurfaceTantCountBox.Value=“”或wetterCountBox.Value=“”或causticCountBox.Value=“”,则
如果MsgBox(“表单未完成。是否继续?”,vbQuestion+vbYesNo)vbYes然后
UserForm1.SurfaceTantCountBox.SetFocus
出口接头
如果结束
如果结束
叫芬迪
呼叫重置表单
端接头
附属表格(
SurfaceTantCountBox.Value=“”
wetterCountBox.Value=“”
causticCountBox.Value=“”
UserForm1.SurfaceTantCountBox.SetFocus
端接头
子findEmpty()
将ws设置为工作表
设置ws=ActiveSheet
对于ws.Columns(2.Cells)中的每个单元格
如果IsEmpty(cell)=True,则选择cell。选择:退出
下一个细胞
端接头
ws.Columns(2)
指的是B列-您的代码正在查看B列中的每个单元格,因此如果有任何内容,将返回最后一行

话虽如此,您不必查看每一行/每一列。通过转到最后一个单元格(例如,单元格
XFD2
并按
Ctrl+Left
)可手动查找最后一列,这将带您进入第2行的最后一列

要在代码中执行此操作,请执行以下操作:

Sub findEmpty()

    Dim ws As Worksheet
    Set ws = ActiveSheet
    
    Dim NextEmptyCell As Range
    With ws
        'This is the same as going to XFD2 and pressing Ctrl+Left and then going one cell right.
        Set NextEmptyCell = .Cells(2, .Columns.Count).End(xlToLeft).Offset(, 1)
    End With
    
    Debug.Print NextEmptyCell.Address

End Sub

这是查找第2行中下一个空列的一种方法

Set rngEmpty=ActiveSheet.Cells(2,Columns.Count).End(xlToRight).Offset(,1)
我们可以将其合并到代码的其余部分,以添加来自userform的数据

Private Sub addButton1\u Click()
模糊范围
如果SurfaceTantCountBox.Value=“”或wetterCountBox.Value=“”或causticCountBox.Value=“”,则
如果MsgBox(“表单未完成。是否继续?”,vbQuestion+vbYesNo)vbYes然后
Me.surfacetantCountBox.SetFocus
出口接头
如果结束
如果结束
Set rngEmpty=ActiveSheet.Cells(2,Columns.Count)。End(xlToRight)。Offset(,1)
有礼貌
.Value=Me.surfacetantCountBox.Value
.Offset(1).Value=Me.causticCountBox.Value
.Offset(2).Value=Me.wetterCountBox.Value
以
呼叫重置表单
端接头

它不允许我添加实际图片,所以它将其作为链接添加,但我继续添加,并将代码作为文本包含。
Sub findEmpty()

    Dim ws As Worksheet
    Set ws = ActiveSheet
    
    Dim NextEmptyCell As Range
    With ws
        'This is the same as going to XFD2 and pressing Ctrl+Left and then going one cell right.
        Set NextEmptyCell = .Cells(2, .Columns.Count).End(xlToLeft).Offset(, 1)
    End With
    
    Debug.Print NextEmptyCell.Address

End Sub