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