Board logo

標題: [發問] VBA執行時發生執行階段錯誤''91'' [打印本頁]

作者: syuan    時間: 2010-5-26 08:39     標題: VBA執行時發生執行階段錯誤''91''

本帖最後由 Hsieh 於 2010-5-26 16:36 編輯

小弟遇到一個問題

就是小弟如果先按如下圖的順序,來執行巨集∼∼
就會出現userform2的表單


但如果先按如下圖的順序時



就會出現如下圖


當按下確定時,就會出現如下圖 (執行階段錯誤91,沒有設定物件變數或with區塊變數)?


小弟在網路上找了關於這個訊息的解釋,但這個訊息似乎有好幾種說法

有說是變數沒設為區域,也有說是沒設為全域變數∼∼

請問這是怎麼回事呢?
[attach]954[/attach]
感謝各位,祝安康∼∼


PS:為什麼論壇無法傳附件上去?
作者: Hsieh    時間: 2010-5-26 09:04

回復 1# syuan


    if敘述沒設定到jp
改成
  1. Private Sub ListBox3_Click()
  2. UserForm2.ListBox1.Clear

  3. Set TA = Sheets("sheet1").Range("a2:b6")'設置變數TA
  4. Set JP = Sheets("sheet1").Range("A10:B14")'設置變數JP
  5. If UserForm1.ListBox1.ListIndex = 0 And UserForm1.ListBox2.ListIndex = 0 And UserForm1.ListBox3.ListIndex = 0 Then
  6. With UserForm2.ListBox1
  7.      .ColumnCount = TA.Columns.Count
  8.      .ColumnWidths = "100"
  9.      .List = TA.Value
  10. End With
  11. UserForm2.Show
  12. '----------------------------------------------------
  13. ElseIf UserForm1.ListBox1.ListIndex = 1 And UserForm1.ListBox2.ListIndex = 0 And UserForm1.ListBox3.ListIndex = 0 Then
  14. UserForm2.ListBox1.Clear
  15. With UserForm2.ListBox1
  16.      .ColumnCount = JP.Columns.Count
  17.      .ColumnWidths = "100"
  18.      .List = JP.Value
  19. End With
  20. UserForm2.Show
  21. Else
  22. MsgBox "找不到檔案"
  23. End If
  24. End Sub
複製代碼

作者: syuan    時間: 2010-5-26 11:43

本帖最後由 syuan 於 2010-5-26 11:44 編輯

[attach]951[/attach]感謝Hsieh版大的解惑,感謝小誌管大的回覆(應該是小弟目前的權限不足,所以看不到自己上傳的附件)

小弟將表單一的ElseIF下的set該句,放到如版大所述的位置,果然就不再出現那個訊息(執行階段錯誤91,沒有設定物件變數或with區塊變數)

但當點選userform1裡Listbox1的01.日本時,userform1的Listbox2與Listbox3都可顯示,而userform2的Listbox1裡的項目卻無法點選(如下圖)
(小弟的這個程式是用Excel的VBA來開啟pdf檔)



感謝先進們,祝安康∼∼

ps:附件的檔案副檔名,請改為xls!
作者: PD961A    時間: 2010-5-26 12:39

本帖最後由 PD961A 於 2010-5-26 12:41 編輯

感謝Hsieh版大的解惑,感謝小誌管大的回覆(應該是小弟目前的權限不足,所以看不到自己上傳的附件)

小弟 ...
syuan 發表於 2010-5-26 11:43 [/quote]

HS板主
請問下載時的對話要用儲存   下載 (46.82 KB)
[attach]952[/attach]

檔案名稱直接把RAR附檔名一併寫入
[attach]953[/attach]

可是解不出檔案
請問步驟哪裡有問題?
謝謝!!
作者: Hsieh    時間: 2010-5-26 16:39

回復 4# PD961A


    1#附件已更新,下載後已是正確rar壓縮檔
上傳附件不接受xls副檔名
要先壓縮後再上傳壓縮檔

作者: PD961A    時間: 2010-5-26 18:08

本帖最後由 PD961A 於 2010-5-26 18:10 編輯

回復 5# Hsieh
版主
1#附件已更新,下載後已是正確rar壓縮檔
我知道:上傳附件不接受xls副檔名
            要先壓縮後再上傳壓縮檔
正常是直接解壓縮就可以
不過因為開出的檔案是這樣的畫面才會覺得疑問...
謝謝!!
[attach]955[/attach]


  另外不好意思1#附件更新檔是哪一個??感謝您!
作者: Hsieh    時間: 2010-5-26 18:13

回復 6# PD961A


    原因在於樓主只是把檔案取名為2.rar
實質上該檔案是.xls
我已經將樓主原檔案重新壓縮上傳
所以現在已是正確的.rar了
作者: syuan    時間: 2010-6-1 14:52

造成大家困擾,真是十分抱歉!

起因是小弟直接將xls檔的副檔名,改成rar的壓縮檔!

在第一帖忘了註明,結果讓PD961A大誤解,真是不好意思!

下次小弟會將該檔壓縮後再上傳∼∼
作者: syuan    時間: 2010-7-3 12:23

本帖最後由 syuan 於 2010-7-3 14:33 編輯

不好意思,小弟又來問問題了∼∼

小弟想製作一個輸入號碼後,再按下按鈕時,會出現該號碼的PDF檔

如圖下
[attach]1637[/attach]

說明:當上方的LISTBOX點選後(即EXCEL下方的SHEET名稱),使用者再輸入想查詢的號碼,VBA就會依輸入的碼碼,來搜尋硬碟路徑下的PDF檔

小弟實在不知道該如何寫,已經在網路上找很久,但都沒找到類似的語法∼∼

只好上來請益各位,還望各位先進不吝教導,祝有個愉快假期!

這是EXCEL的VBA檔案[attach]1636[/attach]
作者: kimbal    時間: 2010-7-13 22:08

本帖最後由 kimbal 於 2010-7-13 22:12 編輯
不好意思,小弟又來問問題了∼∼

小弟想製作一個輸入號碼後,再按下按鈕時,會出現該號碼的PDF檔

如圖 ...
syuan 發表於 2010-7-3 12:23



   
下面引用由syuan2010/07/14 00:27am 發表的內容:
感謝kimbal大的教導(這幾天在弄別的東西,所以沒立即回覆)
小弟將這段語法套在程式,的確能將pdf打開
但小弟又發現兩個問題點︰
1.如果pdf的主檔名裡,有『1234-2010.pdf』、『4321.pdf』與『1234-1-2010.pdf?...


『K = TextBox1.Text
FS = "H:\" & ListBox1.List(ListBox1.ListIndex) & "\" 』
這段改成如下

『Select Case ListBox1.ListIndex
Case 0
K = TextBox1.Text
FS = "F:\xxxx\測試用\甲\"
Case 1
K = TextBox1.Text
FS = "F:\xxxx\測試用\乙\"
Case 2
K = TextBox1.Text
FS = "F:\xxxx\測試用\丙\"
End Select』

1. 如果有多於1個檔
StrFile = Dir(FS & K & "-*.pdf")
    If StrFile = "" Then
        MsgBox "找不到檔案"
    End If
    Do While StrFile <> ""
        If StrFile <> "" Then
            ActiveWorkbook.FollowHyperlink  FS & K & StrFile
        End If
        StrFile = Dir
    Loop

2. 試試,
FS & "*" & K & "-*.pdf"

就是找  "F:\xxxx\測試用\x\" + 任何字 + textbox上的字 + - +  任何字 + '.pdf' 的意思
作者: syuan    時間: 2010-7-21 22:53

『K = TextBox1.Text
FS = "H:\" & ListBox1.List(ListBox1.ListIndex) & "\" 』
這段改成 ...
kimbal 發表於 2010-7-13 22:08



感謝kimbal大的教學!

小弟這幾天一直在忙別的案子,所以就沒時間上來留言!

小弟將這段程式套到程式裡,發現有點怪怪的!

在輸入號碼的時候,並沒辦法忽略主檔名前的xxx來打開pdf檔(例如主檔名為ABC 1111-1990.pdf)

仍需完全輸入主檔名的全名才打的開!

現在正傷腦筋這段語法,不知該怎麼修改∼∼∼

偏偏現在手頭上又有別的案子在走,實在讓我沒辦法專心的想語法∼∼(今天開會後又有東西要弄了.....)
作者: kimbal    時間: 2010-7-21 23:41

感謝kimbal大的教學!

小弟這幾天一直在忙別的案子,所以就沒時間上來留言!

小弟將這段程式套 ...
syuan 發表於 2010-7-21 22:53



現在用的是不是還是這句?
StrFile = Dir(FS & K & "-*.pdf")
是的話可以改成這句試試
StrFile = Dir(FS & "*" & K & "-*.pdf")
作者: syuan    時間: 2010-8-11 23:23

本帖最後由 syuan 於 2010-8-11 23:24 編輯
現在用的是不是還是這句?
StrFile = Dir(FS & K & "-*.pdf")
是的話可以改成這句試試
StrFile = Dir(FS & "*" & K & "-*.pdf")
kimbal 發表於 2010-7-21 23:41


感謝kimbal大的教學!

小弟因近幾個禮拜皆在忙公司的專案,雖都有忙裡偷閒來論壇上點選”每日報到”任務來賺積分!

但並沒有來回覆這篇,真是甚感抱歉!(因小弟亦在進行該程式的另一項功能的檔案連結)

小弟將您所示的那句語法鍵入程式中!已能開啟想要的pdf檔並執行無誤!


比較好奇的是那句語法StrFile = Dir(FS & "*" & K & "-*.pdf")是不是解釋成

strfile=目錄(”路徑”&”忽略前段字”&”文字盒裡的字串”&”忽略-後的字串.pdf”)

FS="X:\"
K=Textbox1.text


不知小弟這樣解釋是否可行?

以上,祝安康!
作者: kimbal    時間: 2010-8-12 22:02

回復 13# syuan


    對啊
作者: Min    時間: 2010-8-13 22:59

忽略前段字....忽略-後的字串

"忽略"改用"包含" 解釋會較恰當!
或是解釋為Like也行~
作者: syuan    時間: 2010-11-10 19:41

本帖最後由 syuan 於 2010-11-10 19:42 編輯

[attach]3564[/attach]
感謝Hsieh、kimbal與Min的回覆

這幾個月小弟一直在忙別的案子,所以就沒辦法上線來回覆!

雖然途中有跑到別帖去延續問題,但小弟想...還是用這帖回帖好了
http://forum.twbts.com/viewthread.php?tid=1199&page=2


小弟又遇到一個問題,如下圖
藍色框為資料,右側userform2表單的上的文字來源,即是從左側藍色框而來(滑鼠依序點選1、2、3後會出現userform2)


只是小弟有天突然想到,如果在第七列插入一列或插入資料後,那userform2上的文字來源是不是會跑掉?

一試∼∼果不其然,如下圖


因為小弟是用
Set TA = Sheets("甲").Range("a2:b6")
Set JP = Sheets("甲").Range("a7:b11")

的語法來寫,也就是指定行與列的儲存格來連結資料!

那日後如果要如第二張圖插入資料時,那麼”每一行”裡的range豈不是要連動更新...

想請問先進們,vba是否有函數或指令可以來克服這個問題呢?

以上,感謝各位∼∼祝安康!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)