昱得資訊工作室
麻辣學園
歡迎光臨, 訪客. 請先 登入註冊一個帳號.
您忘了 啟用您的帳號嗎?
2008-10-16, 05:08:14
世界展望會助學計劃
首頁 說明 登入 註冊 贊助論壇 想當作者?
新聞: Wink有贊助本論壇經營的會員,請務必來信通知小誌,這樣才能為您更新會員群組喔!!


+  麻辣家族討論區
|-+  MS Office 系列
| |-+  EXCEL
| | |-+  Excel程式區 (版主: hsieh)
| | | |-+  如何正確宣告
0 會員 以及 1 訪客 正在閱讀本篇主題. « 上一篇主題 下一篇主題 »
頁: [1] 向下 列印
作者 主題: 如何正確宣告  (閱讀 1580 次)
oobird
凸槌的木工
論壇維護群
*
離線 離線

文章: 4429


如何正確宣告
« 於: 2005-09-08, 13:43:07 »

以下這段程式有時能執行有時不能,顯示型態不符合,想是宣告的問題,但一直學不會正確的宣告,請以此例作示範指導,非常感謝!
Sub aa()
lastrow = 65536 - Application.CountBlank(Columns(1)) + 2
For i = 17 To lastrow
 j = Application.VLookup(Cells(i, 1), [y], 4, 0)
 k = Application.Match(j, [x], 0) + 2
 Range(Cells(i, k), Cells(i, k + [Time] - 1)).Merge
 Cells(i, k).Interior.ColorIndex = 48
 Cells(i, k) = Cells(i, 1) & "(" & Application.VLookup(Cells(i, 1), [data], 11, 0) & ")"
Next i
End Sub
註:[y]為一陣列區域的定義名稱:=sheet1!$B$2:$E$12
[x]為=sheet1!$C$14:$AA$14的定義名稱
[time]為一定義計算公式的名稱
[]裡面放"x"會變成亂碼?
« 最後編輯時間: 2005-09-10, 01:53:55 由 leonchou » 已記錄

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

文章: 101


Re: 如何正確宣告
« 回覆文章 #1 於: 2005-09-08, 22:25:25 »

set x=sheet1!$C$14:$AA$14的定義名稱
[x].Select
測試正常
« 最後編輯時間: 2005-09-10, 01:54:33 由 leonchou » 已記錄
leonchou
論壇維護群
*
離線 離線

文章: 1160


Re: 如何正確宣告
« 回覆文章 #2 於: 2005-09-10, 02:07:22 »

在VBA使用 VLookup、Match 等函數原本就有找不到資料的風險,
除非另作判斷;而且資料面的問題很難說。

另外比較明顯的不妥是 [Time],
Time 是屬於 VBA 保留字,是一個可取得系統時間的函數。
雖然在本例應不會造成問題,但是建議養成好習慣 --
任何程式碼都應該避免使用保留字做為變數或參照,
你無法預知哪天會因此而出問題。

至於 [ ] 裡面放 x 會變成亂碼,
因為它被論壇程式視為BBC代碼,成了項目符號。
發文章時可在編輯畫面 (不是快速回覆) 的
額外選項... > 選擇 [不使用表情圖] 即可。
已幫二位修正,勿怪。
已記錄

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

文章: 4429


Re: 如何正確宣告
« 回覆文章 #3 於: 2005-09-10, 08:35:05 »

謝謝指導,再請教如何得知vba的保留字?是否所有vba的函數都應作為保留字?
已記錄

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

文章: 1160


Re: 如何正確宣告
« 回覆文章 #4 於: 2005-09-10, 15:55:45 »

所謂VBA保留字是VBA所有語法會用到的字詞,這些字詞包含在
所有程序、宣告、函數、物件、事件、方法、屬性、陳述式、VBA常數... 等等,
而不包括使用者自訂的變數、常數。

有個簡易的方法可以得知某個字是不是VBA保留字 --
在VBA編輯視窗下,也就是寫程式的時候,
打完一個字,游標離開那一行,
如果這個字變成深藍色(預設值)或變成首字母大寫,
那麼這個字一定是VBA保留字。

VBA常數是例外 (註),
即便是內建常數也不會自動變色,也不一定會變首字母大寫 (xl 除外)。
而且據我所知在VBA help中Excel VBA常數並沒有獨立的列表及說明,
它們的說明往往是附屬在所屬的方法或屬性說明裡面。
例如想知道 xlAutomatic 的意義就要找 Calculation 屬性的說明。
(至於VB常數倒是有獨立的列表說明)
但屬性說明一定有常數的解釋嗎? 也不盡然。
以 Calculation 屬性為例,它只列出可用常數
xlCalculationAutomatic、xlCalculationManual、xlCalculationSemiautomatic
而沒有進一步說明 (PS. Excel2000)。
有些淺顯易懂的常數從字面上就可瞭解,否則也只好碰運氣了吧。
說不定網路上有 Microsoft 的 documentation,或是
找到有列出所有常數說明的書 (機率更小) ...

註:
Excel VBA常數以 xl 開頭,如 xlUp, xlDown, xlPart...
Word VBA常數以 wd 開頭,如 wdLine, wdFindStop, wdPrintCurrentPage...
VB 常數是適用所用VBA環境,如 vbBlue, vbRed, vbLf ...
已記錄

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

文章: 4429


Re: 如何正確宣告
« 回覆文章 #5 於: 2005-09-10, 20:12:30 »

多謝!讓您很辛苦的打了那麼多字。列出的常數有一半我不認識,只好找找說明了。感激感激!
已記錄

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

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