- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
5#
發表於 2018-6-19 06:02
| 只看該作者
回復 1# chiang0320
試試看- Option Explicit
- 'Option Explicit 為 在模組層次中強迫每個在模組裏的變數都必須明確的宣告。
- '這是編寫程式易於偵錯的好習慣
- Sub Ex()
- Dim d As Object, E As Range, Ar(), T As Date
- T = Time
- Debug.Print "程式開始時間 : " & T '指令->檢視->即時運算視窗 : 查看程式起始時間
- 'Dim i%= i As Integer
- 'Integer 資料型態 Integer 變數係以範圍為 -32,768 到 32,767 之 16 位元 (2 個位元組) 數字的形式儲存。Integer 的型態宣告字元是百分比符號(%
- '********** 不會溢位 ***********
- Dim i As Long '= i&
- 'Long 資料型態
- 'Long (長整數)變數係以範圍從 -2,147,483,648 到 2,147,483,647 之 32 位元 (4 個位元組) 有號數字形式儲存。Long 的型態宣告字元為 &。 '
- Set d = CreateObject("scripting.dictionary") '字典物件
- With Sheets("p10")
- For Each E In .Range(.[a1], .[a1].End(xlDown))
- d(E.Value) = Array(E.Offset(, 2), E.Offset(, 3))
- 'e.Value > 字典物件的關鍵字(key) 導入 Array(e.Offset(, 2), e.Offset(, 3))
- Next
- End With
- With Sheets("q72").Range(Sheets("q72").[B2], Sheets("q72").[B2].End(xlDown)).Resize(, 4)
- Ar = .Value
- For i = 1 To UBound(Ar)
- If d.exists(Ar(i, 1)) Then
- 'Exists 方法 如果在 Dictionary 物件中指定的關鍵字存在,傳回 True,若不存在,傳回 False。
- Ar(i, 3) = d(Ar(i, 1))(0)
- Ar(i, 4) = d(Ar(i, 1))(1)
- Else
- Ar(i, 3) = "無資料"
- Ar(i, 4) = "無資料"
- End If
- Next
- .Value = Ar
- End With
- Debug.Print "程式結束時間 : " & Time, Application.Text(Time - T, "共計[S]秒")
- '指令->檢視->即時運算視窗 : 查看程式運行速度
- End Sub
複製代碼 |
|