簡體   English   中英

Excel VBA中無效的過程調用或參數

[英]Invalid procedure call or argument in excel vba

我在工作表Sheet1的column1上使用唯一的no過濾器,從z列獲取過濾后的值到數組(arr)對象中,並將這些值作為字符串粘貼到“儀表板”工作表的一個單元格中。 對工作表1列1上的所有唯一值重復此過程。 我遇到多個錯誤1. Join()方法中出現“無效的過程調用或參數”。 2.將值放入rng對象和數組。 我可以在這個問題上向您尋求幫助嗎? 非常感謝。

Dim d As Object, c As Range, k, tmp As String
Dim TestRg As Range
Dim arr() As Variant
Dim i As Integer
Dim myCell As Range
Dim rng As Range
i = 2

Set d = CreateObject("scripting.dictionary")
Columns(1).Select
For Each c In Selection
    tmp = Trim(c.Value)
    If Len(tmp) > 0 Then d(tmp) = d(tmp) + 1
Next c

For Each k In d.Keys
If IsNumeric(k) Then
 Set TestRg = Range("A1:AQ" & LastRow(ActiveSheet))
 TestRg.AutoFilter Field:=1, Criteria1:=k, Operator:=xlFilterValues
 LasRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
 Set rng = ActiveSheet.Range("Z1" & ":" & "Z" & LasRow).SpecialCells(xlCellTypeVisible)
 rng.Activate
 arr = rng.Value
Worksheets("Dashboard").Range("A" & i) = k
Worksheets("Dashboard").Range("E" & i).Resize(UBound(arr, 1)).Value = Join(arr, " ")
i = i + 1
Erase arr
End If
Next k

至於您的帖子正在尋求幫助的錯誤,它來自:

Worksheets("Dashboard").Range("E" & i).Resize(UBound(arr, 1)).Value = Join(arr, " ")

因為arr是一個兩個 陣列,同時加入()函數需要一個 一個

然后,您應該:

  • 將arr聲明為簡單的變體:

     Dim arr As Variant 
  • 以某種方式填充它以生成一維數組

     arr = Application.Transpose(rng.Value) 

除此之外,在我看來您的代碼還有更多問題

您可能要先修復此錯誤,然后,如果確實出現了這些問題,而又無法解決,請撰寫新的帖子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM