2013-06-04 40 views
1

我试图在libre-office中使用宏来查找单元格中的字符串 - 如果所述单元格包含该字符串,程序应该转到它下面的单元格,将该单元格的内容粘贴到下一列中,然后再比之前往下一行,剪下这些内容并将它们放在下一列之后的列中。从1列到3的数据排序

所以,如果A1包含所述串,脚本应该去A2,削减该单元格并粘贴它的内容B1,去A3削减这些内容并粘贴那些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 

不过,我不断收到该子过程/函数过程没有定义的错误。

回答

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。

我不太明白你背后的目的是什么什么“生意”的逻辑,所以我纠正了现有的代码,所以我不知道这是否会做你想要什么以后刚去,但代码本身将起作用。

希望这会有所帮助。

Abdul