2014-02-09 81 views
-3

假設我有每一行中一個Excel工作表一組像下面的語句Excel宏每一行

insert into table where column=[test1] 
insert into table where column=[test2] 
insert into table where column=[test3] 

需要一個宏程序插入「走出去」的每個語句下像下面後插入語句

insert into table where column=[test1] 
go 
insert into table where column=[test2] 
go 
insert into table where column=[test3] 
go 

這只是一個示例。我需要爲200多個語句做這件事......並且我不想使用替換選項,因爲如果我使用不同的語句集,語句的結尾可能會改變。

+0

爲什麼宏?插入行並在幾個步驟中寫入「去」並不難。 –

+0

只需使用control-H,用「\ ngo \ n」 – bf2020

+0

替換「] \ n」這僅僅是一個示例。我需要爲200多個語句做這件事......我無法每次都使用替換選項。我還需要一個宏程序來學習如何完成。 – user3290300

回答

1

假設您的statements在第1行開始,即第A1列。以下代碼將在每條語句後插入Go

Sub InsertGo() 
    Dim statements(), i As Long 
    statements = Range("A1:A" & Range("A1").End(xlDown).Row) 

    For i = 1 To UBound(statements) 
     Range("A" & (i * 2 - 1)) = statements(i, 1) 
     Range("A" & (i * 2 - 1)).Offset(1, 0) = "Go" 
    Next i 
End Sub 
+0

感謝@alex,它工作完美。我有一些問題,因爲我對你使用的語法非常陌生。當我在即時窗口中使用?語句時,它返回「類型不匹配」錯誤。我認爲它會返回列的最後一行。但是當我使用Range(「A7」)。Value =語句時,它複製第一行並將其打印在A7單元格中。那麼爲什麼我在VB編輯器中收到錯誤? ubound(語句)是如何返回no行的? 最後一個問題 - 聲明()是否必要?爲什麼它使用像一個功能。我刪除了大括號,它工作正常。 – user3290300

+0

在'statements'後面使用'()'將其聲明爲一個數組。然後,當我做'語句= ...'時,我正在以'數組'的形式讀取範圍。它效率更高。然後'Ubound'獲取數組的長度。如果解決方案奏效,您可以通過點擊勾號來接受答案... –

+0

+1。但是請注意,儘管我會將類型聲明爲「明確的:Dim statements as Variant」,但您可以將'statements'聲明爲'Variant',即Dim statements。一個變體可以保存一個數組,比如'Range'。 http://msdn.microsoft.com/en-us/library/office/aa188497%28v=office.10%29.aspx –