我以前用VB很長一段時間在當天下班回來(作爲Visual Studio PKG的一部分),以及一個新的工作有我的工作有點用VBA作爲其一部分一個副項目。我不會說我對noobie船很直接,但我仍然重新學習了很多我以前做過的事情(更不用說,把我在學習VB時沒有涉及的excel特定位合併在Visual Studio)Excel的VBA:PivotCaches.Create類型不匹配
我已經有了通過VBA在另一個項目中做了幾個數據透視表,但我有一個特定的項目現在已經難倒我。
我一直重用一些在VBA Excel引用書中列舉的透視表的代碼,並已經工作的罰款只是遠。但是在這個特定的工作簿中,工作表上按下了一個按鈕,該按鈕在傳遞一些變量的同時調用一個函數。一切都很好,並且很花哨,但是當我試圖創建緩存時,我收到一個錯誤,告訴我我有一個不匹配錯誤?根據我的理解,字符串和變體可以在創建數據透視緩存時作爲源數據傳遞,但是之前幾次重複代碼,直到現在我還沒有問題。
Private Function createPivotTable(ByRef sheetName As Variant, ByVal sheetNum As Integer)
Dim DataRange As Range
Dim pivotTableCache As PivotCache
Dim pivotTableReport As PivotTable
ActiveWorkbook.Worksheets("EXAMPLE SHEET").Activate
Range("A1").Select
Set DataRange = Selection.CurrentRegion
Worksheets.Add.Name = sheetName
Set pivotTableCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, _
SourceData:=DataRange)
Set pivotTableReport = pivotTableCache.createPivotTable(TableDestination:=ActiveWorkbook.Worksheets(sheetName).Range("A1"), _
TableName:="PVR")
....
所以我基本上卡住了。我發現了另一個線程,圍繞類似的問題here跳舞。評分最高的評論確實解決了一個問題,因爲當我沿着範圍位置以字符串的形式傳遞它時,我不再有不匹配的問題,但當我嘗試創建實際的表本身時,我不斷收到1004錯誤,告訴我我需要選擇多行數據(從我可以解釋的 - 遺憾的是,用於錯誤代碼的msgbox切斷了這種有趣的行哈哈)。但是,我已經檢查過了,選擇確實抓住了我的整個表格(所有6列和1000行)。
任何幫助或指向正確的方向將不勝感激。
*驗證;我將sheetName作爲變體而不是字符串傳遞,因爲我使用輸入框來要求用戶命名工作表,並且作爲失敗保險箱,將輸入框的句柄標註爲變體允許我檢查用戶是否已取消操作(然後返回值爲false而不是空字符串)。