VB에서 여러 문자열을 하나의 셀로 연결하려고 할 때 하위 또는 함수 정의되지 않은 오류가 발생합니다.

VB에서 여러 문자열을 하나의 셀로 연결하려고 할 때 하위 또는 함수 정의되지 않은 오류가 발생합니다.

오늘 직장에서 일부 작업을 자동화하기 위해 빠른 도구를 만들려고 했으나 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

.RangeCells- 이것은 with절 객체를 참조합니다.

관련 정보