1樓:【名臣
ubound(arr, 2), d(arr(0, y)) 這兩個好象有問題,沒見過這麼寫的
合併成一個巨集試試
sub 生成下拉()
dim sr as string
dim data as new '執行
dim sql as string
dim arr, y
dim d as new dictionary
sql = "select 定額名稱,單價,計價單位,彙報單位,換算係數 from [定額計件$] "
arr = data.篩選結果(sql)
for y = 1 to ubound(arr, 2)
d(arr(0, y)) = arr(1, y) & "-" & arr(2, y) & "-" & arr(3, y) & "-" & arr(4, y)
next y
sr = join(d.keys, ",")
with range("m6:m25").validation
.delete
.add type:=xlvalidatelist, formula1:=sr
end with
end sub
2樓:匿名使用者
dim d as new dictionary 是在 **表存為陣列() 過程裡定義的過程級變數,**表存為陣列()過程執行完了後d就消失。
在 過程 生成下拉() 裡是沒法訪問到 d的。
要解決這個問題
1、你可以把 d 定義為模組級的變數:就是把 dim d as new dictionary 在放到模組的頂部。**如下:
dim d as new dictionary
sub **表存為陣列()
dim data as new 執行
dim sql as string
dim arr, y
sql = "select 定額名稱,單價,計價單位,彙報單位,換算係數 from [定額計件$] "
arr = data.篩選結果(sql)
for y = 1 to ubound(arr, 2)
d(arr(0, y)) = arr(1, y) & "-" & arr(2, y) & "-" & arr(3, y) & "-" & arr(4, y)
next y
end sub
sub 生成下拉()
dim sr as string
call **表存為陣列
sr = join(d.keys, ",")
with range("m6:m25").validation
.delete
.add type:=xlvalidatelist, formula1:=sr
end with
end sub
2、把**表存為陣列()定義為一個函式,並返回一個 字典物件,把d的定義放到了生成下拉()過程裡,**如下:
function **表存為陣列() as dictionary
dim data as new 執行
dim sql as string
dim arr, y
dim d as new dictionary
sql = "select 定額名稱,單價,計價單位,彙報單位,換算係數 from [定額計件$] "
arr = data.篩選結果(sql)
for y = 1 to ubound(arr, 2)
d(arr(0, y)) = arr(1, y) & "-" & arr(2, y) & "-" & arr(3, y) & "-" & arr(4, y)
next y
set **表存為陣列=d
end sub
sub 生成下拉()
dim sr as string
dim d as dictionary '把d的定義放到了生成下拉()過程裡
set d = **表存為陣列()
sr = join(d.keys, ",")
with range("m6:m25").validation
.delete
.add type:=xlvalidatelist, formula1:=sr
end with
end sub
3、把 過程 **表存為陣列() 定義為一個接收一個 字典物件的過程,把d的定義放到了生成下拉()過程裡,並在生成下拉()過程裡帶引數呼叫 **表存為陣列() 過程。**如下:
sub **表存為陣列(byref d as dictionary)
dim data as new 執行
dim sql as string
dim arr, y
sql = "select 定額名稱,單價,計價單位,彙報單位,換算係數 from [定額計件$] "
arr = data.篩選結果(sql)
if d is nothing then set d = new dictionary '如果d沒有例項化,則例項化。
for y = 1 to ubound(arr, 2)
d(arr(0, y)) = arr(1, y) & "-" & arr(2, y) & "-" & arr(3, y) & "-" & arr(4, y)
next y
end sub
sub 生成下拉()
dim sr as string
dim d as new dictionary
call **表存為陣列(d)
sr = join(d.keys, ",")
with range("m6:m25").validation
.delete
.add type:=xlvalidatelist, formula1:=sr
end with
end sub
4、把兩個過程合併到一個過程。別的有回答了。這裡就不給出具體**了。
執行vba程式時出現錯誤424要求物件怎麼回事?該怎麼辦?下面是**。請大俠幫忙看下怎麼做了?
3樓:匿名使用者
按你的說法是直接貼上**而已,那就是沒有插入使用者窗體,你這**專第一段是初始化用屬戶窗體的,窗體都沒有,就更不用說上面的textbox1/textbox2等控制元件了。
就**來看,你有兩個文字框控制元件和兩個按鈕控制元件,你插入使用者窗體後,增加這些控制元件即可。你的按鈕改名為一個叫進入系統,一個叫取消退出。
4樓:流雲行水
單純複製**是不行的,你要先插入使用者視窗,再在視窗中插入**。
另外,要注專意**的出現物件的地方要在窗體屬中建立物件,如textbox1 ,textbox2 等都有在窗體上建立
如果沒有建立這些物件,就肯定會出現如上的錯誤!!!!
vba我比較熟悉,有機會交流交流
5樓:匿名使用者
沒有 userform視窗控制元件、textbox1 、textbox2、 ”進入系統“command控制元件、記得加上這些控制元件。
電腦老師出現執行時間錯誤?
你如果說的是右下角的時間的話 金山有此功能修復。360裡開機啟動項裡,系統關建服務,看看有沒有禁止 系統時間同步。電腦老師?哈哈他活該。我電腦老出現執行時間錯誤,需要除錯,怎麼辦?找個專門修電腦的來幫你。可能是最近裝的軟體的問題吧。每次電腦開機都會提示執行時間錯誤,請問我該怎麼辦?最好能夠把截圖傳上...
adobeacrobatpro執行時出現runtimeerror系統
解決辦法是禁止updater.api外掛程式。1.開啟acrobat或者adobe reader的外掛程式安裝目錄,通常是 c program files adobe acrobat 8.0 acrobat plug ins 或者 c program files adobe reader 8.0 r...
每次開機時出現如圖 執行時錯誤 有辦法不讓它出來嗎
你這個提示的資料夾在 開始 程式 啟動 把對應的檔案名字刪除就行了 y2.jse 或者點執行 輸入msconfig,找到該啟動項,禁用就行了,如果不放心是不是中毒,可以用360查殺下木馬和病毒 開始選單找到執行 鍵入msconfig 啟動項找到提示出現目錄的項,鉤鉤去掉。重新啟動。1.點選 開始 所...