excel - Excel vba PasteSpecial xlAdd循环
问题描述
我需要一些关于我想使用的 PasteSpecial 的帮助。我自己编写了以下代码:
Sub oefen()
' oefen Macro
Dim f As Long
Dim d As Long
d = Sheets("Omreken").Range("N2").Value
f = Sheets("Omreken").Range("U2").Value
For f = 1 To f + 1
Range("O2").Copy
Range("A" & (2 + ((f - 1) * d)) & ":" & "A" & (1 + (f * d))).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next f
For f = 2 To f - 1
Range("T2").Copy
Range("A" & (2 + ((f - 1) * d)) & ":" & "A" & (1 + (f * d))).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
:=False, Transpose:=False
Next f
End Sub
我的代码执行以下操作:选择因循环而适应的特定范围。每次循环通过时,它会将 T2 的值添加到在执行 xlAdd 之前粘贴的 O2 的原始值。该代码对我来说几乎是完美的,除了我想在每次循环通过时向 T2 添加 +1。
所以假设我有 A1 是 1,A2 是 1,A3 是 1,A4 是 1。 xlAdd; T2 是 1 如果我要通过循环,我希望代码:
loop 1: A1 + T2*1 is 2
Loop 2: A2 + T2*2 is 3
Loop 3: A3 + T2*3 is 4
Loop 4: A4 + T2*4 is 5
对不起我的英语,我希望你明白我想说什么。
解决方案
您不需要粘贴值来添加它。您可以通过这种方式简单地计算和设置值
Range("A" & (2 + ((f - 1) * d)) & ":" & "A" & (1 + (f * d))).value = Range("A" & (2 + ((f - 1) * d)) & ":" & "A" & (1 + (f * d))).value+Range("T2").value*(f-1)
如果您循环使用f
并且它从 2 开始,您需要添加
Range("T2").value*(f-1)
到每个值。因此,对于第一个值,它将添加 T2*(2-1)=T2*1,对于第二个值,它将添加 T2*2,依此类推
编辑:当您收到类型不匹配之类的错误时,我所做的通常是检查为什么会发生这种情况,因为我希望只总结数字。您可以通过在消息框中显示值来做到这一点(还有其他更好的方法,例如调试 - 在第 4 点下的更多信息或也在链接中使用断点,但消息框很简单)。因此,目前如果该行给您错误,只需将其放在该行之前:
msgbox(Range("A" & (2 + ((f - 1) * d)) & ":" & "A" & (1 + (f * d))).value)
msgbox(Range("T2").value)
请注意,每次循环运行都会显示 2 个弹出窗口,因此请限制您的范围。以这种方式运行它并在出现类型不匹配错误之前告诉我它显示的内容。
编辑2:
Sub oefen()
' oefen Macro
Dim f As Long
Dim d As Long
d = Sheets("Omreken").Range("N2").Value
f = Sheets("Omreken").Range("U2").Value
For f = 1 To f + 1
Range("A" & (2 + ((f - 1) * d)) & ":" & "A" & (1 + (f * d))).value=Range("O2").value
Next f
For f = 2 To f - 1
Range("A" & (2 + ((f - 1) * d)) & ":" & "A" & (1 + (f * d))).value =Range("A" & (2 + ((f - 1) * d)) & ":" & "A" & (1 + (f *d))).value+Range("T2").value*(f-1)
Next f
End Sub
请注意,我没有更改 Range 行计算或 for 循环中的任何内容。你需要确保这些有意义,因为我不知道你有什么价值观d
和f
。
推荐阅读
- java - Hibernate PostUpdateEvent getState 和 getOldState 值的顺序
- amazon-dynamodb - AWS dynamoDB - 为什么没有为每个表而不是帐户指标填充用户和系统错误?
- excel - 数据透视表显示空白值标签
- android - 如何用 Geb Spock Appium 实现页面对象机制
- xml - 在 XML 中设置 Fragment 的控制器
- ruby-on-rails - Refinery CMS - 如何调整资源图像的大小?
- php - 如何将字符串数据更改为 Laravel Query 格式
- mysql - Mysql,左连接选择并创建索引
- wordpress - WooCommerce 无法更改模板文件中的内容
- url - 更改 prestashop 中自动生成的 url 的结构