恩,這幾日寫好的VBA檔總三不五時的那個壞或這個壞
查了半天,逐步執行都OK..
但用F5直接編譯就會出現莫名其妙的問題
其中之一如:有個程序我讓其爬網上資料,載後再丟EXCEL的計算公式進去其對應的相對位址格子內
如
10/1 就丟到10/1日的H1欄
10/2 就丟到10/2日的H2欄
.....以此類推
本來是都很順的,這幾日真的很會發神經的亂入..
如:10/28..本該丟到10/28日的H28格
但爬的資料是丟到10/28日那列無誤了,但後頭的入公式卻跑到前一日的10/27去(H27)
雖公式進去,計算結果仍是會抓10/27的值去做試算,
唯10/28那列=>H28卻怎麼執行它就是都跑到10/27的H27格去...
偏偏我逐步跑就全OK...
我想這應該是電腦太舊或網速過慢導致的leg現像...(或許吧)
---------------------------------------------------------------------
而今日又發現另一檔的情況則是,我在該檔內有建一樞紐分析表
同樣內部的數據會去取下載回來的值來做參考.
本來也都好好的..就最近真的很古怪,..它下戴回來後都OK..
但樞紐工作表裡的數據中會變成"標題列的部份"被下載回的數據給覆蓋,
導致對應的樞紐圖抓不到標題列而不顯示(初時我以為是檔案又故障了)
但我debug F8去一一查,都是OK的..
所以我想這應該又是 leg 造成的情況.. (程序跑太快或....其它不明原因吧)
想了老久..本來是用工作表的保護功能,把"標題列" 給保護起來的.
但因為我有個程序是設定按入該鍵後,會將標題列重建,此時若選擇工作表部份保護下..
這標題列重建的巨集此時建便會變成無法使用.. = =真是頭大
..
於是我又想了好久..
恩..決定要用事件程序
=>1、我想讓該工作簿在下載數據後,若樞紐工作表裡的標題列有被更改時,
就由事件程序來通知我..以便我此時在按下我寫好的標題列重建巨集即可讓這問題解決
(畢竟它不是每回都會出現標題列被強迫亂入的狀態...實際情況我還真不明白..
若是邏輯錯誤,理應每回都會有此現像,偏又常一下OK、一下不OK)
若是有高手知一二,都歡迎分析與解答。感激不盡中....
只是..恩..我想了半天,卻想不出要怎麼寫這事件程序..
以下是其選用的條件
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
''''''''''''''''''''''''
MsgBox "樞紐工作表-其標題列被更改過"
End Sub
''''''''''''的地方,這裡要怎麼寫才能針對當第一列被動到時才通知
我本來是用rows(1)
如if rows(1).....(被更動過)
可是後頭的語法該怎麼寫才能僅在第一列被動過時再通知即可...
因
以上感謝...真心感謝..再次拜託了
---------------------------
PS:補充一下其它的疑問,若有知情者也請幫忙略解一二
(註:本要多提問的,但重修文後卻突然斷片了)..這PS的部份容我想起再補..
MaverickRay wrote:
恩,這幾日寫好的VBA(恕刪)
用偵測欄位變更的方式應該是可以的,程式碼要放在要偵測的工作表裡面,試試吧!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Title_Cells As Range
Set Title_Cells = Range("A1") '改成你標題的欄位
If Not Application.Intersect(Title_Cells, Range(Target.Address)) Is Nothing Then
MsgBox "樞紐工作表-其標題列被更改過"
End If
End Sub
當您程式碼會寫愈大時,反而會出現莫明奇妙的問題
想修復卻無從下手
例如您這個標題問題
最簡單的方式
在該工作表(暫訂工作表1),找一個用不到的格子(暫訂b1)
然後在所有macro的第一行,加入一行顯示正在執行macro名稱的程式碼
配合3樓,小小尉高手,寫給您的副程式
當出現標題被改時,看一下是那個macro在作怪
再針對那個macro檢查是否延遲時間不夠、還是真的有bug要修
sub 副程式的名字()
sheets("工作表1").range("b1")="副程式的名字"
……
end sub
sub test()
sheets("工作表1").range("b1")="test"
……
end sub
sub abc()
sheets("工作表1").range("b1")="abc"
……
end sub
內文搜尋
X




























































































