昱得資訊工作室
麻辣學園
歡迎光臨, 訪客. 請先 登入註冊一個帳號.
您忘了 啟用您的帳號嗎?
2008-10-12, 07:01:33
世界展望會助學計劃
首頁 說明 登入 註冊 贊助論壇 想當作者?
新聞: 為增進論壇品質,全面更新硬體設備,經費有限,請各位踴躍贊助論壇!!


+  麻辣家族討論區
|-+  MS Office 系列
| |-+  EXCEL
| | |-+  Excel程式區 (版主: hsieh)
| | | |-+  出現#400的錯誤會是什麼問題呢?
0 會員 以及 1 訪客 正在閱讀本篇主題. « 上一篇主題 下一篇主題 »
頁: [1] 2 向下 列印
作者 主題: 出現#400的錯誤會是什麼問題呢?  (閱讀 2314 次)
oobird
凸槌的木工
論壇維護群
*
離線 離線

文章: 4428


出現#400的錯誤會是什麼問題呢?
« 於: 2005-04-27, 13:26:02 »

剛剛為網友寫了個小程式,我左試右試都沒問題,但傳到網友手上郤出現#400的錯誤,叫他再傳回來看,又沒問題,有人知道可能那裡出錯嗎?下面是程式碼:
Sub insert()
Dim i%, n%
n = 24
For i = n To 3
Columns(i).insert
Range("A1:A14").Copy Columns(i)
Next
End Sub

Sub del()
Dim i%, rng As Range
Set rng = Range("C1")
For i = 3 To 46 Step 2
Set rng = Union(rng, Cells(1, i))
Next
rng.EntireColumn.Delete
End Sub
以上是工作表有24欄,要在c.e.f....每隔1欄插入1欄並放入a1:a14的標題。下面的程式是刪除這些插入的欄。
« 最後編輯時間: 2005-05-14, 19:44:50 由 oobird » 已記錄

結廬待慧君
leonchou
論壇維護群
*
離線 離線

文章: 1160


Re: 會是什麼問題呢?
« 回覆文章 #1 於: 2005-04-27, 18:03:49 »

Sub insert_column()
Dim i%, n%
n = 24
For i = n To 3 Step -1
Columns(i).Insert
Range("A1:A14").Copy Cells(1, i)
Next
End Sub

1. For i = num1 To num2, num1大於num2時要 Step 負數, 否則迴圈不會做.
2. Range("A1:A14").Copy Columns(i) --> 複製與貼上的形狀不同, 錯誤.
3. 建議自定義的Sub,變數名稱最好不要用到內建關鍵字.

測試時倒是沒有你說的 400 錯誤 (應用程式或物件定義錯誤).
測試環境參考左側資訊.

PS. 對方和你的版本相同嗎?
« 最後編輯時間: 2005-04-27, 21:16:24 由 leonchou » 已記錄

oobird
凸槌的木工
論壇維護群
*
離線 離線

文章: 4428


Re: 會是什麼問題呢?
« 回覆文章 #2 於: 2005-04-27, 18:50:38 »

哦,可能版本不同,我再問問看,謝謝指導。
已記錄

結廬待慧君
oobird
凸槌的木工
論壇維護群
*
離線 離線

文章: 4428


Re: 會是什麼問題呢?
« 回覆文章 #3 於: 2005-04-28, 13:32:26 »

對方為excel2000, 照leonchou兄修改的就可執行了,只是小弟不懂,儘管有錯誤,小弟的excel2002怎會略過且又正常執行?
已記錄

結廬待慧君
yem
高中生
*
離線 離線

文章: 110



Re: 會是什麼問題呢?
« 回覆文章 #4 於: 2005-04-28, 14:15:33 »

對方為excel2000, 照leonchou兄修改的就可執行了,只是小弟不懂,儘管有錯誤,小弟的excel2002怎會略過且又正常執行?
10 Sub insert()
20 Dim i%, n%
30 n = 24
40 For i = n To 3
50 Columns(i).insert
60 Range("A1:A14").Copy Columns(i)
70 Next
80 End Sub

上述代碼在
excel2002執行,到
40 For i = n To 3
直接跳到
80 End Sub
故oobird兄執行後應該等於沒有執行

不過把40更改成
For i = n To 3 Step -2
執行依然不會發生錯誤,這可以是版本的差異吧!!
雖然2002可以這麼寫,但還是建議用leonchou兄的寫法比較正確

已記錄

What doesn't kill you will only make you stronger
oobird
凸槌的木工
論壇維護群
*
離線 離線

文章: 4428


Re: 會是什麼問題呢?
« 回覆文章 #5 於: 2005-04-28, 17:02:23 »

哇,學問太大了,您是怎麼看知道40跳到80呢?尤其是這個Step該怎麼正確使用?小弟還在摸索中,能撥冗說明一下嗎?For i = n To 3後面的Step-1是小弟刪除空白產生的錯誤符號時誤刪,-2時會隔兩欄插入一欄,您的不會嗎?
« 最後編輯時間: 2005-04-28, 17:32:22 由 oobird » 已記錄

結廬待慧君
leonchou
論壇維護群
*
離線 離線

文章: 1160


Re: 會是什麼問題呢?
« 回覆文章 #6 於: 2005-04-28, 18:44:31 »

哇,學問太大了,您是怎麼看知道40跳到80呢?

如果不熟邏輯/流程,逐步執行是debug的好方法之一。
基本上有兩個方式:
1. Alt-F8 叫出巨集視窗 > 點選巨集 > 按 [逐步執行]
2. 在VBE 視窗下,游標在某巨集程式碼之中,按 F8

顧名思義它會一行一行執行(按一次 F8 執行一行程式),
不是真的一行一行,它會符合程式的判斷和流程,
所以你看的出它從哪裡跳到哪裡。
按下VBE 視窗中工具列的停止鈕可隨時停止執行。

尤其是這個Step該怎麼正確使用?小弟還在摸索中,能撥冗說明一下嗎?For i = n To 3後面的Step-1是小弟刪除空白產生的錯誤符號時誤刪.......

Step 其實很單純,這是指定迴圈counter的執行順序與間隔。
Step 省略不輸入則預設為 Step 1;
Step n 是每隔 n 個 counter 執行一次。

For i = num1 To num2,
num1 小於 num2 時 n 需為正數 (順向執行);
num1 大於 num2 時 n 需為負數 (逆向執行),
否則迴圈不會跑(直接跳出迴圈)。
已記錄

yem
高中生
*
離線 離線

文章: 110



Re: 會是什麼問題呢?
« 回覆文章 #7 於: 2005-04-28, 20:19:45 »

佩服!! Cool
leonchou兄提攜教導後輩的精神令人感佩,難怪桃李滿天下,吾難望其項背,請受我一拜orz

ps.寫這種教學文章好辛苦,我也曾寫過一兩篇就累了,且會想何不利用這些時間再學點新的,實在是很自私!! Azn
已記錄

What doesn't kill you will only make you stronger
oobird
凸槌的木工
論壇維護群
*
離線 離線

文章: 4428


Re: 會是什麼問題呢?
« 回覆文章 #8 於: 2005-04-28, 20:31:50 »

太好了,兩位都請受我一拜。
已記錄

結廬待慧君
oobird
凸槌的木工
論壇維護群
*
離線 離線

文章: 4428


Re: 會是什麼問題呢?
« 回覆文章 #9 於: 2005-04-29, 13:21:13 »

有個小問題存在心中好久了,也一併請教:程式一開始的宣告:"Dim i%, n%"甚至加上" As Integer"到底有沒有必要?小弟的一些小程式加不加都一樣執行,(大程式不會寫)所以也無從認識它的目的。能再費心賜教嗎?
已記錄

結廬待慧君
頁: [1] 2 向上 列印 
« 上一篇主題 下一篇主題 »
自訂搜尋
跳到:  

本頁花了 0.258 秒, 以及 21 次的資料庫查詢.