1

我是 VBA 新手,虽然我用其他语言做过一些编码,所以我理解了一些一般概念。我需要为 excel 编写一个宏,它将工作簿中的一些数据复制到与新工作簿中连续的单个列不连续的单个列中。困难的部分是我需要用户提示选择正在复制的数据,并且每个选择的大小各不相同。最后,具有单列的新工作簿将保存为制表符分隔的文本文件。这就是我的想法,是一种通用的编码语言。

我将使用斜体来区分变量,使用“引号”来区分值,并使用粗体来区分编码关键字。我假设代码将从新的空工作簿运行。

代码:

%%% 初始化变量。
MoreCells = "1" %%%boolean yes/no prompt later
SelectedCells = "range selected at prompt later"
SelectedCellsMagnitude = "# of cells in selectedcells"
DestinationStartCell = "A1" %%%cell to start at for range is to copy to

Open工作簿“要从.xlsx复制的工作簿”

同时 更多单元格=“1”
     提示用户选择范围
     集“选定范围”=选定
单元格      设置“选定单元格的大小”
到从单元格destinationstartcell 开始的新工作簿
     set destinationstartcell = destinationstartcell + selectedcellsmagnitude
     提示用户“还有更多单元格要复制吗?”
     if "yes" set morecells = "1"
     else set morecells = "0"

将新工作簿另存为制表符分隔值文本文件,名为“newworkbookname.txt”,位于目标“\new\workbook\destination”

:END 代码

任何帮助将不胜感激。或者,就此而言,洞察这在 VBA 和 excel 中是否可行。

提前致谢!

4

1 回答 1

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
于 2013-07-21T11:37:40.793 回答