【问题标题】:UserForm click checkbox to fill an offset from a filled cell VBA用户窗体单击复选框以填充填充单元格 VBA 的偏移量
【发布时间】:2015-07-06 14:36:44
【问题描述】:

我需要一个复选框,以便在单击后在最后一个客户端名称的偏移处填写一个值(最后一个填充的单元格从 B3 开始)。有一个提交按钮,用于填写客户名称并计算以吨为单位的值。这个想法是在填写客户名称并计算出吨数后,复选框应将吨值写入适当的偏移单元格。然后,用户窗体将客户端和吨值移动到下一个可用的空单元格,这就是为什么我要基于最后一个客户端名称的复选框。我不能让用户表单检查最后一个空单元格并使用复选框来填充它,因为有时上面的单元格会是空的,具体取决于购买的材料。

这是我的代码(尝试使偏移量使用客户端的单元格检查方法)

Private Sub CHKTALCO_Click()
  Dim T As Long

  Sheets("Sales").Activate
  ActiveSheet.Range("B3").Activate

  Do While Not IsEmpty(ActiveCell.Offset(T, 1)) = False
    T = T + 1
  Loop

  If CHKTALCO.Value = 1 Then
    ActiveCell.Offset(T, 1).Value = TBTONS.Value
  End If
End Sub

我一直在学习 VBA,因此非常欢迎解释。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    要查找任何特定列中最后使用的行,我使用以下命令:

    lastRow = YourSheet.Cells(Yoursheet.Rows.Count, YourColumn).End(xlUp).Row
    

    你可以用这样的东西替换你的子程序:

    Private Sub CHKTALCO_Click()
    
        dim lastRow as long
        dim sht As Worksheet
    
        set sht = Worksheets("Sales")
    
        lastRow = sht.Cells(sht.Rows.Count,"B").End(xlUp).Row
    
        If CHKTALCO.Value = 1 Then
            sht.Cells(lastRow, 3).Value = TBTONS.Value
        End If
    
    End Sub
    

    注意:使用.Activate 会更快,因为它不是必需的。

    【讨论】:

    • 首先,感谢 Porcupine 的回复。其次,我已经尝试检查最后一行,但由于表单上有预填充的单元格,所以用户表单会一直写在底部。这就是我使用活动单元格查找B3 并向下移动的原因。同样由于某种原因,当我输入此行检查代码时,表单没有写入任何内容,这更奇怪。
    猜你喜欢
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 2017-10-31
    • 2018-07-21
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多