出現該控制項的副程式 例如上圖, 在表單的 確認 鈕上連按兩下, 就自動出現 private sub confirm_click(). 2. 或是你可以插入 (I)/ 程序 (P) 3. 寫巨集, 也會出現副程式 4. 你也可以很瀟灑的在 VBE 程式碼區一個字一個字的寫 sub. End sub.

Similar documents

投影片 1

投影片 1

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

Microsoft PowerPoint - VB14.ppt

Excel VBA Excel Visual Basic for Application

投影片 1


1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2 C3 3 STEP6 A1 STEP7 > > 1-11

Chapter 3 Camera Raw Step negative clarity +25 ] P / Step 4 0 ( 下一頁 ) Camera Raw Chapter 3 089

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

ACI pdf

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

封面-12

Microsoft Word - ACI chapter00-1ed.docx

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD

CU0594.pdf

Pro/ENGINEER 訓練教材 ( 曲面 ) 目錄 1. Creo2.0 設定工作目錄 圖形

( )... 5 ( ) ( )

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

The golden pins of the PCI card can be oxidized after months or years

健保資訊網服務系統 (VPN)- 瀏覽器設定 目 次 壹 作業目的及功能... 2 一 作業目的... 2 二 作業功能... 2 貳 瀏覽器設定說明... 3 一 Internet Explorer 8(IE 8)... 5 二 Internet Explorer 9(IE 9)... 8 三 I

投影片 1

Microsoft Word - _m30.doc


穨文件1


MVB-1001.DOC

輕鬆學 PhotoImpact X3 1 / / / 3 0 RGB 12,255,255 小常識 3 056

APA Preliminaries Text Reference 1. Cover Page 2. Title Page 3. Signature Page 4. Advisor s recommendation letter 5. Approval page 6. Copyri

書面

Microsoft PowerPoint - 07b1 Max and Sum.ppt [相容模式]

男人的大腦 女人的大腦

Microsoft PowerPoint - 07_WinProg.pptx

使用手冊

1








3. 流 程 管 理 ( 系 统 管 理 员 或 者 教 务 处 管 理 员 主 要 操 作 功 能 部 分 ) 系 统 管 理 员 发 布 的 供 学 校 登 录 人 员 查 看 校 内 公 告 信 息 ; 系 统 管 理 员 审 核 提 前 实 习 的 学 生 申 请 ; 系 统 管 理 员 审

Microsoft Word - word2007排版

AutoCAD 用戶如何使用 ArchiCAD

Microsoft Word - 财务d08z.doc

Photoshop CS3 影像創造力 基礎講堂 8 學習流程 學習重要性 學習難度 必學指令工具 實作應用範例 創造舞台燈光的漸層繪圖 延伸學習 雜訊與半透明漸層 8-1 Photoshop Photoshop 8 136

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

2 part 01 浴室 浴室收納原則 要在浴室用的東西一定要收在浴室 從內容物只剩一點的洗滌劑容器開始整理 減少相同物品的數量 多的物品只要 1~2 個就夠了 每天要用的東西別放在浴室櫃子裡

1-6 Access 2016 實力養成暨評量解題秘笈 102. 書籍與作者 Step1 按 建立 索引標籤 資料表 群組的 資料表設計 按鈕 Step2 由上而下分別建立下列欄位並設定資料類型 : 欄位名稱 : ID, 資料類型 : 自動編號 欄位名稱 : BName, 資料類型 :

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp



今天 年春季号 总 92 期

*

( ) / / / / / / /

(Microsoft Word - 8\244T\244\362\277\337\272]\244W\265L\246W.doc)

Microsoft Word - 專家本色 doc


但, 你 应 该 听 过 我 们 走 在 大 路 上 这 首 歌, 或 许 还 知 道 革 命 人 永 远 是 年 轻 那 支 歌 ; 并 且, 几 乎 可 以 肯 定, 你 在 戴 红 领 巾 的 那 阵, 必 然 唱 过 牛 儿 还 在 山 坡 吃 草, 放 牛 的 却 不 知 道 哪 儿 去

2 临 终 助 念 答 问 序 临 终 关 怀, 由 佛 门 净 宗 古 来 祖 师 大 德 提 倡 助 念 往 生, 现 今 已 渐 为 社 会 大 众 所 重 视, 在 台 湾, 台 大 长 庚 等 各 大 医 院, 也 都 设 有 助 念 室 ; 大 陆 上 许 多 道 场, 也 有 专 为

校园之星

Microsoft Word - 澎湖田調報告-宏達組9804.doc

<4D F736F F F696E74202D FA8BEA861B8EAB7BDBEE3A658BB50C0B3A5CE28B773A6CBA5AB29>

之 原 則 及 國 防 部 訂 頒 國 軍 列 管 國 有 不 動 產 提 供 非 軍 方 單 位 使 用 處 理 原 則 規 定 不 符, 仍 應 以 出 租 方 式 辦 理 惟 可 就 偏 遠 地 區 提 供 官 兵 金 融 水 電 服 務 使 用 部 分, 研 議 降 低 租 金 標 準, 報

chineseall

釋禪波羅蜜次第法門

证券代码: 证券简称:锦江股份 公告编号:【】

1700 装 卸 搬 运 7645 装 卸 搬 运 服 务 2100 建 筑 7410 工 程 服 务 11% 装 卸 搬 运 服 务, 是 指 使 用 装 卸 搬 运 工 具 或 者 人 力 畜 力 将 货 物 在 运 输 工 具 之 间 装 卸 现 场 之 间 或 者 运 输 工 具 与 装 卸

前 言 教 育 无 小 事, 它 成 就 着 学 生 的 未 来 作 为 教 师, 他 们 无 时 无 刻 不 在 关 注 着 学 生 的 成 长 学 生 的 未 来 学 生 就 像 一 朵 含 苞 待 放 的 花 朵, 需 要 老 师 们 的 细 心 呵 护, 给 学 生 需 要 的 东 西, 而

《盗墓笔记》 南派三叔/著

平 凡 足 迹 李 本 川 作 者 为 中 国 科 学 院 海 洋 研 究 所 研 究 员,1935 年 生, 山 东 荣 成 人 我 今 年 63 岁 了 大 前 年 丈 夫 和 儿 子 在 一 个 月 内 先 后 离 开 了 人 世, 女 儿 又 已 出 嫁, 现 在 是 孑 然 一 身 我 是

<CFFBB7D1D5DFD0D0CEAAD1A72E6D7073>

独立学院建设与发展


主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

09 F9 128 peer to peer, P2P file transfer protocol bittorrent 10 P2P P2P GNU/ Linux P2P CC 單機版的智慧財產權 vs. 人權戰爭 1980 DVD content

1.5招募说明书(草案)

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8

戒菸實務個案自助手冊105年Ver.2

6-2 計算機概論 COMPUTERS 6-1 Windows 7 功能簡介 Windows Windows XP Windows Vista Aero Shake Windows Aero Windows Aero Microsoft 半透明效果 Aero Peek 透視 Wi

FETnet - Acer Iconia Tab  (A500 Wi-Fi 版) 平板電腦操作指南

Microsoft Word - 学字〔2015〕16号

目 录 教 学 简 讯 快 报. 1 青 少 年 工 作 系..5 社 会 工 作 学 院...10 法 学 院.14 经 济 管 理 学 院 17 新 闻 与 传 播 系 19 公 共 管 理 系.21 中 国 语 言 文 学 系.25 外 国 语 言 文 学 系.28

目 录 第 一 章 WPS 表 格 简 介 简 单 的 介 绍 wps 表 格, 让 大 家 对 wps 表 格 有 个 初 步 认 识 第 二 章 WPS 表 格 简 单 的 编 辑 1 简 单 的 介 绍 一 下 文 字 的 录 入, 复 制, 粘 贴, 表 格 大 小 的 调 整, 第 三 章

<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

Win-GRAF-User_Manual-chinese

Microsoft Word - ACL chapter02-5ed.docx

17-72c-1

导 生 和 被 辅 导 成 员 在 辅 导 过 程 中 的 一 些 不 足 与 可 取 点, 经 过 25 分 钟 的 讨 论, 各 小 组 派 代 表 阐 述 了 各 方 观 点 和 改 进 方 法 然 后, 为 了 改 善 导 生 辅 导 方 法, 让 辅 导 变 得 更 有 效 率, 各 院

(Microsoft PowerPoint - \245\250\266\2606)

視窗程式設計

信 息 披 露 义 务 人 声 明 1 信 息 披 露 义 务 人 依 据 中 华 人 民 共 和 国 公 司 法 中 华 人 民 共 和 国 证 券 法 上 市 公 司 收 购 管 理 办 法 公 开 发 行 证 券 公 司 信 息 披 露 内 容 与 格 式 准 则 第 15 号 权 益 变 动

, (, ),,,,,, : : ( ), :,,,,,,, ( ), ( ),,,,,, ( ) ( ),, :!,,,,,,,,,,,,,,,,,,,,,,, [1 ] :,,,, :, ;, ( ),, :,,,,,,,,,,, 66

理性真的普遍嗎 注意力的爭奪戰 科學發展 2012 年 12 月,480 期 13

* 2

老人憂鬱症的認識與老人自殺問題

ThreeDtunnel.doc

Transcription:

Excel 的高級運用 用 Excel 自己寫進銷存軟體公道伯 2011/1/9 第二章 副程式 subroutine 1-1 VBE 的程式程式架構 VBE 的程式架構, 就是以物件 + 表單 + 巨集組合而成 而巨集巨集則又由副程式副程式組合而成 每個物件物件可以有他的副程式, 每個表單表單也可以有其副程式, 表單底下每個控制項控制項也可以有其副程式副程式 只要瞭解副程式, 寫程式就暢行無阻 副程式 Subroutine 什麼是副程式? 副程式由 Sub.. End Sub 組成 此處 Confirm_Click() 是此副程式副程式的程式名稱程式名稱 程式名稱也可以是中文 () 則是程式規定要寫的 譬如說 : Private Sub 列印客戶資料 (). End Sub 就是一個 處理列印客戶資料處理列印客戶資料 這樣一個動作的程式 ( 當然這個程式要我們自己寫 ) 區域副程式和公共副程式 Private Sub & Public Sub 第一個字 Private 是什麼意思呢? 代表著這個副程式副程式是 區域性的區域性的, 也就是只有只有在這個物件 ( 工作表或張表單 ) 中有效, 到不同的表單就叫不到這個副程式了 相對的就是 Public, 公共公共 副程式, 理論上好像就是各張表單都可來用這一個副程式, 但沒那麼簡單 建議大家不要來玩這一塊, 乖乖的把所有的副程式都當成把所有的副程式都當成 區域性的, 這樣就不會痛苦 反正程式內建的都是 private sub, 你只要不要刻意的去選或改成 public sub 就可以了 副程式 Sub 如何產生 大概有四種方法可以產生副程式 : 1. 你在表單或表單表單的控制項控制項上, 連續按兩下滑鼠左鍵, 就會自動進入 VBE 畫面而且 2-1

出現該控制項的副程式 例如上圖, 在表單的 確認 鈕上連按兩下, 就自動出現 private sub confirm_click(). 2. 或是你可以插入 (I)/ 程序 (P) 3. 寫巨集, 也會出現副程式 4. 你也可以很瀟灑的在 VBE 程式碼區一個字一個字的寫 sub. End sub. 但幾乎都不需要這樣做 程序 程序包含三種東西, 1. 副程式 sub, 就是我們現在教的 2. 函數 function, 比較複雜的程式有時可以用到 3. property, 幾乎沒有人在用 至於 Publc 或 Private, 則不用理他, 反正全部當成是全部當成是 區域性區域性 的, 日子也很好過 ( 也就是說, 你如自告奮勇要去玩 public, 日子就不會太好過 ) 程式的概念 類似進銷存進銷存的軟體, 基本上就是要 1. 寫入資料寫入資料 到資料檔中. 2. 找資料 3. 讀資料 4. 簡單的判斷 5. 簡單的加減乘除 我們第一個程式, 客戶資料建檔客戶資料建檔, 就是 寫資料寫資料 的工作 也就是使用者輸入客戶名稱及電話後, 按 確認 鍵之後, 我們要電腦自動自動將這兩個資料寫到寫到 客戶資料 工作表的 最後一列最後一列 的 客戶名稱 及 電話 欄內 巨集 這時候就要來先學巨集巨集 什麼是巨集? 如何錄製巨集? 2-2

錄製巨集就是電腦會像錄音機 錄影機一樣的把你的動作記錄起來, 然後你只要將之呼叫出來就可執行 更精彩的是, 你一面操作, 它一面記錄的過程就在寫程式, 你動作結束, 他程式程式也寫好了 譬如說, 我們要先用滑鼠選擇選擇 客戶資料客戶資料 這個工作表, 再選擇選擇最左上角的儲存格 A1 如何開始? 工具 (T) 巨集 (M) 錄製新巨集 (R) 選入之後, 出現 : 選一個字母填入快速鍵快速鍵內, 譬如說我這裡選 a, 按 確定確定, 出現 停止錄製停止錄製 的按鈕, 就可開始錄製巨集開始錄製巨集 移動滑鼠選 客戶資料 工作表, 再點入 A1 儲存格內, 點選 停止錄製停止錄製, 程式就寫好了 從此你隨時只要按我們剛才指定的快速鍵 Ctrl+a, 就會執行剛剛我們做的動作, 把滑鼠移到 客戶資料 工作表的 A1 格內 我們再來看一下, 程式寫在哪裡? 按 Alt+F11, 回到 VBE, 2-3

就可發現 專案管理區專案管理區 出現了 模組模組, 點入之後出現 module1, 再連按兩下右邊就出現程式碼, 就是我們剛剛寫的程式剛剛寫的程式 我們可以發現, 程式的規則就是 物件. 動作 我們先對 Sheets( 客戶資料 ) 這個物件物件做 Select( 點選 ) 這個動作, 然後對 A1 這個物件也試做 select 的動作動作 程式其實也很簡單 更棒的是, 即使是很簡單也不用自己寫, 你只要做一遍, 電腦幫你寫 我們接著把這兩列程式選取複製, 再把我們的表單打開 還記得如何打開程式碼程式碼嗎? 點選 表單表單 出現 customer 再按 F7 就出現程式碼程式碼 2-4

把程式貼上貼上到 Confirm_Click() 內 尋找最後一列, Ctrl+ 及 Ctril + 接著, 我們來做 尋找最後一列尋找最後一列 的動作 我們要先學 ctrl+ 及 ctrl+ 這兩個快捷鍵快捷鍵 按 ctrl+ 滑鼠會自動移到 有資料的最下面一列有資料的最下面一列 所以只要資料超過一列, 用巨集錄製 ctrl+ 這個動作, 就會找到最後一列 但是問題來了, 一開始我們只有第一列欄位名稱列, 底下還沒有資料,ctrl+ 一下就跳到 A65536, 也就是最底下的一列, 那就麻煩了 沒關係換個方向思考, 我們就乾脆就直接先到 A65536, 再 ctrl+ 就到有資料的最下面一列 我們再模仿剛教過的方法做一次巨集, 做 到 A65536, 再 ctrl+ 這兩個動作 但你一定發現你不會做 到 A65536 這個動作, 沒關係有一個變通的辦法, 你就做 到 A25, 再 ctrl+, 然後到模組 module2 中找到程式碼 : Range("A25").Select Selection.End(xlUp).Select 進去把 A25 改成 A65536, 就可以了 同樣的把這兩列程式碼複製, 再到 confirm_click 程式中貼上 到客戶資料檔找到最後一列 的程式程式就完成了 絕對位址與相對位址 2-5

這是一個簡單而重要的概念簡單而重要的概念 到 A25 去,A25 就是絕對位址絕對位址 往下兩列, 往右三欄, 就是相對位址相對位址 在 VBE 中, 相對位址就用到一個字 offset, 歸零歸零 的意思 滑鼠現在的位置為 ActiveCell 我們之前已經找到最後一列了, 那最後一列的下一列的儲存格最後一列的下一列的儲存格就是 ActiveCell.offset(0,0).Range( A2 ), 把目前的儲存格當目前的儲存格當原點, 自己是 Range( A1 ) 再往右一格往右一格就是 ActiveCell.offset(0,0).Range( B1 ) 當然, 我們也可以寫成 ActiveCell.offset(1,0).Range( A1 ) 就是最後一列的下一列的最左邊一格最後一列的下一列的最左邊一格 兩次兩次 歸零歸零 的動作, 第一次把現在的儲存格 offset 成原點, 再以這個原點取 (1,0) 之後再歸零成新原點, 再去數 A1. ActiveCell 或 ActiveCell.offset(0,0).Range( A1 ) ActiveCell.offset(0,0).Range( A2 ) 或 ActiveCell.offset(1,0).Range( A1 ) ActiveCell.offset(1,0).Range( B1 ) 控制項的值 接著我們要把輸入的數值或文字帶入把輸入的數值或文字帶入 還記得第一格我們定義定義的變數名稱變數名稱為 cust, 所以它的數值或文字就是 cust.text, 或是 cust.value 第二格 phone 的數值或文字為 phone.text 所以, 我們要做的就是 : ActiveCell.offset(1,0).Range( A1 )=cust.text ActiveCell.offset(1,0).Range( B1 )=phone.text 把這兩列程式碼寫進程式中. 重新輸入 2-6

重新輸入重新輸入 這個鈕要做什麼事? 就是使用者輸入一筆資料之後要再輸入下筆, 如果沒有這個按鈕就要 離開, 再執行程式進來, 蠻麻煩的 所以要安排這個按鈕 要做些什麼動作? 就是去 把表單清除, 也就是把 cust.text= phone.text= 我們將之寫入程式中 再到表單 離開離開 的地方, 按 F7, 出現 exit1_click(), 寫入 end, 就完成了 執行程式 按 F5 就可以執行程式 會在工作表中出現我們的表單, 填入資料後, 按確認, 就發現 OK 了, 程式已經把我們輸入的資料寫到我們指定的地方 這時我們發現, 表單中輸入的字型字型為 9 號字太小了, 剛剛設計時沒有改到 再回到表單中, 將 cust 及 phone 中的屬性 /Font, 改成 14 號字, 畫面就一致了 從工作表中執行, 工作表中的控制項剛剛教的 F5 是在 VBE 的畫面中時, 才這樣執行 基本上我們不要使用者進到 VBE 中 一方面這是你的智慧財產, 另一方面如果被別人隨意可進入, 不小心更動了什麼, 你辛辛苦苦寫的程式不就就毀了 我們必須要再建立一個通道, 讓使用者可以從工作表中執行從工作表中執行 就是我們最先規劃 2-7

的 選單選單 工作表工作表 我們進入 選單選單 工作表工作表 先看看有沒有 VBE 的工具列? 如果沒有, 則把滑鼠移到最右上角灰色區域, 按滑鼠右鍵, 就會出現所有的工具列所有的工具列 點選 Visual Basic, 就會出現 Visual Basic 的工具列工具列 再點選, 就出現 控制項控制項 的 工具箱工具箱 接著和表單的作法一樣, 我們去點選點選 命令鈕命令鈕, 找個地方畫一個按鈕, 按滑鼠右鍵, 點選 CommandButton 物件 (O) 編輯 (E), 就可進入編輯, 改成 客戶資料建檔 如果發現字型字型太小, 一樣 滑鼠右鍵 屬性 (P) Font 改成你要的字體 字型大小 同樣方法, 再建立一個 客戶資料查詢客戶資料查詢 的命令鈕命令鈕 我習慣是用複製 貼上 再進入修改文字, 這樣比較一致 接著再點進 客戶資料建檔客戶資料建檔 鈕, 右鍵 檢視程式碼 (V) 就出現 VBE 的程式碼, 我們希望使用者點此鈕時, 要打開 customer 這張表單, 程式稱之為 show 這張表單 我們到 Private Sub CommandButton1_Click() 底下寫入 customer.show. 在你打字到 s 的時候, 底下就出現 excel 內建的一些動作讓你選, 你也可以就進去選, 也可以不理他繼續打字 等你打到 sh, 就出現 show 了, 同樣的你要選它, 或不理它繼續打字完成它都可以, 反正它很貼心 不管你用不用他, 但他有一個額外的重要的功用, 就是 如果它沒有出現, 則表示你的程式有錯誤, 或你的打字有錯誤打字有錯誤, 你需要回頭檢查一下 還有你寫小寫的 show, 程式一定會幫你改成 Show, 如果電腦字首沒有自動幫你改成 2-8

大寫, 也表示 有錯誤有錯誤! 我們再回去, 把另一個按鈕的程式按鈕的程式也寫好 customersearch.show, 這張表單表單我們還沒有寫, 等一下就來寫 從工作表的命令鈕開始執行 我們回到 選單選單 工作表, 點選 控制項工具箱控制項工具箱 中的, 結束設計模式, 就可以開始執行 點入 客戶資料客戶資料建檔建檔, 就出現和我們剛才在 VBE 按 F5 的結果一樣 到此 客戶資料建檔客戶資料建檔 的程式的程式就算完成 我們練習輸入一些廠商的資料 查詢程式 我們先做一個很陽春的查詢程式, 就是使用者輸入 客戶名稱, 電腦就要自動去資料中找到該客戶的資料, 並顯示出它的電話號碼 回到 VBE, 插入 (I) 自訂表單 (U) 出現一張新的表單 userform1. 進入屬性區 name 改成 customersearch, 重新設計表單. 但我選擇去複製前面一張表單來改複製前面一張表單來改 點 customer 表單, 出現表單後,ctrl-A 全選 複製, 再點出 customersearch 的表單 貼上 再逐一進入修改 這樣做比較方便, 而且格式一致 名稱 再教一個很奇怪的東西,excel 把它叫做 名稱名稱 name, 其實就是把一個或很多個儲存格設定為一個 變數變數 譬如說 : 我們可以把 客戶資料 工作表的 A1 儲存格設為 客戶資料頭 的 變數 插入 (I) 名稱 (N) 定義 (D) 改成 客戶資料頭客戶資料頭 確定, 或是更簡單的點入到左上角的 位址顯示區位址顯示區, 把 A1 改成 客戶資料頭客戶資料頭, 更直截了當 2-9

之後, 我們寫程式時, 也可以寫成 到 客戶資料頭客戶資料頭 我們也可以把整欄的儲存格都設為一個 名稱名稱 譬如, 我們將 A 欄, 也就是 公司名稱 這欄設為設為 客戶客戶 這個 名稱名稱 點選 A 欄, 到上方視窗, 直接改成 客戶, 就完成了 名稱名稱 在 excel 程式中經常被用到 下拉式選項我們要用到一個新的東西叫 下拉式選項下拉式選項, 英文為 ComboBox. 這是非常可愛而好用的東西, 讓我們可以不用不用重複輸入重複輸入同樣的東西 我們去將原來 cust 這個視窗刪去, 去控制項工具箱選 到表單表單去畫出一個 下拉式選項下拉式選項 視窗 我們到 屬性區屬性區 去改名為 cust 記得去屬性區 /Font 把字型字型改為 14 號字 之前我們介紹過, 基本上各個表單都是 區域程式區域程式 及 區域變數區域變數 所以 cust 在前一個表單已經用過也沒關係, 還是可以用, 不會互相干擾 既然是 下拉式選下拉式選項, 那這些選項在哪裡呢? 我們是不是要再一一輸入呢? 請到 屬性區屬性區, 找到 rowsource, 填入我們剛剛設好的 客戶客戶 這個 名稱名稱, 就完成了下拉式選項的來源設定 我們按 F5 執行看看 OK, 已經成功出現我們要的東西, 不必再一一輸入 說明 : 從字面看 rowsource 應該是 列來源列來源, 但其實和 列 沒關係, 就是 來源 因為沒有 columnsource 還要把 客戶資料建檔客戶資料建檔 改為 客戶資料查詢客戶資料查詢 2-10

接著按 F7, 進入程式碼區程式碼區 出現 Private Sub cust_change(), 這是 當 cust 被改變時 我們要電腦電腦做的動作做的動作 我們是要 從 cust 選擇好, 離開時就, 也就是 exit 我們到右邊下拉式視窗去選擇 Exit, 就出現 Private Sub cust_exit(byval Cancel As MSForms.ReturnBoolean) 後面括弧內的 ByVal Cancel As MSForms.ReturnBoolean 先不要去管他 我們就是要在使用者選擇 瑞軒科技股份有限公司 後, 1. 要電腦到 客戶資料 工作表去找到 瑞軒科技股份有限公司, 2. 往右一欄, 把 瑞軒 的 電話 讀進來, 顯示到 phone. 找資料我們先要 到 客戶資料客戶資料 的 A1 格去格去 大家應該還記得這個動作我們已經做過, 我們可以去 customer 表單的程式碼去找出來, sheets( 客戶資料 ).select Range( A1 ).Select 複製 貼上, 就 OK 再來就要 找 我們知道 Office 有一個指令 Ctrl+F 就是 尋找尋找, 但我們不知道程式如何寫? 這時候我們又要用到巨集巨集來幫我們寫程式幫我們寫程式了 工具 巨集 錄製巨集 確定 開始錄製後, Ctrl+F, 填入 瑞軒 找下一筆 關閉, 停止錄製停止錄製 再去專案總管 模組 marco2 找到程式碼程式碼 Selection.Find(What:=" 瑞軒 ", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlpart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate 好長的程式 但真正有用的只有前段和後段, 如果你夠熟, 你可以把一些沒用的刪去, 剩下 2-11

Selection.Find(What:=" 瑞軒 ").Activate 就夠了, 這樣你下次在讀程式時可以比較一目了然 看一下上面的圖, 刪去的就是 順序順序 搜尋搜尋次序次序 大小寫須相符大小寫須相符. 等等 但你也可以不用多此一舉, 反正 複製 / 貼上, 複製長一點也沒關係 亂刪如果刪得不得要領, 反而有問題 我們將之整個複製, 回到 VBE 程式區,Alt+F11/ 表單 /customersearch/f7, 到 cust_exit 剛剛的程式最後一列, 貼上 然後, 我們把 瑞軒 改成變數變數 那個地方的控制項的變數名稱變數名稱是 cust.text, 所以就改成 Selection.Find(What:= cust.text).activate 接下來, 找到了我們要找的 公司 之後, 就是要電腦從該儲存格從該儲存格往右一格, 把那一格的資料顯示到表單的 phone.text 的位置 往右一格往右一格的程式程式之前教過 : ActiveCell.Offset(0,0).Range( B1 ).Text. 然後, 再去 離開離開, 也就是 exit.click() 的地方, 以及 重新輸入, 也就是 reentry_click() 的地方, 和前一個程式寫得一模一樣就完成了 ( 去複製, 回來貼上就可以了 ) 程式寫完了 按 F5 執行看看 也可以 Alt-Q 回到工作表 / 選單, 按鈕執行 TabIndex 設定游標移動的順序 屬性區還有一個 TabIndex, 就是排列游標跳動的次序游標跳動的次序 通常我們在設計表單時都會很亂, 也都會改很多次, 電腦是依該控制項出現的次序來安排游標跳動的次序, 也應該不是我們所要的 我們執行時會發現表單一出現, 游標就在 電話 視窗內, 而不是在 客戶名稱 視窗內, 這樣有點不太對勁, 就要回到 VBE/ 屬性 /TabIndex 處改成 1. 就大功告成了 拉拉雜雜把第一組程式教完了, 大家已經可以開始寫程式可以開始寫程式了 再下來要領都是一樣的 再學下去只有使你的功力更強, 寫出來的程式更簡潔好用, 更快 更有效率 但基本上學到這裡已經夠了, 可以上場了 功課 功課一 : 就是請各位把 客戶資料檔客戶資料檔 寫完整寫完整 2-12

一個客戶資料檔不是只有 公司名稱公司名稱 及 電話電話, 應該還有一大堆欄位, 如傳真傳真 地址 聯絡人聯絡人 統一編號統一編號等等, 甚至有些人還會加電話 2 負責人 聯絡人 2 交易條件等, 要領完全一樣, 請練習把它完成 功課二 : 就是把 客戶資料查詢客戶資料查詢 也寫完整 2-13