我今天在工作中試著製作一個快速工具來自動化工作中的一些任務,但遇到了 Sun 或 Function 錯誤的問題。我是 VB 的絕對新手,不熟悉文法和/或語言細節。請你幫助我好嗎?關於我想要做什麼的詳細資訊:基本上,我有多個群組(每組中只有 4 個單元格),我試圖將它們複製到單一單元格中。像這樣:
群組 1: 儲存格 1 儲存格 2 儲存格 3 儲存格 4
第二組: . 。 。這些組中的每一組都需要複製到單獨的單元格中。
這是代碼:
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
注意and.
之前的 's - this 引用子句對象Range
Cells
with