오늘 직장에서 일부 작업을 자동화하기 위해 빠른 도구를 만들려고 했으나 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
- 이것은 with
절 객체를 참조합니다.