我正在尝试学习VBA,但它与我习惯的编程类型非常不同。因此,我将非常感谢您的指导。
我想构建从模拟中得到的结果。下面有屏幕截图,说明我在这里用文字描述的内容:
我想做的是:
B & D:E
30:38
之外移动(或复制,无关紧要)行11:19
,其间有一列空列。结果如下图所示。 (每个块中的行数不同,有4个块)。我不知道这些是否是推荐的程序,但我知道我可以:
删除列 this way:
Sub sbDeleteAColumnMulti()
Columns("D").Delete
End Sub
复制/粘贴范围 like this:
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''
,而不是{{1 }})。Bus Name
之间的行数。 现在,我不希望有人给我写一个代码!我希望有人能帮助我的是建议我可以遵循的程序来实现这个目的。我知道有很多道路通往罗马,我看到这个问题可能是“基于意见的主要问题”或“过于宽泛”。但是,我认为这是属于这里的合法问题。我不是要开始讨论“最好”的做法是什么,我只是想找到一种有效的方法,因为我目前不知道从哪里开始。如果它更健壮,更清洁,我不会害怕“复杂的方式”。
我不知道的是我需要什么样的Bus Name
,Modules
(如果有的话)等等。我是否需要收藏,创建Class Modules
/ Public
潜艇?在这种情况下,每个人的目的是什么?
我的开始:(编辑:没有合并任何单元格,它只是一堆空格)
我想要的是什么:
这是录制宏时我得到的第一块代码(注意我的工作簿比我给出的示例中的列和行更多):
Private
对我来说,这看起来像一块垃圾。当然,有可能我应该以不同的方式创建宏,但如果我以正确的方式做到了,我认为它不会起作用。我想我可以删除所有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
- 行,但仍然......
另外,我没有看到我如何调整它,因此如果每个块中有不同的行数,它将起作用。
答案 0 :(得分:2)
要实现这一点,您将首先要使用Excel中的Macro Recorder。
如果您每次都为完全相同的数据输出执行完全相同的格式化选项,那么这是您最好的选择。录像机将复制您为格式化所做的任何事情并编写您需要的代码。它可能不是最佳代码,但它将是您所描述内容的最佳选项。
如果(何时?)你需要开始添加除了相同格式之外的逻辑,那么你将拥有能够让你的生活更轻松的功能代码。
我在这方面经验丰富并且经常使用宏录制器,因为......虽然它确实在那里放了很多代码,但严格来说并不是必需的,它会让你获得大量更加模糊的东西(如何我是否按照这种方式格式化单元格边框?)等当然最好不仅使用刻录机,而且对于您的示例它更完美,您可以记录所有格式,然后可以修改逻辑而不必浪费时间搞清楚格式化,删除列等的语法。
很少有语言能够基本上说“我想以编程方式做我现在正在做的事情 - 我该如何开始?” VBA的做法。您可以在学习时绕过许多烦人的语法问题(特别是如果您之前已经完成了任何类型的编码),并专注于您想要添加的逻辑。老实说,它很好用。