首页 > 解决方案 > 使用 vba 在特定文本下插入新行

问题描述

我正在尝试使用新文本在特定文本(从用户表单中选择)下插入新行,但在该行中出现错误“对象变量或未设置块变量” "fvalue.Value = Me.txtremark.Value"

请帮我找出我在代码中所犯的错误。我试图找到很多方法,但都失败了。

表格:

在此处输入图像描述

所需输出:

在此处输入图像描述

Private Sub cmdadd_Click()

    Dim fvalue As Range
    Dim wks As Worksheet
    Set wks = ThisWorkbook.Worksheets("Sheet1")
    wks.Activate
    Set fvalue = wks.Range("B:B").Find(What:=Me.txtremark.Value, LookIn:=xlFormulas, LookAt:=xlWhole)
    fvalue.Value = Me.txtremark.Value
    fvalue.Offset(1).EntireRow.Insert Shift:=xlDown
    fvalue.Offset(0, 1).Value = Me.txtplace.Value

End Sub

标签: excelvba

解决方案


尝试使用单独的变量将值传递给工作表,或者只是参考文本框。

此外,激活(和选择)不是必需的,并且会损害宏的速度并且容易出错。

Option Explicit

Private Sub cmdadd_Click()

    Dim fvalue As Range
    Dim wks As Worksheet
    Set wks = ThisWorkbook.Worksheets("Sheet1")

    Set fvalue = wks.Range("B:B").Find(What:=Me.txtremark.Value, LookIn:=xlFormulas, LookAt:=xlWhole)
    If Not fvalue Is Nothing Then
        wks.Rows(fvalue.Row + 1).EntireRow.Insert
        wks.Cells(fvalue.Row + 1, fvalue.Column + 1).Value = Me.txtremark.Value
    End If
End Sub

我冒昧地检查是否首先找到了该值


推荐阅读