尝试在 VB 中将多个字符串连接到一个单元格时出现 Sub 或 Function 未定义错误

尝试在 VB 中将多个字符串连接到一个单元格时出现 Sub 或 Function 未定义错误

今天我试图在工作中制作一个快速工具来自动执行一些工作任务,但遇到了 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子句对象

相关内容