Board logo

標題: 編譯錯誤,於隱藏模組 [打印本頁]

作者: 周大偉    時間: 2010-11-22 07:35     標題: 編譯錯誤,於隱藏模組

大大們,好
小弟有一vba程式工作表, 在家中及公司的個人電腦中使用是沒有問題, 但當這工作給予公司其他同事使用時, 會出現"編譯錯誤,於隱藏模組"請教大大們指導..謝謝!!
作者: Hsieh    時間: 2010-11-22 11:54

通常這種現象發生於程式運行時發生錯誤本來應該會跳岀偵錯視窗
而vba保護的狀態下所以無法檢視vbe
若不同電腦才會發生
可檢查office版本是否相同
作者: oobird    時間: 2010-11-22 12:56

http://support.microsoft.com/kb/307410/zh-tw
這裡的看過了嗎?
作者: 周大偉    時間: 2010-11-22 20:37

两位大大好
小弟剛回到家中, 看到2位大大回應,其實我也曾想過是否是不同版本的軟件關係,
但公司中用的全是統一作業系統, 應不是作業系統,oobird大大所提供的綱址未看過, 小弟會進入, 希望能找出原因..在此謝謝二位大大回應, 衷心謝謝..
作者: solely    時間: 2010-11-22 21:06

這個問題.....我碰過,凡是有變數的都要宣告
例如for i =1 to 100
我的電腦不用Dim i 程式依然可以執行,公司的就不行。
原本還誤以為是2010與2003版本的問題,差點把公司的2010砍了XD
作者: Min    時間: 2010-11-22 22:00

大大們,好
小弟有一vba程式工作表, 在家中及公司的個人電腦中使用是沒有問題, 但當這工作給予公司其他同事 ...
周大偉 發表於 2010/11/22 07:35 AM

檢查一下"引用項目"
看看有沒有遺漏的~
作者: 周大偉    時間: 2010-11-22 22:25

謝謝大大們,
小弟不才, 實看不端倪, 現把程式碼傳上,望大大們指導,實感激,謝謝!!
Private Sub Calendar1_Click()
[I10] = Calendar1
Calendar1.Visible = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal T As Range)
If T.Count > 2 Then End
If T.Count > 2 Then End
For Each C In [d15:d35]
If C.Value >= 1 And C.Value < 500 Then C.Borders(6).LineStyle = 1
Next
If Not Application.Intersect([h15:h35], T) Is Nothing Then
If T.Borders(6).LineStyle = 1 Then
T.Borders(6).LineStyle = 0
Else
T.Borders(6).LineStyle = 1
End If
ElseIf T.Address = "$I$10J$10" Then
   Calendar1.Visible = True: Calendar1 = Date
   Else
   Calendar1.Visible = False
End If
End Sub
作者: Hsieh    時間: 2010-11-22 22:44

你解除VBE密碼後,在出現錯誤的電腦中執行
看出現錯誤時的中斷點是哪一行?
就知道問題出在哪裡
依此程式碼會出錯得應該只有月曆控制項
你先自行檢查看看
作者: 周大偉    時間: 2010-11-22 22:54

謝謝提示, 明天回到公司, 試試
作者: solely    時間: 2010-11-23 19:10

我猜.....
[I10] = Calendar1 的[I10] 會跳異常
要改成cells(10,9)
另外For Each C In [d15:d35]
要先Dim C ,至於 [d15:d35]也要以cells方式表示
作者: 周大偉    時間: 2010-11-23 21:21

先謝過各大大回應, 衷心感謝,
今日按HSIEH大大的教指導, 解除保護, 在公司中再開啟該檔案, 如HSIEH大大所言, 跳出錯誤處, 但小弟實看不出錯在何處, 而為何小弟家中及公司中的個人電腦則沒有問題, 請大大協助修改,
solely大大, 謝謝回應, 大大所指出之處, 小弟明天會回公司試試, 衷心感謝回應,
我現把該檔案上傳, 請大大協助修改, 實感激萬分....
[attach]3733[/attach]
作者: oobird    時間: 2010-11-23 21:45

If T.Count > 2 Then End為什麼寫兩行?
把第一行改成dim C as range試試。
作者: 周大偉    時間: 2010-11-24 18:55

本帖最後由 Hsieh 於 2010-11-24 19:38 編輯

oobird大大,Solely大大, 两位好,先謝過回應
两位大大的指導, 問題還是解決不來,
Solely大大所指出, 不知我是否有理解錯, 還請Solely大大再度指導, 因按其指示修改還是不成功, 謝謝!!
oobird大大, 已按其修改處修改, 程式錯誤處呈現尾處Calendar1.Visible = False,請大大教導, 謝謝!!

Private Sub Worksheet_SelectionChange(ByVal T As Range)
dim C as range
If T.Count > 2 Then End
For Each C In [d15:d35]
If C.Value >= 1 And C.Value < 500 Then C.Borders(6).LineStyle = 1
Next
If Not Application.Intersect([h15:h35], T) Is Nothing Then
If T.Borders(6).LineStyle = 1 Then
T.Borders(6).LineStyle = 0
Else
T.Borders(6).LineStyle = 1
End If
ElseIf T.Address = "$I$10:$J$10" Then
   Calendar1.Visible = True: Calendar1 = Date
   Else
   Calendar1.Visible = False
End If
End Sub
作者: oobird    時間: 2010-11-24 19:39

這樣的話幾乎可以斷定如4樓Min版主所說的,設定引用項目遺失的問題了。
在設定引用項目中找到遺失的引用,取消勾選。然後最好儲存後重啟!
若還是不行,應該這台電腦沒有把日曆控件拉出來!
作者: Hsieh    時間: 2010-11-24 19:56

回復 13# 周大偉


    應是你的月曆控制項不存在,讓EXCEL處於設計模式
看看有沒有看到月曆控制項,若是沒有就設置上去
因為你說其他電腦可以執行,有可能遺失控制項
從工具/設定引用項目中檢查
勾選Microsoft Calendar Control 2007(這是2007版中所見名稱)
沒記錯的話2003版前應該是日曆控制項?.0
若是沒有此控制項可勾選,可能是那台電腦沒有安裝Access
重新安裝Access看是否能解決問題
作者: oobird    時間: 2010-11-24 20:02

2003版是1.1
2002是1.0
作者: solely    時間: 2010-11-24 20:19

如果,錯誤最後停留在Calendar1.Visible
那就像各位版主所說的,其他控制項裏沒有月曆控制項XD
如果,你們公司的電腦和我們公司的一樣的話
那麼,它們是看不懂什麼是[I10]、Chr(10)、For Each C...
作者: 周大偉    時間: 2010-11-24 22:09

"oobird"Soleiy"Hsieh"Min"大大,
好, 謝謝回應, 看完了這幾段指導, 總結是找不到月曆控制項, 心想, 家中電腦及公司個人電腦都可以使用該月曆控制項, 為何在公司其它電腦中用不著, 同是03excel, 為何有此情況, 再翻看各大大指導文,Hsieh文中提到access, 再聯想各大大文中所提及的沒有該控制項, 腦海突然明白了一件事, 程式碼應沒錯誤, 如各大大所說, 沒有該控制項, 因家中及公司個人電腦能使用的原因是安裝了access, 該軟件是有月曆控制項, 而03excel, 有沒有該月曆控制項, 而能正常使用中, 都是安裝了access, 這點我一直都忽略, 當然真正原因明天回到公司中再印證便知曉, 在此再次謝謝各大大無私的指導, 感恩, 願主庇佑各大大..
作者: 周大偉    時間: 2010-11-25 18:53

本帖最後由 周大偉 於 2010-11-25 18:55 編輯

終於印證了, 如大大們所說, 是沒有該月曆控件, 我用的電腦有access軟件,而在沒有該軟件電腦中使用,沒法使用該控制項, 我在控制工具箱中,其他控制項中查看有沒有該月曆控制項, 真是沒有該控制項,這便使迷惑多時的問題解開,
謝謝大大們於此期間的指導,

但我有另一問題請教,excel軟件是不是沒有該控制項,而必須具備access軟件,才能用到該月曆控制項, 可有其它途徑,無須安裝access軟件,而excel軟件就可使用月曆控制項. 謝謝!!
作者: oobird    時間: 2010-11-25 20:21

把你電腦中的複製過去就行了!
作者: 周大偉    時間: 2010-11-25 20:37

oobird大大, 好
謝謝指導, 祝願快樂..
作者: oobird    時間: 2010-11-25 21:54

http://www.rnr-it.co.uk/mscalocx.html
作者: oobird    時間: 2010-11-25 22:03

本帖最後由 oobird 於 2010-11-25 22:04 編輯

放在C:\WINDOWS\system32目錄

開始~執行 輸入  regsvr32 mscal.ocx  按enter
作者: 周大偉    時間: 2010-11-25 22:13

oobird大大,
謝謝提供路徑, 衷心感謝,
其實我打算重灌office, 現在我可多個選擇了,
最後再謝過大大, 聖誕快到, 祝願各版主大大,前輩, 聖誕快樂...新年進步..
作者: flying008    時間: 2010-11-27 07:47

非常感谢大大们的指点, 这样就可以使用日历控件而不用重新安装ACCESS软件了, 谢谢……




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