2013-06-04 98 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