2013-07-19 126 views
1

我是VBA的新手,雖然我已經完成了其他語言的一些編碼,所以我理解了一些一般的概念。我需要爲excel編寫一個宏,它將工作簿中的一些數據複製到一個不連續的單個列中的一個連續的新工作簿中的單個列中。困難的部分是我需要通過用戶提示選擇要複製的數據,並且每個選擇的大小都不相同。最後,帶有單列的新工作簿將被保存爲製表符分隔的文本文件。這就是我想到的,用一種通用的編碼語言。複雜的複製函數Excel VBA宏

我會用斜體區分變量,「引號」來區分價值觀,大膽區分編碼關鍵詞。我假設代碼將從新的空工作簿運行。

CODE:

%%%初始化變量。
MoreCells = 「1」 %%%布爾是/否提示以後
了selectedCells = 「在提示選擇以後範圍」
SelectedCellsMagnitude = 「細胞在了selectedCells#」
DestinationStartCell = 「A1」%%%單元格開始於範圍被複制到

打開工作簿「要複製的工作簿」個morecells = 「1」
         提示用戶選擇範圍
         組 「選擇範圍」= 了selectedCells
         集「了selectedCells大小「= selectedcellsmagnitude
         拷貝了selectedCells到新的工作簿起始於細胞destinationstartcell
         設置destinationstartcell = destinationstartcell + selectedcellsmagnitude
         提示用戶「是否有更多單元要複製?「
          如果 」是「 設置morecells = 」1「
          別的設置morecells = 」0「

保存新的工作簿爲製表符分隔的值在目的地「\ new \ workbook \ destination」中命名爲「newworkbookname.txt」的文本文件

:END CODE

任何幫助將不勝感激。或者,就此而言,通過excel來了解VBA是否可行。

在此先感謝!

+0

這是絕對有可能。如果您需要來自用戶的額外輸入,那麼您還必須包含VBA用戶窗體。所以代碼基本上會調用用戶表單,在關閉時從它獲取數據,然後單獨繼續其快樂的方式。然而,當你說「幅度」時,我對你的意思感到困惑 – Lopsided

+0

我覺得這很有道理。按照量級,我的意思是簡單選擇的細胞數量。這個想法是這個信息允許循環在將下一個選擇複製到新的工作簿中時從正確的單元開始(因此它不會覆蓋先前複製的單元)。 – user2600805

回答

0

更改工作簿和工作表值適用的工作簿和工作表

Sub usermove() 
Dim c, Rng1 As Range 
Dim i As Integer 

i = 1 

'ask for input 
userselect: 
ThisWorkbook.Sheets("Sheet1").Activate 
Set Rng1 = Application.InputBox("Please Select Cells", Type:=8) 

'loop 
For Each c In Rng1.Cells 

    ThisWorkbook.Sheets("Sheet2").Activate 

    Cells(i, 1).Value = c.Value 

    i = i + 1 
    Next 

'Prompt for more input 
continue = MsgBox("Are there more cells to select?", vbYesNo) 
If continue = vbYes Then GoTo userselect 

'then save 

    ChDir "path" 
    ActiveWorkbook.SaveAs Filename:="path\Book1.txt", FileFormat _ 
     :=xlText, CreateBackup:=False 


End Sub 
+0

謝謝你雷朋塔!這看起來不錯,我明天將在工作中對它進行測試,並讓我們知道是否遇到任何問題,但是由於我對VBA有限的理解,這似乎是有道理的,我認爲它會做到這一點。 – user2600805

+0

我實際上想從不同的工作簿複製,所以我想出了一種似乎可以工作的方式,但總的來說你的代碼很好用,再次感謝!以下是我所做的修改:顯然,我的代碼太長以至於無法放入評論中: - / – user2600805