【问题标题】:Excel VBA macro for a complicated Copy Function用于复杂复制功能的 Excel VBA 宏
【发布时间】:2013-07-19 05:46:01
【问题描述】:

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

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

代码:

%%% 初始化变量。
MoreCells = "1" %%%boolean 是/否稍后提示
SelectedCells = "稍后在提示时选择范围"
SelectedCellsMagnitude = "# of cells in selectedcells"
DestinationStartCell = "A1" %%%cell 复制到

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

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

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

:结束代码

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

提前致谢!

【问题讨论】:

  • 绝对有可能。如果您需要用户的额外输入,那么您还必须合并一个 VBA 用户表单。所以代码基本上会调用用户表单,在它关闭时从中获取数据,然后继续以愉快的方式继续下去。然而,当你说“量级”时,我对你的意思感到困惑
  • 我认为这是有道理的。我所说的幅度只是指选择的单元格的数量。这个想法是,当循环将下一个选择复制到新工作簿中时,此信息允许循环从正确的单元格开始(因此它不会覆盖先前复制的单元格)。

标签: vba excel


【解决方案1】:

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

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 的理解有限,这似乎是有道理的,我认为它会成功。
  • 我实际上想从不同的工作簿中复制,所以我想出了如何以一种似乎可行的方式进行复制,但总的来说,您的代码运行良好,再次感谢!以下是我所做的修改:显然我的代码太长,无法放入评论中,:-/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-18
  • 2013-05-09
  • 2017-12-16
  • 2014-06-15
  • 1970-01-01
  • 2010-10-27
相关资源
最近更新 更多