excel - 使用 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
解决方案
尝试使用单独的变量将值传递给工作表,或者只是参考文本框。
此外,激活(和选择)不是必需的,并且会损害宏的速度并且容易出错。
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
我冒昧地检查是否首先找到了该值
推荐阅读
- c++ - 如何在不创建文件的情况下通过外部库将原始字节写入 ostream
- javascript - 如何向 OpenCV.js 添加 `accumulateWeighted` 支持?
- deployment - 无法发布 Azure 函数
- algorithm - 关于mergesort的合并算法的问题
- php - 在自定义请求验证错误后获取表单上的旧变量或用户变量值,使用两种不同的表单查看
- assembly - 调用函数时的 x86-64 段错误(AT&T 语法)
- php - php增加时间字符串变量
- bash - 在 bash 中的 5,000 个目录中创建 5,000,000,000 个空文件的最快方法
- javascript - 如何从我的 html 表单中的 API 获取信息?
- visual-studio - Visual Studio 将 Selenium 代码编译为 exe