【问题标题】:How do I allow user to select, but not edit, text in an excel userform control whose width is smaller than the text?如何允许用户选择而不是编辑宽度小于文本的 excel 用户窗体控件中的文本?
【发布时间】:2016-04-14 17:05:49
【问题描述】:

上下文
我希望用户查看他们之前所做的一些选择。因此,我在用户窗体中的单独控件上显示一些描述每个选择的文本。控件上的某些文本很长,超出了控件的宽度。这可以;我只希望用户能够看到所有文本而无法对其进行编辑。为此,我使用“锁定”(即不可编辑)但“启用”(即可选择)的文本框。这样,他们只需单击鼠标并拖动鼠标或箭头键即可滚动浏览所有文本。

问题
(小而美观的)问题是,当用户单击其中一个文本框时,他们会看到一个闪烁的光标,这具有误导性,因为它通常与 可编辑 文本框相关联。

可能的解决方案
理想情况下,将有一些方法可以删除闪烁的光标,同时仍然允许选择但不允许编辑。但是,我对其他与更改宽度或滚动条无关的替代方案持开放态度(文本框太短而无法容纳滚动条)。到目前为止,我最好的选择是将背景颜色更改为灰色,以使其更清楚地表明它是不可编辑的。

附:我对 VBA 非常熟悉,所以如果这是解决方案的一部分,我很乐意这样做。

谢谢大家!

【问题讨论】:

  • 使用标签而不是文本框来显示描述?
  • 我尝试使用标签,但似乎无法选择标签末尾之外的所有文本。
  • 标签不允许选择文本。
  • 太棒了,那并没有什么帮助。我需要允许选择但不允许编辑。
  • 这是我想到的另一个逻辑...当用户“进入”文本框时,所有文本都将被选中,然后用户可以使用右/左箭头键滚动选择不显示闪烁的插入符号。这可以通过将文本框文本存储在一个变量中,然后在用户按下右箭头键时修剪文本并显示和选择它来实现。同样,当用户按下左键时,应该会发生相反的情况。它更像是一个 TICKER

标签: excel textbox userform vba


【解决方案1】:

我有一个类似的问题,并通过使用 these instructions 创建一个隐藏的文本框来解决它,光标会自动出现在其中(对用户不可见)。

【讨论】:

  • 我一定遗漏了一些东西,因为我不断收到以下错误“无法将焦点移动到控件,因为它不可见、未启用或属于不接受焦点的类型”。为了清楚起见,根据链接的说明,我正在使用一个未锁定、已启用、不可见的文本框。所以这个解决方案似乎存在根本缺陷(即不可见的文本框无法获得焦点)。
  • 尝试在焦点仍然可见时设置焦点。如果这不起作用,您可以将第二个框移出屏幕。
  • 我还尝试创建和隐藏第二个文本框,不是通过弄乱“不可见”属性,而是通过更改尺寸、背景颜色和隐藏在其他控件后面。这仍然不能完全按照说明中的说明工作。原因是在激活用户窗体后单击时,没有什么说我的主要文本框之一不应该得到控制。我尝试了“Enter”过程,但这会阻止选择,因为每次用户单击主文本框时,第二个文本框都会获得焦点。
  • 如果我使用 MouseDown 过程,我可以更接近一点,但是如果用户首先点击主文本框,它会获得焦点,从而获得闪烁的光标。
  • 欢迎来到 Stack Overflow!虽然这在理论上可以回答这个问题,it would be preferable 在此处包含答案的基本部分,并提供参考链接。
猜你喜欢
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多