【问题标题】:Object Variable or With Block Not Set- Userform对象变量或未设置块 - 用户窗体
【发布时间】:2019-11-21 11:22:32
【问题描述】:

我是 VBA 的新手,我创建了一个用户表单,我想要它做的只是在单击 Enter 按钮后,它将填充的文本框添加到 Excel 工作表的下一个空行中。我得到对象变量未设置(在 rw = ws.Cells 行),我不知道如何设置它。

非常感谢。

Private Sub enter_Click()
Dim rw As Integer
Dim ws As Worksheet
Set ws = Worksheets("Home")
rw = ws.Cells.Find(What:=” * ”, SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
ws.Cells(rw, 1).Value = Me.TextBox1.Value
ws.Cells(rw, 2).Value = Me.TextBox2.Value
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    试试这个。

    你需要直引号而不是那些弯引号。

    使用Find 时,请始终检查是否找到您的术语,否则在尝试将行分配给Nothing 时会出错。

    如果您正在寻找第一个未使用的行,还请设置 After 参数 - 从顶部开始并向上处理,即循环返回底部并向上。

    Private Sub enter_Click()
    
    Dim rw As Long  'rather than integer
    Dim ws As Worksheet
    Dim r As Range
    
    Set ws = Worksheets("Home")
    Set r = ws.Cells.Find(What:="*", after:=ws.Cells(1), SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues)
    'alternatively could use rw=ws.range("A" & rows.count).end(xlup).row + 1
    
    If Not r Is Nothing Then
        ws.Cells(r.row+1, 1).Value = Me.TextBox1.Value
        ws.Cells(r.Row + 1, 2).Value = Me.TextBox2.Value
    End If
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2018-02-18
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 2018-12-11
      • 2013-07-01
      • 1970-01-01
      相关资源
      最近更新 更多