大家。新手在这里。
我尽我所知并且能够通过数百个宏代码,允许用户专门点击按钮将范围复制并粘贴到下一个空白列中,并且不断粘贴新列当用户点击按钮时。不幸的是,所创建代码的目的的微小变化将有所不同。我无法理解为什么。
昨晚我已经成功完成了累积奖金并让它完美无缺地工作,直到它因为某些原因而崩溃,就像我保存文件一样。之后它没用。
目标:出于分析目的,C9:C43中的范围将始终作为基准年数据存在。如果用户有一年的数据,则无需复制。如果用户有5年的数据,用户将单击该按钮5次。副本将包括格式,公式和列宽。
此外,考虑到列C中的范围是基数,单元格C9将类似于年份,即2015年。如果用户将C9更改为例如2010,则下一列将具有D9 = 2011,依此类推。
我认为对话框将更好地代表我正在研究的目标,但似乎对我目前对Macros和VBA的理解有些牵强。
这是我昨晚使用的代码,它在保存文件后神秘地崩溃之前使其正常工作:
Dim rngSource As Range
Dim rngDestination As Range
Set rngSource = Range("C9:C43")
Set rngDestination = Cells(9, Columns.Count).End(xlToLeft).Offset(0, 1)
Range("C9:C43").Copy
Range("D9").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("D9").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=RC[-1]+1"
rngSource.Copy destination:=rngDestination
你们很棒,你的工作和合作深受赞赏。
热烈的问候,
答案 0 :(得分:1)
虽然这并没有回答有关冻结代码的问题,但我相信它可能会帮助您解决在系列中复制列的基本问题
如果您使用单元格A1为用户指定他们想要添加的列数,那么按下按钮可以调用range.autofill并使用系列填充(这适用于当年但我不确定是什么你在那个顶行之下)
Sub Button_Click()
Dim x As Integer
x = Range("A1").Value
Range("C9:C43").AutoFill Destination:=Range("C9:" & Cells(43, x + 3).Address), Type:=xlFillSeries
End Sub