【问题标题】:Insert text, at the cursor, in a cell that already contains text (MS Excel VBA 2013)在已包含文本的单元格中插入光标处的文本(MS Excel VBA 2013)
【发布时间】:2015-11-26 01:14:33
【问题描述】:

郑重声明,我在编码方面的经验非常有限。我们使用 Excel 记录一天中的所有实时事件。报告大约有 100 到 150 行长,每行多行。每行使用 12 个合并单元格,文本被换行。

所需操作:在光标后插入特定文本,在已包含文本的单元格中(使用 VB 的 MS 2013 Excel)。

下面的代码可以正常工作,只是它将文本放在单元格的顶部而不是光标处。我们不能使用文本框并且录制不起作用。什么代码可以做到这一点?谢谢!

Sub SuziQueue () 

    With ActiveCell 
        .Value = "<Suzi Queue... >" & .Value 
    End With 

End Sub 

【问题讨论】:

  • .Value = .Value &amp; "&lt;Suzi Queue... &gt;" ?
  • Excel VBA 与 Word VBA 的不同之处在于 光标位置 不可辨别。如果在编辑模式下输入单元格的内容(在单元格中或在公式栏中),则在离开编辑模式之前无法运行 VBA 子过程。您可以通过定位其他文本并将其用作插入位置来插入文本,但您将无法在“光标位置”插入文本。
  • 您可能会拦截更改并将原始单元格值存储在变量中,然后允许更改并计算差异然后进行插入,我假设这是对数据更改进行某种记录?
  • 这里有一些信息可以帮助您入门。 ozgrid.com/VBA/track-changes.htm
  • 也许您保护工作表并解锁其后的列以进行文本输入。然后使用 Worksheet_Change 事件将新文本注入左侧单元格,最后使用 ClearContents?

标签: vba excel


【解决方案1】:

也许这个例子会有所帮助

  • 如果 ActiveCell 中有文本“测试字符串”

  • 您想在两个单词之间插入单词“New”

.

Option Explicit

Sub insertText()
    Dim indx As Long, lastPart As String

    With ActiveCell
        MsgBox .Value2      'shows "Test String"

        indx = InStr(.Value2, "S")
        lastPart = Right(.Value2, indx + 1)

        .Characters(indx).Insert "New" & lastPart 'inserts "New" between "Test" & "String"

        MsgBox .Value2      'shows "Test New String"
    End With
End Sub

.

可能有一些方法可以使用 API 确定单元格中的光标位置

This Microsoft link 显示如何获取屏幕上的光标位置

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    相关资源
    最近更新 更多