VBA 用户表单作为输入框

2023-12-09

我有一个用户表单,您可以在其中编辑 Excel 工作表单元格中的文本。由于输入框没有跳过按钮,我创建了一个用户窗体,您可以在整个工作簿中搜索一个值并将其替换为另一个值条目。问题是我想逐个编辑找到的值,而不是同时编辑所有值。我有以下代码,但它的作用是,它替换每张纸中找到的值的每个第一次出现。我如何更改它替换第一张表中的值然后替换第二张表中的值的逻辑,依此类推。

Dim ws As Worksheet
Dim Loc As Range
Dim StrVal As String
Dim StrRep As String
Private Sub CommandButton1_Click() 
    StrVal = UserForm1.TextBox3.Text

    If Trim(StrVal) = "" Then Exit Sub
    For Each ws In ThisWorkbook.Worksheets
        With ws.UsedRange
            Set Loc = .Cells.Find(What:=StrVal)
            If Not Loc Is Nothing Then
                'Do Until Loc Is Nothing
                    Application.Goto Loc, False 
                    StrRep = TextBox1.Text
                    If Not StrRep = "" Then
                    Loc.Value = StrRep
                    Set Loc = .FindNext(Loc)
                    Else
                    Exit Sub
                    End If
                'Loop
            End If
        End With
        Set Loc = Nothing

    Next
End Sub

我创建了这个,它可以工作,但现在有一个问题,即使没有现有值,它也会跳过。

Set ws = ThisWorkbook.ActiveSheet
Set Loc = ws.Cells.Find(what:=StrVal)
If Not Loc Is Nothing Then
    Application.Goto Loc, False
    StrRep = TextBox1.Text
    If Not StrRep = "" Then Loc.Value = StrRep
Else
    Worksheets(ActiveSheet.Index + 1).Select
End If

Try this

For Each ws In ThisWorkbook.Worksheets
    Application.Goto ws.Range("A1"), True
    Set Loc = ws.Cells.Find(What:=strVal, After:=ws.Cells(Rows.Count, Columns.Count), SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False) 'You can change MatchCase to True for better checking
    If Not Loc Is Nothing Then
        strFirstAddress = Loc.Address
        changeBool = False
        Do
            strRep = Me.TextBox1.Text
            If Not strRep = "" Then
                Application.Goto ws.Range(Loc.Address), False
                If MsgBox("Do you want to change the value of cell " & Loc.Address(0, 0) & " of worksheet " & ws.Name & "?", vbYesNo + vbQuestion, "Question") = vbYes Then
                    Loc.Value = strRep
                    If Loc.Address = strFirstAddress Then
                        changeBool = True
                    Else
                        changeBool = False
                    End If
                Else
                    changeBool = False
                End If
            End If
            Set Loc = ws.Cells.FindNext(After:=Loc)
            If Not Loc Is Nothing Then
                If Loc.Address = strFirstAddress Then Set Loc = Nothing
            End If
            If Not Loc Is Nothing And changeBool = True Then strFirstAddress = Loc.Address
        Loop While Not Loc Is Nothing
    End If
Next ws
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VBA 用户表单作为输入框 的相关文章

随机推荐

  • 伪析构函数调用不会销毁对象

    考虑以下代码 include
  • Android 按钮的拖放

    我在 android 中工作 我正在使用一个按钮 现在我想执行该按钮的拖放操作 这是我的 main xml
  • 用Java显示CMD窗口

    我使用此代码启动 cmd 文件 try String line Process p Runtime getRuntime exec myPath punchRender cmd BufferedReader input new Buffer
  • 如何以编程方式禁用Android硬件按钮?

    我正在开发具有锁定功能的 Android 应用程序 请建议我如何以编程方式禁用所有硬键 在这里 我使用下面的代码来禁用后退按钮 我希望以编程方式为 Android 中的所有硬键 如主页 菜单按钮 通知栏 提供此功能 用于后退按钮 在活动或片
  • 如何获取调用 python 函数的脚本名称?

    我知道 file 包含包含代码的文件名 但是有没有办法获取调用该函数的脚本 文件的名称 如果我有一个名为filenametest b py def printFilename print file 我将函数导入filenametest a
  • SCSS编译后将@import保留在CSS末尾

    我们需要把 import在我的 CSS 文件的末尾 例如 SCSS import reset css Body font 0 8em arial import customation css 编译为 import reset css bod
  • Bootstrap:在小屏幕上重新排序 3 列

    我在尝试使用 bootstrap HTML 和 CSS 对列重新排序时遇到一些问题 目前 我的布局是这样的 B 和 C 包含在单个列中 而 A 本身有一个列 在台式机和平板电脑上 这样就可以了 但我需要为小型设备重新排序内容以获得如下内容
  • 在sql server中分割字符串

    我在数据库中有一个以逗号分隔的字符串 就像 苹果 香蕉 菠萝 葡萄 我需要根据逗号分割这个字符串并迭代它 由于sql server中没有内置函数 是否有任何有效的方法可以实现这个目标 试试这个功能 CREATE FUNCTION dbo f
  • 用于从 SFTP 服务器进行无服务器日志提取(文件下载)的 Google Cloud Platform 解决方案

    今天有一个问题 在我输入答案时被删除了 不知道为什么 由于答案很长 我决定复制 重新创建它并提供我的答案反正 也许这对某人有用 这是原来的问题 我们有一个 SFTP 服务器 其中转储 Apache Nginx Wordpress 日志 我们
  • org.apache.jasper.JasperException:未指定默认命名空间时,函数 split 必须使用前缀

    调用我的应用程序的第一页时引发以下异常 org apache jasper JasperException WEB INF login jsp 28 21 The function split must be used with a pre
  • 熊猫融化功能

    我有一个数据框 df pd DataFrame 2 4 7 8 1 3 2013 9 2 4 5 5 6 2014 columns Amy Bob Carl Chris Ben Other Year Amy Bob Carl Chris B
  • GoLang,MethodName前面括号里的内容是什么?

    func t T MethodName argType T1 replyType T2 error MethodName 前面括号内的内容是什么 我的意思是这个 t T 这来自这里 http golang org pkg net rpc 我
  • edittext可见意味着我如何检查android中的if条件

    我已经检查过我的编辑文本在 Android 中是可见还是不可见 现在我必须检查条件是 如果我的编辑文本可见意味着我如何插入数据 如果我的编辑文本消失了意味着我如何插入另一个数据 这是我的代码 如果我必须选中复选框 则意味着编辑文本不可见 否
  • 为什么我的任务没有取消?

    我正在运行一个进程 定期卷曲到 URL 列表以测试这些网站的性能 我的主程序基本上是一个 do sleep while 循环 每 N 秒调用一个函数 runTest 并用键盘中断来终止它 精简到基础知识 我的代码如下 public void
  • 无法让 INSERT 在 SPARQLWrapper 中工作

    我一直在尝试让 SPARQLWrapper 将一个简单的三元组插入到 GraphDB 中 但没有成功 我对选择查询没有任何问题 这是失败的 Python 测试代码 db sparqlw SPARQLWrapper endpoint quer
  • 获取来自 Whatsapp 的所有消息

    我正在尝试实现一个应用程序 它将在文本视图中显示从 Whatsapp 收到的所有消息 有什么办法可以做到吗 是否可以提取 Whatsapp 中的所有消息 Whatsapp 将所有消息存储在加密数据库 pyCrypt 中 使用 Python
  • 无法通过空手道框架上传 zip 文件

    我正在尝试使用堆栈溢出参考通过空手道框架上传 zip 文件 使用空手道以表单数据方式上传文件的请求和空手道文件上传功能 请找到下面的代码 Given path upload And header Content Type applicati
  • jQuery.animate 背景位置

    如何使用 jQuery 的 animate 函数在不使用插件的情况下为背景位置属性设置动画 当支持backgroundPosition时 我尝试切换回1 4 4 但它似乎只适用于IE 而不适用于FF或Chrome 我尝试查看 animate
  • 在 Spring 应用程序上下文文件中定义列表

    您可以在 Spring application context xml 文件中创建一个列表而不使用
  • VBA 用户表单作为输入框

    我有一个用户表单 您可以在其中编辑 Excel 工作表单元格中的文本 由于输入框没有跳过按钮 我创建了一个用户窗体 您可以在整个工作簿中搜索一个值并将其替换为另一个值条目 问题是我想逐个编辑找到的值 而不是同时编辑所有值 我有以下代码 但它