Excel宏:对选定单词的操作

时间:2017-09-12 17:17:32

标签: excel excel-vba vba

如何让Macro对我突出显示/选择的任何单词执行设定的操作顺序?

我录制自己选择一个单词,然后执行操作。我的想法是必须对我选择的任何单词进行操作。但是,当我选择任何其他单词来执行宏时,它只会执行“和”。

代码:

Sub Test()
    '
    ' Test Macro
    '
    ' Keyboard Shortcut: Option+Cmd+r
    '
    Range("AW2").Select
    ActiveCell.FormulaR1C1 = "And"
    Columns("N:N").Select
    Selection.Insert Shift:=xlToRight
    Range("N1").Select
    ActiveCell.FormulaR1C1 = "And"
    Range("N2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISNUMBER(SEARCH(""And"", RC[-2]:R[4545]C[-2])), ""yes"",   ""no"")"
    Range("N2").Select
    Selection.AutoFill Destination:=Range("N2:N4547")
    Range("N2:N4547").Select
    ActiveWindow.ScrollRow = 4577
    Range("N4555").Select
    ActiveCell.FormulaR1C1 = "=COUNTIF(R[-4553]C:R[-8]C, ""yes"")"
    Range("N4556").Select
End Sub

从本质上讲,我希望“And”替换为一个变量,意思是“我突出显示的任何单词”。

2 个答案:

答案 0 :(得分:1)

如果我找到了你,请选择具有您要使用的值的单元格并运行以下代码:

Sub Test()
  Dim str As String
  str = Selection.Value
  Columns("N:N").Insert Shift:=xlToRight
  Range("N1").FormulaR1C1 = str
  Range("N2").FormulaR1C1 = "=IF(ISNUMBER(SEARCH(""" & str & """, RC[-2]:R[4545]C[-2])), ""yes"",   ""no"")"
  Range("N2").AutoFill Destination:=Range("N2:N4547")
  Range("N4555").FormulaR1C1 = "=COUNTIF(R[-4553]C:R[-8]C, ""yes"")"
End Sub

答案 1 :(得分:0)

编辑单元格时无法执行VBA代码。您必须在执行VBA之前保存或撤消更改。

您可以希望的最好的方法是复制值,然后在代码中询问该值,或让VBA检查剪贴板中的有效值。做后者很复杂,完全是另一个问题,所以我不会在这里详细说明,除了说网上有代码可以做到这一点。