为了构造这些结果,我需要做些什么?

我正在尝试学习VBA,但与我习惯的编程types截然不同。 为此,我将不胜感激您的指导。

我想构build我从模拟中得到的结果。 下面的屏幕截图展示了我正在用这里的单词来描述的内容:

我想要做的是:

  1. 将所有结果从一张纸复制到一张新纸(保留原始数据)。
  2. 删除某些列,例如B & D:E
  3. 在行11:19移动(或复制,无所谓)行30:38 ,中间有一个空列。 结果如下图所示。 (每个块的行数有所不同,有4个块)。

我不知道这些是否是推荐的程序,但我知道我可以:

这种方式 删除列

 Sub sbDeleteAColumnMulti() Columns("D").Delete End Sub 

复制/粘贴这样一个范围

 Sub copyRangeOver() Dim i As Integer i = 6 Dim copyRange As Range Set copyRange = ThisWorkbook.Worksheets("Sheet2").Range("A" & i + 1 & ":CA" & i + 1) Dim countD As Integer countD = 10 copyRange.Copy Destination:=Cells(countD, 2) End Sub 
  • 对于我来说有些东西是复杂的东西:标题(第一个除外): Bus ( A ) -LL Fault ,向右移动一列(它们现在在Ik''之上,而不是Bus Name )。
  • 我不知道在每个“块”中有多less行,因此我需要检查这个(但是我知道只有4个“块”)。 所有“块”都是相同的大小,所以我可以检查两个Bus Name之间的行数。

现在, 我不希望有人给我写一个代码! 我希望有人能帮我的是build议一个程序,我可以遵循这个工作。 我知道有很多路通向罗马,我看到这个问题可能是“主要是基于观点的问题”,或者是“太宽泛”。 但是,我认为这是一个合法的问题。 我并没有试图就这样做的“最佳”方式开始辩论,我只是想find一种有效的方法,因为我目前不知道从哪里开始。 如果它更健壮,更清洁,我并不害怕“复杂的方式”。

我不知道的是什么样的ModulesClass Modules (如果有)等我需要的。 我需要集合,创buildPublic / Private潜艇? 在这种情况下,每个人的目的是什么?

我开始:(编辑:没有任何单元格被合并,只是一堆空格)

在这里输入图像说明

我想要的是:

在这里输入图像描述

更新:

下面是录制macros时获得的第一部分代码(请注意,我的工作簿中有比我给出的示例更多的列和行):

 Range("D:I,K:M,O:P").Select Range("O1").Activate Selection.Delete Shift:=xlToLeft ActiveWindow.SmallScroll Down:=39 Range("C52:E78").Select Selection.Copy ActiveWindow.SmallScroll Down:=-42 Range("G13").Select ActiveSheet.Paste ActiveWindow.SmallScroll Down:=84 Range("C91:E117").Select 

对我来说,这看起来像一个废话。 当然,我可能应该以不同的方式创buildmacros,但是如果我以正确的方式创build了macros,我认为不需要太多的工作。 我想我可以删除所有的SmallScroll线,但仍然…

另外,我不明白我如何适应这个,所以如果我在每个块中有不同数量的行,它将起作用。

为了得到这个,你要开始使用Excel中的macroslogging器 。

如果您每次都在完全相同的数据输出上进行完全相同的格式化select,那么这是迄今为止最好的select。 logging器将复制你所做的任何格式化和写你需要的代码。 它可能不是最好的代码,但它是迄今为止所描述的最好的select

如果(当?)你需要开始添加逻辑,而不是格式相同,那么你将有function代码,这将使您的生活更轻松。


但是,macroslogging器是不是会产生错误的代码和/或从头开始编码呢?

我在这方面有相当的经验,经常使用macroslogging器,因为…虽然它把很多代码放在那里并不是严格意义上的必要,但它会让你变得更加晦涩的东西(如何格式化细胞的边界是这样的?)等等。当然,最好不要只使用logging器,但对于你的例子,它更加完美,你得到所有的格式logging,然后可以修改的逻辑,而不必浪费时间计算用于格式化,删除列等语法

很less有语言能提供基本的说法,“我想通过编程的方式来做我现在正在做的事 – 我该如何开始?” VBA的方式 在学习时,你可以绕开很多讨厌的语法问题(特别是如果你以前做过任何types的编码),并把注意力集中在你想添加的逻辑上。 它说得很好,诚实。