今天我试图在工作中制作一个快速工具来自动执行一些工作任务,但遇到了 Sun 或 Function 错误的问题。我是 VB 的新手,不熟悉语法和语言细节。你能帮帮我吗?我尝试执行的操作的详细信息:基本上,我有多个组(每个组只有 4 个单元格),我试图将它们复制到单个单元格中。像这样:
组 1: 细胞 1 细胞 2 细胞 3 细胞 4
组 2:...每个组都需要复制到单独的单元格中。
以下是代码:
Public Sub GlobalConcatenation()
Dim sourcerange As Range
Dim gbegin As Integer
Dim gend As Integer
gbegin = 2
gend = 5
sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin), Cells(2, gend))
Dim i As Integer
For i = 2 To 50
callConcatinateAllCellValuesInRange (sourcerange)
sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin + 4), Cells(2, gend + 4))
End Sub
Function ConcatinateAllCellValuesInRange(sourcerange As Excel.Range) As String
Dim finalValue As String
Dim cell As Excel.Range
For Each cell In sourcerange.Cells
finalValue = finalValue + CStr(cell.Value)
Next cell
ConcatinateAllCellValuesInRange = finalValue
End Function
编辑:我觉得我还需要指定问题出现在 GlobalConcatenation() 函数中,并且每当我收到错误时,“sourcerange”就会被突出显示。
编辑:更新代码-修正拼写错误
答案1
这是由于此行的拼写错误造成的gbeging
:-
错误:-
sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbeging), Cells(2, gend))
sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbeging + 4), Cells(2, gend + 4))
正确的是:-
sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin), Cells(2, gend))
sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin + 4), Cells(2, gend + 4))
答案2
导致错误的原因很可能是以下行中对单元格的不合格引用:
sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin), Cells(2, gend))
Cells(2, gbegin)
引用活动工作表上的单元格。如果不是,raw_LSToolData
则会导致错误
正确的代码是
sourcerange = Sheets("raw_LSToolData").Range(Sheets("raw_LSToolData").Cells(2, gbegin), Sheets("raw_LSToolData").Cells(2, gend))
更好的方法是
with Sheets("raw_LSToolData")
sourcerange = .Range(.Cells(2, gbegin), .Cells(2, gend))
end with
注意.
前面的Range
,并且Cells
- this 引用with
子句对象