超入門 Android 平板電腦

最 近 比 較 黑 仔 ,家 裡 壞 了 兩 台 裝 置 。第 一 台 是 舊 iPad ( 4th gen ),另 一 台 是 小 米 Max 3。

舊 iPad 算 是 非 常 舊 了 ,用 了 起 碼 6 – 7 年 的 樣 子 。因 為 它 也 很 慢 了 ,亦 不 能 更 新 到 最 新 的 iOS,所 以 它 只 是 放 在 客 廳 裡 供 所 有 家 人 共 用 。例 如 作 為 智 能 家 居 的 遙 控 器 、電 視 遙 控 器 、網 路 音 響 的 遙 控 器 、3D 打 印 機 遙 控 器 ,平 時 也 會 用 它 來 看 看 報 紙 、上 網 查 查 資 料 的 樣 子 。它 的 電 池 早 早 就 打 柴 ,最 近 更 開 始 花 畫 面 。如 果 要 換 電 加 換 顯 示 屏 ,還 不 如 買 個 新 的 。

如 果 買 新 iPad 的 話 ,我 肯 定 會 換 一 部 iPad Pro 13 寸 的 。不 過 那 真 的 是 太 太 太 貴 了 !比 我 工 作 用 Notebook Lenovo Legion 5 ( AMD ) 還 要 貴 !至 於 最 便 宜 的 iPad ( 8th Gen ),卻 又 完 全 令 人 提 不 起 勁 。

至 於 Android Pad,其 實 也 沒 什 麼 特 別 好 的 選 擇 。Android 平 板 的 市 場 嚴 重 萎 縮 ,新 機 的 選 擇 已 經 變 得 越 來 越 少 。還 有 出 平 板 的 大 牌 子 大 概 只 有 Samsung 和 Lenovo,其 他 就 是 國 內 的 品 牌 例 如 小 米 、華 為 ( 和 榮 耀 ) 等 等 ,便 宜 的 山 寨 品 牌 就 有 台 電 ( Teclast )、酷 比 魔 方 ( Alldocube ) 等 。

我 也 稍 為 算 是 半 個 小 米 粉 絲 ,那 就 看 看 小 米 的 平 板 。小 米 平 板 4 ,有 8 寸 和 10 寸 ( Plus )兩 種 大 小 。8 寸 大 概 要 一 千 五 人 仔 ,而 10 寸 就 是 二 千 人 仔 的 樣 子 。不 過 小 米 平 板 4 已 經 是 3 年 前 的 產 品 ,怎 麼 看 都 有 點 舊 ,怎 麼 看 都 有 點 不 值 現 在 的 價 錢 。

那 有 沒 有 最 新 出 的 平 板 呢 ?當 然 有 ,立 即 Google 一 下 ,找 到 了 一 部 酷 比 魔 方 的 10 寸 平 板 ,iPlay 40。價 錢 真 係 平 到 你 唔 信 ,定 價 只 要 人 仔 ¥1199。

Brand酷比魔方
ModeliPlay 40
定價¥1,199
屏幕尺寸10.4 寸 IPS
解像度2000 x 1200
Android10
CPUUnisoc Tiger T618
Ram8GB
Rom128GB
SD CardUp to 2TB
Front Camera5M Pixels
Rear Camera8M Pixels
4G LTEDual SIM
WiFi802.11 ac dual band
ChargingUSB Type C
Headphone JackType C
Battery6000 mAh
Dimension248.1 x 157.86 x 8.2 mm
Weight475 g

iPlay 40 的 風 評 很 不 錯 ,銷 量 也 不 差 ,有 說 是 最 具 性 價 比 的 千 元 平 板 。酷 比 魔 方 還 有 一 點 比 其 他 國 內 品 牌 好 的 ,就 是 有 國 際 版 ( 即 是 有 Google Play )。華 為 、小 米 的 平 板 ,因 為 只 有 國 內 版 ,所 以 都 是 沒 有 Google Play 的 。

除 了 國 產 CPU 比 較 慢 ,其 他 規 格 都 中 規 中 矩 。因 為 CPU 較 一 般 ,玩 大 食 的 遊 戲 應 該 不 會 很 好 ( 不 過 我 是 不 打 機 的 )。除 了 打 機 之 外 ,做 其 他 野 應 該 都 不 會 有 問 題 。如 果 按 我 家 的 用 法 ,就 更 是 綽 綽 有 餘 了 。

10.4 寸 2K 屏 的 細 緻 度 ,在 家 裡 怎 麼 用 都 應 該 很 足 夠 了 。它 也 有 5G 的 WiFi ,不 過 以 我 家 的 用 法 ,WiFi 快 慢 的 分 別 也 不 是 很 大 。iPlay 40 還 有 雙 卡 雙 待 ,不 過 我 是 應 該 用 不 著 了 。

iPlay40 有 分 國 內 版 和 國 際 版 。國 際 版 就 是 有 多 國 語 言 和 Google Play。反 正 價 錢 一 樣 ,大 家 千 萬 不 要 買 錯 了 國 內 版 。

今 次 挑 選 的 這 家 「小 杰 数 码 」,贈 品 比 其 他 店 多 很 多 。包 括 原 廠 的 水 晶 殼 皮 套 、鋼 化 膜 、Type C 轉 換 頭 、耳 機 、電 容 筆 等 等 。雖 然 東 西 都 很 垃 圾 ,但 皮 套 和 鋼 化 膜 另 外 買 也 要 好 幾 十 蚊 。

平 板 本 身 其 實 已 經 貼 好 了 原 廠 的 軟 膜 ,贈 送 的 鋼 化 膜 其 實 可 以 等 軟 膜 用 壞 了 才 換 。不 過 考 慮 到 這 是 放 在 客 廳 共 用 的 機 器 ,根 據 經 驗 大 家 一 定 會 「特 別 愛 惜 」,所 以 我 就 二 話 不 說 換 上 了 鋼 化 膜 。

因 為 我 習 慣 單 手 拿 平 板 ,不 太 喜 歡 原 廠 的 皮 套 。所 以 我 後 來 又 花 了 幾 十 蚊 買 了 清 水 殼 和 平 板 手 持 帶 。

iPlay 40 用 了 差 不 多 一 個 月 ,感 覺 還 是 非 常 好 的 。安 裝 App、開 啟 App、瀏 覽 網 頁 之 類 ,反 應 都 是 十 分 迅 速 。那 個 8GB ram 應 記 一 功 。2K 顯 示 屏 的 亮 度 很 足 夠 ,反 正 我 也 只 在 室 內 用 。5G 頻 道 的 WiFi 速 度 很 快 ,上 下 載 速 度 都 可 以 輕 易 超 過 300 Mbps。

因 為 我 唔 打 機 ,就 不 去 跑 什 麼 兔 大 師 了 。反 而 我 自 己 喜 歡 用 一 些 web base 的 benchmark 去 比 較 不 同 裝 置 的 實 際 使 用 速 度 。在 這 裡 我 用 Speedometer 2.0Basemark Web 3.0。這 種 web base benchmark 的 好 處 ,就 是 有 browser 的 裝 置 就 可 以 跑 ,不 管 你 是 手 機 平 板 desktop notebook,還 是 Windows Mac Linux iOS Android,通 通 都 可 以 一 齊 跑 ,而 且 分 數 可 以 直 接 比 較 。

Speedometer 2.0Basemark Web 3.0
舊 iPad + chrome13.2109.05
iPlay 40 + chrome32.7246.61

從 上 表 的 結 果 可 以 看 到 ,上 網 站 睇 網 頁 之 類 的 事 情 ( 也 可 以 當 成 是 一 般 使 用 ),iPlay 40 比 舊 iPad 都 快 了 超 過 200%。大 概 以 這 個 超 入 門 級 的 價 錢 真 是 十 分 值 得 了 。

當 然 iPlay 40 的 得 分 並 不 高 ,大 概 只 有 Android 旗 艦 機 的 一 半 。不 過 iPlay 40 的 價 錢 只 要 旗 艦 機 的 四 分 之 一 甚 至 更 低 。 ( 新 iPhone 和 iPad 的 得 分 會 更 恐 怖 ,不 過 價 錢 也 同 樣 ……  )


至 於 小 米 Max 3 ,它 是 我 的 第 二 手 機 。主 要 用 途 是 工 作 上 通 信 。多 得 它 比 較 大 的 屏 幕 ,我 也 時 常 在 它 上 面 看 小 說 ( 坐 車 的 時 候 )。小 米 Max 3 是 一 推 出 我 就 入 手 了 ,用 了 兩 年 多 。最 新 幾 星 期 開 始 會 自 動 reboot,到 了 現 在 ,一 天 會 自 動 reboot 3-5 次 。特 別 是 當 你 和 別 人 正 在 通 訊 時 ,它 一 reboot 就 會 斷 線 一 兩 分 鐘 ,真 是 特 別 沒 有 禮 貌 的 ,很 容 易 得 失 客 戶 !

上 小 米 的 官 網 查 了 一 下 ,如 果 換 主 板 的 話 ,盛 惠 HK$1,008 大 元 。以 Max 3 本 身 的 機 價 ,這 樣 修 理 有 點 不 值 。

小 米 Max 3 壞 了 ,那 就 上 小 米 Max 4 好 了 ( 我 之 前 也 是 由 Max 2 升 級 Max 3 的 )!不 過 小 米 換 人 之 後 ,Max 4 已 經 胎 死 腹 中 了 。華 為 倒 是 有 頗 多 7 寸 手 機 ,比 較 新 的 榮 耀 X10 Max 看 著 也 是 很 不 錯 。但 是 華 為 被 封 殺 ,是 沒 有 Google Play 的 。加 上 X10 Max 差 不 多 是 一 年 前 的 產 品 和 三 千 大 元 的 價 錢 ,而 且 是 水 貨 ,還 是 算 了 吧 。

傳 說 中 的 Max 4 有 7.2 寸 的 顯 示 屏 ,反 正 我 時 常 看 書 ,把 心 一 橫 ,那 就 不 如 換 個 8 寸 的 平 板 好 了 !有 沒 有 新 機 呢 ?有 ,酷 比 魔 方 稍 早 前 也 推 出 了 iPlay 8T,就 是 一 台 有 得 打 電 話 的 8 寸 平 板 。

Brand酷比魔方
ModeliPlay 8T
定價¥499
屏幕尺寸8 寸 IPS
解像度1280 x 800
Android10
CPUUnisoc SC9832E
Ram3GB
Rom32GB
SD CardUp to 128GB
Front Camera2M Pixels
Rear Camera2M Pixels
4G LTEYES
WiFi802.11 b/g/n
ChargingUSB Type C
Headphone Jack3.5mm
Battery5500 mAh
Dimension216.8 x 122.1 x 10.2 mm
Weight343 g

看 似 垃 圾 一 樣 的 規 格 ,連 我 的 舊 小 米 Max 3 也 遠 遠 比 不 上 。不 過 ,價 錢 也 同 樣 是 垃 圾 級 別 的 ,才 不 到 五 百 蚊 人 仔 ( 只 要 小 米 平 板 1/3 的 價 錢 )!這 樣 的 機 器 究 竟 能 做 什 麼 呢 ?反 正 之 前 的 iPlay 40 感 覺 還 是 很 滿 意 ,就 多 買 一 台 來 看 看 有 沒 有 驚 喜 吧 !

結 果 只 有 一 個 字 ,就 是

這 台 iPlay 8T 原 廠 是 沒 有 充 電 器 的 。我 選 的 那 家 店 就 只 有 官 方 標 配 ,沒 有 贈 品 ,所 以 就 沒 有 充 電 器 ( 也 沒 有 保 護 套 、鋼 化 膜 、轉 接 頭 之 類 )。如 果 覺 得 充 電 器 很 必 要 的 朋 友 ,最 好 是 找 有 送 贈 品 的 店 。不 過 充 電 器 其 實 只 是 很 小 的 問 題 。

iPlay 8T 原 來 裝 的 只 是 Android Go,是 一 個 閹 割 版 的 Android。Android Go 是 開 發 給 唔 夠 Ram 的 裝 置 ,號 稱 跑 起 來 可 以 比 完 全 版 更 快 ,原 意 是 好 的 。但 是 我 收 到 的 iPlay 8T 實 在 是 十 分 十 分 慢 了 ,裝 App 慢 ,開 App 慢 ,打 開 網 頁 還 是 同 樣 的 慢 。於 是 我 不 禁 要 問 ,這 機 器 如 果 裝 完 整 版 的 Android 是 一 定 會 爆 炸 的 吧 ?

Speedometer 2.0Basemark Web 3.0
舊 iPad + chrome13.2109.05
iPlay 40 + chrome32.7246.61
iPlay 8T + chrome9.33 !!跑了一半跑不完 !!
小米 Max 324.2151.81
小米 Note 10
( Android 中階手機作為參考 )
41.6263.48

這 台 iPlay 8T 竟 然 比 超 舊 的 舊 iPad 還 要 慢 ,絕 對 是 意 想 不 到 !而 且 它 還 不 能 完 成 Basemark Web 3.0 的 測 試 !它 究 竟 有 多 慢 呢 ,如 果 用 它 打 開 一 個 比 較 慢 的 網 頁 ,例 如 HK01,它 要 十 秒 八 秒 才 能 完 整 顯 示 首 頁 !很 利 害 吧 ?

超 慢 其 實 已 經 係 死 罪 。但 更 大 的 問 題 是 ,竟 然 有 很 多 熱 門 App 在 Google Play 是 安 裝 不 了 ( 會 顯 示 與 你 的 裝 置 不 兼 容 )!例 如 OpenRice、香 港 01、易 賞 錢 、HA Go、屈 臣 氏 滴 滴 賞 、DBS 信 用 卡 ( DBS Card+ HK ) 等 等 。

你 可 能 會 覺 得 以 上 的 都 是 香 港 App,iPlay 8T 卻 是 大 陸 機 ( 雖 說 是 國 際 版 ),Okay 我 算 !但 是 ,竟 然 連 很 多 Google Play 上 的 大 陸 App 也 裝 不 了 ,例 如 淘 寶 、淘 寶 Lite、米 家 App、京 東 等 等 。這 很 明 顯 已 經 超 越 了 死 罪 !

我 不 知 道 裝 不 了 那 麼 多 App 的 原 因 是 因 為 Android Go,還 是 因 為 iPlay 8T 硬 件 規 格 太 慢 。我 只 知 道 ,上 面 所 列 出 來 的 App,全 部 都 可 以 在 iPlay 40 用 Google Play 正 常 安 裝 和 使 用 。( 當 然 很 多 App 我 都 可 以 自 己 上 網 下 載 然 後 手 動 安 裝 ,但 如 果 這 樣 用 為 什 麼 還 要 分 國 際 版 有 Google Play? )

iPlay 8T 還 有 很 多 問 題 ,例 如 沒 有 light sensor 所 以 畫 面 沒 有 自 動 光 暗 ( 因 為 我 是 帶 出 街 用 ,每 次 室 外 室 內 都 要 人 手 調 光 一 次 ,確 實 比 較 麻 煩 。特 別 是 在 街 外 屏 幕 太 暗 乜 都 睇 唔 到 的 時 候 … )。又 例 如 原 裝 的 Launcher 不 能 把 把 網 頁 新 增 至 主 螢 幕 ( 要 裝 第 三 方 Launcher 才 得 )。

iPlay 8T 使 用 小 工 具 ( Widget ) 也 是 有 點 問 題 。我 個 人 很 喜 歡 用 香 港 天 文 台 App 的 小 工 具 ,放 在 主 螢 幕 可 以 看 到 未 來 多 天 的 天 氣 預 告 。但 它 裝 在 iPlay 8T 就 不 會 自 動 更 新 資 訊 。

為 什 麼 同 一 家 廠 ,在 差 不 多 時 候 推 出 的 兩 部 機 ,會 如 此 差 天 共 地 呢 ?唉 ,真 是 讓 人 夠 有 失 望 的 。酷 比 魔 方 的 研 發 部 門 一 定 是 有 精 神 分 裂 症 的 !

不 過 iPlay 8T 的 銷 量 也 應 該 是 遠 遠 比 不 上 iPlay 40 的 。因 為 我 買 了 iPlay 8T 之 後 想 要 買 外 殼 ,是 完 全 找 不 到 的 。我 也 有 問 過 幾 家 店 ,答 案 都 是 開 模 太 貴 。開 一 個 模 要 兩 萬 ,要 賣 多 少 外 殼 才 能 歸 本 ?於 是 就 沒 有 人 去 做 了 。

這 iPlay 8T 肯 定 是 當 不 了 我 的 第 二 手 機 ,最 終 是 淪 為 了 家 裡 的 第 二 個 共 用 平 板 。8 寸 平 板 ,用 來 看 小 說 看 漫 畫 ,還 是 十 分 理 想 的 ,比 10 寸 還 好 。因 為 比 較 小 和 輕 ,單 手 握 持 多 久 也 不 會 累 。

近 年 許 多 新 手 機 的 屏 幕 尺 寸 都 在 6.5 – 6.7 寸 ,也 許 7 寸 左 右 的 所 謂 大 屏 幕 手 機 已 經 沒 有 太 大 分 別 。例 如 我 的 主 要 手 機 的 屏 幕 都 已 經 有 6.54 寸 了 ,所 以 實 在 是 想 要 一 台 屏 幕 再 大 一 點 的 第 二 手 機 。

我 的 小 米 Max 3 依 然 是 天 天 自 動 reboot,好 煩 惱 ,怎 麼 辦 好 呢 ?


最 後 ,特 別 是 提 醒 一 下 ,在 淘 寶 千 萬 不 要 買 那 些 沒 牌 子 的 平 板 。特 別 是 那 些 你 按 銷 量 來 排 序 ,月 銷 幾 千 甚 至 數 萬 的 沒 牌 子 平 板 ( 價 錢 當 然 也 是 特 別 便 宜 的 )。因 為 ,那 些 什 麼 超 窄 邊 、十 核 、高 清 屏 、12GB  Ram、極 速 WiFi 等 等 ,全 都 是 假 的 !那 些 就 是 假 貨 ,連 垃 圾 都 算 不 上 ,大 家 真 的 不 要 再 上 當 了 。

Posted in Computer & Network | Tagged , , , , , , , , | Leave a comment

Excel VBA 入入門

Excel 有 許 多 許 多 人 在 用 ,但 我 工 作 了 幾 十 年 ,遇 到 的 大 部 分 人 都 只 是 在 用 Excel 的 皮 毛 。甚 至 有 很 多 人 ,還 只 是 把 Excel 用 來 打 個 Table,又 或 者 用 來 計 算 下 簡 單 的 加 減 乘 除 數 。

當 然 Excel 裡 面 的 功 能 相 當 多 ,但 作 為 programmer,我 最 喜 歡 用 的 還 是 VBA。VBA 的 全 名 是 Visual Basic for Applications,是 專 門 在 Microsoft Office 環 境 裡 面 用 的 programming language。

使 用 VBA 可 以 非 常 容 易 地 manipulate 所 有 Microsoft Office 的 文 件 格 式 ,例 如 Word、Excel 和 PowerPoint 等 等 。也 可 以 用 VBA 實 現 Excel 原 本 沒 有 的 功 能 。

例 如 早 幾 天 有 個 舊 同 學 ,問 我 用 那 一 條 formula 可 以 自 動 把 sheet1 的 column A copy 去 sheet2。用 formula 我 也 想 不 到 什 麼 好 方 法 ,但 如 果 用 VBA 的 話 ,其 實 幾 行 程 式 碼 就 可 以 完 工 了 。

今 天 就 用 這 個 超 簡 單 的 VBA 做 為 例 子 ,給 大 家 簡 介 一 下 VBA 吧 。

曾 幾 何 時 ,VBA 是 電 腦 病 毒 的 溫 床 ,風 評 非 常 之 惡 劣 ,所 以 後 來 Microsoft 針 對 VBA 增 加 了 很 多 安 全 措 施 。

首 先 ,VBA 功 能 預 設 是 半 隱 藏 的 。如 果 想 要 在 ribbon ( 功 能 區 ) 啟 用 VBA 的 相 關 功 能 ,就 要 先 打 開 Excel 選 項 ( Options ),去 到 「自 訂 功 能 區 」( Customize Ribbon ),然 後 勾 選 「開 發 人 員 」( Developer )。

然 後 ,在 ribbon 上 就 會 多 了 一 頁 ,就 叫 做 「開 發 人 員 」。在 這 一 頁 ,會 有 很 多 VBA 相 關 的 功 能 。例 如 可 以 在 Excel 插 入 控 制 項 ,可 以 控 制 巨 集 ,可 以 打 開 Visual Basic 編 輯 器 等 等 。

第 二 ,Microsoft 已 經 disable 了 一 般 excel 檔 案 ( *.xlsx ) 裡 面 的 VBA。要 啟 動 VBA 功 能 ,就 要 把 檔 案 儲 存 成 *.xlsm 格 式 。

VBA 是 一 種 object-oriented 的 程 式 語 言 。簡 單 說 ,就 是 可 以 針 對 一 個 個 object 來 寫 程 式 。那 excel 裡 面 有 什 麼 object 呢 ?其 實 你 見 得 到 的 都 是 objects,例 如 一 個 workbook、一 個 worksheet、一 個 row、一 個 column、一 個 cell 等 等 等 等 ,通 通 都 是 objects。

每 一 種 objects 都 有 其 自 身 的 properties、methods、events 等 等 等 等 。例 如 每 一 個 cell 都 可 以 儲 存 一 個 值 ,那 就 是 Value property。

Range("A1").Value

用 以 上 的 程 式 碼 ,就 可 以 讀 取 cell A1 裡 面 的 值 。

Range("A1").Value = "Abc"

以 上 的 程 式 碼 ,就 是 把 字 串 「Abc」,寫 入 到 cell A1。當 然 ,並 不 是 每 一 個 object 都 有 value 的 ,例 如 worksheet、column 之 類 ,就 是 沒 有 value 的 。如 果 你 在 VBA 指 定 了 不 存 在 的 property,執 行 時 就 會 出 現 錯 誤 。

VBA 也 是 event-driven 的 程 式 語 言 。意 思 是 你 可 以 指 定 一 段 程 式 碼 ,只 在 特 定 event 時 才 執 行 。那 有 什 麼 event 呢 ?例 mouse click 就 是 event,打 字 時 每 一 個 keystroke 也 是 event,你 改 變 一 個 cell 的 value 時 也 是 一 個 event,你 save document 時 也 是 一 個 event。

Event 同 property 一 樣 ,也 是 不 同 object 會 有 自 己 不 同 的 events 的 。例 如 workbook,就 有 open、close、save 之 類 的 events。但 worksheet呢 ,就 會 有 以 上 那 些 events 了 。

回 到 今 天 的 題 目 ,如 何 自 動 把 sheet1 的 column A copy 去 sheet2 呢 ?一 般 來 說 ,如 果 sheet1 的 column A 的 內 容 沒 有 變 化 的 話 ,我 們 是 不 需 要 不 停 地 copy & paste 的 。只 有 在 column A 有 變 更 時 ,才 有 copy & paste 的 需 要 。

不 過 可 惜 column 是 沒 有 相 關 的 event 的 ,所 以 我 們 只 能 把 程 式 寫 在 sheet1 的 change 事 件 裡 面 。意 思 就 是 當 sheet1 有 任 何 變 更 時 ,我 們 的 程 式 碼 就 會 執 行 。

Sheet1 的 Change 事 件 的 寫 法

好 了 ,了 解 了 一 些 基 礎 知 識 ,我 們 就 可 以 正 式 開 始 寫 我 們 的 第 一 個 VBA 程 式 。先 打 開 Excel,開 一 個 空 白 的 workbook,然 後 把 它 save as 為 vba-copy-column.xlsm。

為 了 方 便 編 寫 程 式 碼 ,使 用 中 文 版 excel 的 朋 友 ,可 以 先 把 工 作 表 的 名 字 都 改 成 英 文 的 。在 我 的 例 子 ,我 會 把 工 作 表 的 名 字 改 為 「sheet1」和 「sheet2」。

然 後 按 一 下 Visual Basic 按 鈕 ,打 開 Visual Basic 編 輯 器 ( 也 可 以 用 keyboard shortcut:Alt – F11 )。

在 左 手 邊 的 「專 案 總 管 」,就 可 以 見 到 打 開 了 的 Excel workbooks,和 每 個 workbook 裡 面 的 worksheets。

因 為 我 們 想 把 程 式 寫 在 sheet1 的 change 事 件 裡 面 ,所 以 我 們 先 選 擇 sheet1。

然 後 在 sheet1 的 程 式 碼 視 窗 裡 ,選 擇 worksheet 和 change。這 樣 VB Editor 就 會 自 動 幫 我 們 插 入 了 一 個 叫 Worksheet_Change 的 Subroutine。不 過 ,我 們 不 一 定 要 使 用 這 個 自 動 插 入 的 功 能 ,其 實 我 們 自 己 手 動 輸 入 也 是 一 樣 的 。

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

所 有 在 這 個 Subroutine 裡 面 的 程 式 碼 ,即 是 由 Private Sub …. 到 End Sub 之 間 的 程 式 碼 ,都 只 會 在 sheet1 的 內 容 有 改 變 時 ,才 會 執 行 。

Copy & Paste 的 幾 種 寫 法

然 後 就 可 以 開 始 寫 copy & paste 了 。在 VBA 最 簡 單 最 快 捷 把 cell value 複 製 去 另 一 個 cell 的 寫 法 ,就 是 用 等 於 符 號 ( = )。

Range("B1").value = Range("A1").value

以 上 的 程 式 碼 的 意 思 ,就 是 把 A1 的 value,寫 入 去 B1。即 是 如 果 A1 的 值 是 123,那 程 式 碼 執 行 之 後 ,B1 的 value 亦 會 是 123。

Private Sub Worksheet_Change(ByVal Target As Range)

Sheets("sheet2").Range("B:B").Value = Sheets("sheet1").Range("A:A").Value

End Sub

按 照 我 們 的 命 題 ,就 要 寫 成 上 面 的 樣 子 。把 整 個 sheet1 的 column A 的 值 ,寫 入 去 sheet2 的 column B。

第 二 個 寫 法 ,就 是 用 copy method。

Private Sub Worksheet_Change(ByVal Target As Range)

Sheets("sheet1").Range("A:A").Copy Sheets("sheet2").Range("B1")

End Sub

這 個 寫 法 ,就 是 等 於 我 們 用 mouse 或 者 keyboard 去 做 copy & paste。首 先 有 個 source,然 後 copy 去 一 個 destination。就 如 同 keyboard mouse 一 樣 ,你 的 destination 不 一 定 要 和 source 的 大 小 相 等 ,Excel 會 自 動 幫 你 調 整 destination 的 大 小 。

當 然 你 也 可 以 把 destination 寫 成 Range(“B:B”),執 行 的 結 果 是 一 樣 的 ,但 感 覺 上 就 是 有 點 笨 。

Copy method 和 等 於 符 號 ,二 者 的 寫 法 ,source 和 destination 剛 好 是 前 後 相 反 的 。這 是 程 式 語 言 本 身 的 語 法 ,是 硬 性 規 定 要 這 樣 寫 的 。當 然 每 個 程 式 語 言 的 寫 法 也 隱 含 一 定 的 哲 理 ,不 過 我 覺 得 大 家 初 學 還 是 不 要 深 究 ,死 記 硬 背 習 慣 了 就 好 。

那 以 上 兩 個 寫 法 那 一 個 比 較 好 呢 ?簡 單 答 案 是 那 個 執 行 得 比 較 快 ,就 是 更 加 好 。在 一 般 絕 大 部 分 的 情 況 ,用 等 於 符 號 是 會 執 行 得 比 較 快 的 。但 如 果 用 在 copy & paste 一 整 個 column 這 種 特 殊 情 況 ,用 Copy method 反 而 會 比 較 快 。

所 以 在 這 個 VBA 入 門 例 子 ,我 是 會 用 Copy method 的 。

那 有 比 較 聰 明 的 寫 ,又 有 沒 有 比 較 笨 的 寫 呢 ?當 然 有 ,而 且 有 很 多 很 多 。Programming 其 實 就 跟 作 文 一 樣 ,可 以 有 無 限 咁 多 種 寫 法 。一 般 來 說 執 行 得 最 快 的 只 有 一 種 寫 法 ,而 其 他 咁 多 種 寫 法 ,都 是 比 較 笨 ( 慢 ) 的 寫 法 。

Private Sub Worksheet_Change(ByVal Target As Range)

For i = 1 to 1048576
  Sheets("sheet2").cells(i,1).Value = Sheets("sheet1").cells(i,1).Value
Next i

End Sub

上 面 就 是 一 種 特 別 笨 的 寫 法 ,我 們 用 了 一 個 Iteration ( For loop ),把 整 個 column 的 cells 都 loop 一 次 ,每 個 cell 都 做 一 次 assign value。為 什 麼 這 麼 做 就 笨 呢 ,很 簡 單 ,因 為 這 樣 做 會 超 級 慢 。

加 快 VBA 的 執 行 速 度

因 為 寫 程 式 的 目 的 不 是 去 拿 諾 貝 爾 文 學 獎 ,所 以 程 式 寫 得 再 優 美 ,也 比 不 上 執 行 速 度 飛 快 的 程 式 碼 。所 以 養 成 寫 執 行 速 度 快 的 寫 法 ,是 非 常 重 要 的 。

因 為 VBA 本 身 效 能 算 是 十 分 差 ,所 以 我 們 也 會 有 一 些 加 快 執 行 速 度 的 小 技 巧 。

Private Sub Worksheet_Change(ByVal Target As Range)

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

Sheets("sheet1").Range("A:A").Copy Sheets("sheet2").Range("B1")

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

最 常 用 的 就 是 關 閉 Auto Calculation 和 Screen Updating。Auto Calculation 就 是 Excel Formula 的 Auto Calculation,Screen Updating 就 是 Excel 更 新 畫 面 的 狀 態 。常 見 的 做 法 就 是 在 程 式 開 始 執 行 之 前 ,先 disable 了 以 上 兩 者 ,然 後 在 程 式 碼 的 結 尾 處 ,再 enable 以 上 兩 者 。

對 於 絕 大 部 分 的 Excel VBA,有 沒 有 用 這 個 小 技 巧 ,程 式 的 執 行 時 間 會 差 天 共 地 。

Documetation

最 後 ,別 忘 記 作 為 一 個 優 秀 的 Programmer,寫 好 Documentation 也 是 十 分 重 要 的 !VBA 的 comment 的 語 法 就 是 用 single quotation ( ‘ )。

在 VB 編 輯 器 裡 面 ,comment 就 會 用 綠 色 來 呈 現 。所 以 凡 是 綠 色 的 東 西 ,都 是 不 會 執 行 的 。

執 行 結 果

隨 便 在 sheet1 的 column A 輸 入 一 些 東 西 。

完 全 相 同 ,一 模 一 樣 的 東 西 ,就 會 自 動 出 現 在 sheet2 的 column B。

這 個 VBA 小 程 序 ,只 要 寫 一 次 ,就 會 永 遠 在 背 景 執 行 。其 實 很 多 同 類 的 重 複 性 的 工 作 ,都 是 可 以 用 VBA 來 自 動 化 的 。而 且 ,寫 VBA,其 實 也 可 以 很 簡 單 。

檔 案 下 載 :vba-copy-column.xlsm

Posted in Computer & Network | Tagged , , , , , , | Leave a comment