VBA程式執行時出現事實錯誤424要求物件是怎麼回事

2021-07-08 20:30:34 字數 3533 閱讀 9605

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.點選 開始 所...