1

我正在尝试使用 libre-office 中的宏来查找单元格中的字符串 - 如果所述单元格包含该字符串,则程序应转到其下方的单元格,剪切该单元格的内容并将其粘贴到下一个列,然后比以前更下一行,剪切这些内容并将它们放在下一列之后的列中。

因此,如果A1包含所述字符串,脚本应该转到A2,剪切该单元格并将其内容粘贴到B1A3剪切这些内容并将其粘贴到C1,然后它应该检查A4

希望这是有道理的。到目前为止,我得到的是:

Sub Neuorganisieren
name = "check"
    If find(". Fr" ,A1,0)>1 then
        Selection.Offset(1, 0).Select
        cut
        Selection.Offset(-1, 1).Select
        paste
        Selection.Offset(2, -1).Select
        cut
        Selection.Offset(-2, 2).Select
        paste
        MsgBox ("found it")
    Else
        MsgBox ("no")
    End If
End Sub

但是,我不断收到未定义子过程/功能过程的错误。

4

1 回答 1

1

尝试这个:

Sub Neuorganisieren()
Name = "check"
    If InStr(Range("A1").Value, ". Fr") > 0 Then
        Selection.Offset(1, 0).Select
        Selection.Cut
        Selection.Offset(-1, 1).Select
        Selection.Paste
        Selection.Offset(2, -1).Select
        Selection.Cut
        Selection.Offset(-2, 2).Select
        Selection.Paste
        MsgBox ("found it")
    Else
        MsgBox ("no")
    End If
End Sub
  1. InStr 检查该值是否存在于 A1 的内容中的任何位置。如果是这样,它将启动 if 语句的其余部分。

  2. 你不能自己剪切和粘贴。您必须有一个对象将其应用到,在这种情况下,选择。所以我们使用 Selection.Cut 而不是 Cut。

我不太了解您打算做的事情背后的“业务”逻辑,所以我只是在更正现有代码后才去,所以我不确定这是否会达到您的预期,但代码本身会起作用。

希望这可以帮助。

阿卜杜勒

于 2013-06-04T02:49:56.687 回答