用于复杂复制函数的Excel VBA宏

用于复杂复制函数的Excel VBA宏,vba,excel,Vba,Excel,我是VBA新手,虽然我用其他语言编写过一些代码,所以我理解一些一般概念。我需要为excel编写一个宏,用于将工作簿中的某些数据复制到一列中,该列与新工作簿中的一列不连续。困难的部分是,我需要被复制的数据被用户提示选择,并且每次选择的大小都不同。最后,只有一列的新工作簿将保存为选项卡分隔的文本文件。这就是我的想法,在某种程度上是通用的编码语言 我将用斜体来区分变量,用引号来区分值,用粗体来区分编码关键字。我假设代码将从新的空工作簿运行 代码: %%%初始化变量。 MoreCells=1%%%布尔值

我是VBA新手,虽然我用其他语言编写过一些代码,所以我理解一些一般概念。我需要为excel编写一个宏,用于将工作簿中的某些数据复制到一列中,该列与新工作簿中的一列不连续。困难的部分是,我需要被复制的数据被用户提示选择,并且每次选择的大小都不同。最后,只有一列的新工作簿将保存为选项卡分隔的文本文件。这就是我的想法,在某种程度上是通用的编码语言

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

代码: %%%初始化变量。 MoreCells=1%%%布尔值是/否稍后提示 SelectedCells=稍后提示时选择的范围 SelectedCellsMagnitude=选定单元格中的单元格数量 DestinationStartCell=A1%%%要复制到的范围的起始单元格 打开要从.xlsx复制的工作簿 而morecells=1 提示用户选择范围 设置选定范围=选定单元格 设置选定单元格的大小=选定单元格的大小 从单元格目的地开始,将所选单元格复制到新工作簿开始单元格 set destinationstartcell=destinationstartcell+selectedcellsmagnity 提示用户是否还有更多单元格要复制? 如果是,则设置更多单元格=1 否则,设置更多单元格=0 将新工作簿另存为目标\新建\工作簿\目标处名为newworkbookname.txt的制表符分隔值文本文件

:结束代码

任何帮助都将不胜感激。或者,就这一点而言,了解在VBA和excel中是否可以实现这一点


提前谢谢

将工作簿和工作表值更改为适用的工作簿和工作表

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

这绝对有可能。如果您需要用户的额外输入,那么您还必须合并一个VBA用户表单。因此,代码基本上会调用userform,在其关闭时从中获取数据,然后继续它的快乐方式。然而,我对你所说的有意义的震级感到困惑。我所说的数量只是指所选择的细胞数量。这样做的目的是,当循环将下一个选择复制到新工作簿中时,此信息允许循环从正确的单元格开始,这样它就不会覆盖以前复制的单元格。谢谢Raystafarian!这看起来很棒,我明天会在工作中测试它,如果我遇到任何问题,我会告诉你,但我对VBA的理解有限,这似乎是有意义的,我认为它会奏效。我实际上想从不同的工作簿中复制,所以我想出了如何以一种似乎可行的方式来实现这一点,但总的来说,你的代码工作得很好,再次感谢!以下是我所做的修改:显然我的代码太长,无法放入注释中:-/