gpt4 book ai didi

vba - Excel VBA 用户窗体文本框 - 突出显示以不同字体颜色所做的更改

转载 作者:行者123 更新时间:2023-12-02 02:47:50 24 4
gpt4 key购买 nike

我的用户表单上有几个文本框,其中的值由搜索宏自动填充。自动填充文本框后,用户就可以选择编辑文本框值。我想用不同的字体颜色突出显示用户所做的任何更改,以区分自动填充的宏值和用户的宏值。

这将是一种尝试“跟踪更改”的方法,就像在 Microsoft Word 中一样,所有更改都会被标记和记录。

我已经考虑过拥有两个单独的文本框的想法,一个包含自动填充的值,另一个允许用户以不同的颜色输入,然后执行合并宏以在最后连接两个值。但是,这不是一个可行的用户界面解决方案,因为用户需要能够动态跟踪实时更改。

我设计的用户界面由搜索、编辑、保存和 Bin 方法组成。

  • 用户首先搜索产品
  • 然后用户可以选择启用编辑模式(解锁文本框)
  • 保存所做的任何更改(锁定文本框)
  • 合并未保存的更改(重新执行初始搜索以返回默认值)

以下是三个子结构:

Private Sub CopyEditimg_Click()
If Menu.CopyValuetxt.Locked = True Then
Menu.CopyValuetxt.Locked = False
Menu.CopyValuetxt.SetFocus
With Menu.CopyValuetxt
.CurLine = 0
End With
Menu.CopyEditimg.Visible = False
Menu.CopySaveimg.Visible = True
Menu.CopyBinimg.Visible = True

Menu.CopyValuetxt.BackStyle = fmBackStyleOpaque

Menu.InfoEditimg.Enabled = False
Menu.CopyEditimg.Enabled = False
Menu.Feature1Editimg.Enabled = False
Menu.Feature2Editimg.Enabled = False
Menu.Feature3Editimg.Enabled = False
Menu.Feature4Editimg.Enabled = False

End If
End Sub

-

Private Sub CopySaveimg_Click()
If Menu.CopyValuetxt.Locked = False Then
Menu.CopyValuetxt.Locked = True
Menu.CopyValuetxt.SetFocus
With Menu.CopyValuetxt
.CurLine = 0
End With
Menu.SearchBox.SetFocus
Menu.CopyEditimg.Visible = True
Menu.CopySaveimg.Visible = False
Menu.CopyBinimg.Visible = False

Menu.CopyValuetxt.BackStyle = fmBackStyleTransparent

SaveChangesMacro

Menu.InfoEditimg.Enabled = True
Menu.CopyEditimg.Enabled = True
Menu.Feature1Editimg.Enabled = True
Menu.Feature2Editimg.Enabled = True
Menu.Feature3Editimg.Enabled = True
Menu.Feature4Editimg.Enabled = True

End If
End Sub

-

Private Sub CopyBinimg_Click()
SetCopy

Menu.CopyValuetxt.Locked = True
Menu.CopyValuetxt.SetFocus
With Menu.CopyValuetxt
.CurLine = 0
End With
Menu.SearchBox.SetFocus
Menu.CopyEditimg.Visible = True
Menu.CopySaveimg.Visible = False
Menu.CopyBinimg.Visible = False

Menu.CopyValuetxt.BackStyle = fmBackStyleTransparent

SaveChangesMacro

Menu.InfoEditimg.Enabled = True
Menu.CopyEditimg.Enabled = True
Menu.Feature1Editimg.Enabled = True
Menu.Feature2Editimg.Enabled = True
Menu.Feature3Editimg.Enabled = True
Menu.Feature4Editimg.Enabled = True

End Sub

-

我认为可能的解决方案包括使用 .SelStart 和 .SelLength 片段。

但是,用户不会简单地将文本添加到自动填充值的末尾。他们可能会选择对多个位置的现有值进行多次更改,因此我不知道如何针对选择进行更改的每个不同位置有条件地使用 .SelStart。

Edit text (changes highlighted) - Screenshot

我已突出显示用户输入的文本。这将被视为“更改”,并应以不同的颜色突出显示。

VBA 中是否有我忽略的跟踪更改功能?或者这根本无法实现?

感谢您的时间,

乔纳森。

<小时/>

最佳答案

这是一个很好的问题,J 先生。

但是,我认为不可能在 VBA 中更改 TextBox 的部分内容。为此,您需要一个 RichTextBox,但遗憾的是,VBA 也没有这些。所以看起来您需要一个替代策略。

检测文本框是否已被编辑(添加或删除文本)将相当简单。在这种情况下,您可以有一个小指示器来提醒这一点(或更改整个文本颜色?),然后使用注释框或类似弹出窗口来显示原始自动填充文本。这可以通过 MouseOver 事件触发吗?

也许并不理想,但它会满足您警告编辑的标准,允许用户检查已更改的内容并允许编译更改日志。

关于vba - Excel VBA 用户窗体文本框 - 突出显示以不同字体颜色所做的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27441750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com