gpt4 book ai didi

VBA在预定列中的不同工作表上过去某些单元格值

转载 作者:行者123 更新时间:2023-12-03 00:50:37 25 4
gpt4 key购买 nike

VBA诸神,

我想请求您帮助解决一些我似乎无法直接工作的代码。

目的,

当工作表“转储”中的 A 行上的一行有一个单元格值“x”时,我想过去工作表“测试”中的某些值。需要在工作表“test”上发布的值位于 B、D、F 和 L 列中。

工作表“转储”B 列中的值应转到工作表“测试”中的 D4。

工作表“转储”D 列中的值应转到工作表“测试”中的 C4。

工作表“转储”F 列中的值应转到工作表“测试”中的 A4。

工作表“转储”L 列中的值应转到工作表“测试”中的 E4。

当然,我正在尝试使 VBA 循环,因为当工作表“转储”上的多行包含字符“x”时,它会从 D/C/A/E4 继续到下一行。

我已经可以使用的代码发布在这里:

    Sub test()
Dim i, LastRow
LastRow = Sheets("Dump").Range("A" & Rows.Count).End(xlUp).Row
Sheets("test").Range("A2:K200").ClearContents
For i = 2 To LastRow
If Sheets("Dump").Cells(i, "A").Value = "x" Then
Sheets("Dump").Range(Cells(i, "B"), Cells(i, "B")).Copy
Destination:=Sheets("test").Range("A" & Rows.Count).End(xlUp).Offset(1)
End If
Next i
End Sub

一直在尝试使用许多不同的 VBA 源,并对它进行一些调整。如果我从错误的来源开始,或者犯了一些严重的错误,请告诉我我做错了什么。只是在编码的同时尝试学习。

最佳答案

蒂姆发布了仅复制值的更好方法,但这就是您的代码的问题所在:

复制的语法是

sourceRange.Copy Destination:=destinationRange

:= 指定 .Copy 方法的选项/参数。这可能会令人困惑,因为参数周围没有括号,就像您在其他语言中所期望的那样。

someMethod(argument1, argument2)

将是

someMethod argument1, argument2

如果该行中没有其他内容(否则需要括号)。

您可以通过命名并使用 := 来指定您使用的参数。这对于可选参数或保持代码可读特别有用(几个月后您可能不记得每个参数是什么)。有些人将参数保留为空,但我认为很明显为什么会出现这样的情况

someMethod paramName1:=True, paramName4:=False, paramName5:=True

更容易阅读

someMethod True, , , False, True

(我假设参数名称具有描述性,如 Destination)。

函数的参数需要与函数位于同一行。要连接行,请删除换行符(废话)或在行尾放置一个 _ (如果它太长)。

带有括号和换行符的示例:

Set someRange = rangeToSearch.Find( _
What:="abc", _
LookIn:=xlValues, _
MatchCase:=True)

没有括号和换行符的示例:

destinationRange.PasteSpecial Paste:=xlPasteValues, skipblanks:=True

关于VBA在预定列中的不同工作表上过去某些单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40905935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com