看板 Office 關於我們 聯絡資訊
軟體: Office 365 Excel 今天開始接觸VBA,嘗試了幾種方式建立多維陣列,最後查到了這種方式, 可以讓我一次用多行程式碼建立多維陣列,程式碼如下: Dim myarray2 As Variant myarray2 = _ Evaluate("{""AAA"",""BBB"",1,False,False;" & _ """A"",""B"",1,True,False;" & _ """A"",""B"",1,True,False;" & _ """A"",""B"",1,True,False;" & _ """A"",""B"",1,True,False;" & _ """A"",""B"",1,True,False;" & _ """A"",""B"",1,True,False;" & _ """A"",""B"",1,True,False;" & _ """A"",""B"",1,True,False;" & _ """A"",""B"",1,True,False;" & _ """d"",""e"",1,True,False}") Debug.Print ("UBound(myarray2, 1)=" & UBound(myarray2, 1)) Debug.Print ("UBound(myarray2, 2)=" & UBound(myarray2, 2)) 但是如此建立的多維陣列,裡面的字串(如"A","B")只要太長,後面Debut.Print 就會出問題。 會跳出視窗顯示"執行階段錯誤13,型態不符合" 我猜測可能是整個Evaluate內的字串超過VBA對字串長度的限制? 但是如果用 myarray(0,1)="ABC" 這種方式一行一行設定的話,設定完我要的整個陣列大概要破百行, 實在不想要讓程式碼這麼冗長。 請問有什麼方式可以讓我用可以換行的方式建立二維陣列,同時程式碼又不會太冗長呢? 非常感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.254.239 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1550940531.A.317.html
soyoso: 是的evaluate內有255字數限制,以原來看字數為237,再加19 02/24 09:58
soyoso: 個字數就會錯誤 02/24 09:58
soyoso: 因此看是否將資料建立於儲存格內,再以myarray2 = 範圍的 02/24 10:08
soyoso: 方式 02/24 10:08
謝謝您,看來用一個儲存格來放資料的確是比較好的方式。 因為初次使用VBA,請問有辦法是類似把整個巨集跟含有我事先設定好的儲存格檔案 包成一包,方便未來要用來處理新檔案時都能直接使用,或是類似的簡便方案嗎? 這樣未來使用巨集時就不會說因為少了一個儲存格檔案而無法使用,謝謝 ※ 編輯: homelife (1.169.254.239), 02/24/2019 17:43:11
soyoso: 看回文,會覺得以excel增益集方式,巨集和資料放置於該增 02/24 17:57
soyoso: 益集檔案內,並選項→增益集,excel增益集內勾選掛載 02/24 17:58
soyoso: 這樣可用於處理新檔案 02/24 17:59
soyoso: 也不排除就資料和巨集寫在啟用巨集活頁簿或其他可存巨集的 02/24 18:43
soyoso: 檔案內,開啟後再處理新檔案內資料 02/24 18:43
您好,因為最後處理完成的檔案不希望包含這些儲存格資料,所以我優先考慮您說的 增益集方式,有成功存成增益集並且也可以在新的檔案中勾選到我存的增益集, 雖然在VBA介面中的Excel物件資料夾裡看得到我原本存資料用的工作表, 但巨集在執行時到了讀取工作表的部分就會讀不到,也許我用的程式碼只能 讀取當下檔案中的工作表? 附上我用的程式碼: Dim JSheet As Worksheet Set JSheet = Worksheets("工作表名稱") '到了這裡就會停止 當然最後手段就是用一個寫好巨集的工作表來處理新檔案,但還是想問問看目前增益集 的方式是否有可能成功呢? 不知道是否有語法或方式可以達成用增益集的方式? 謝謝! ※ 編輯: homelife (1.169.254.239), 02/25/2019 02:47:15
soyoso: workbook.worksheets方式可讀取已開啟的活頁簿 02/25 06:58
soyoso: 內的工作表 02/25 06:58
照著您的方式,我最後試成功的語法是 ThisWorkbook,整句是這樣: Set JSheet = ThisWorkbook.Worksheets("工作表名稱") 感謝你! ※ 編輯: homelife (1.169.254.239), 02/25/2019 16:18:13