Java網路程式教材研發

Similar documents
Excel VBA Excel Visual Basic for Application

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

(Microsoft Word - wes _\246p\246\363\250\317\245\316LED\277O\305\343\245\334\252\254\272A.doc)

Microsoft PowerPoint - VB14.ppt

CHAPTER VC#

投影片 1

<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

<4D F736F F D DA5BFA6A1C476C1C92DBEC7ACECB8D5A8F728B57BB35D292E646F63>

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

untitled

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>

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

四川省普通高等学校

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


Microsoft Word - ACI chapter00-1ed.docx

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

ACI pdf

(Microsoft Word - wes _\246p\246\363\250\317\245\316watchdog\250\276\244\356\265{\246\241\267\355\276\367.doc)

Microsoft Word - VBA講義手冊.docx

p-2

Microsoft Word - ACG chapter00c-3ed.docx

Visual Basic D 3D

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

Microsoft Word - 小心翼翼的二十一點N.doc

國立北斗家商 107 學年度第 2 學期第二次期中考科目 : 計算機應用 計算機概論 IV 班級 : 商二 1 2 貿二 資二 綜二 1 作答方式 : 答案卡 選擇題共 33 題, 除第 1 題 4 分, 其餘每題 3 分, 注意作答時間 1. ( ) 使用 Visual Basic 程式語言 (

投影片 1

Microsoft Word - ACL chapter02-5ed.docx

Microsoft PowerPoint - C_Structure.ppt

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

Microsoft PowerPoint - VB3

Microsoft Word - _m30.doc

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

Microsoft PowerPoint - OPVB1基本VB.ppt

投影片 1

Microsoft PowerPoint - Chapter3


27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

ACCESS檔案格式:工具/選項/進階/預設檔案格式

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

書面

AutoCAD 用戶如何使用 ArchiCAD

Microsoft PowerPoint - VB5

投影片 1

( )... 5 ( ) ( )

iziggi

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

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

Microsoft Word - ch doc

4

If Close[Length]!= 0 Then B Close[Length] 是 Length 日前的 Close 不是 0 的話則執行 B % Number 以 Divisor 來求取除法並傳回剩下的部份和 Divisor 具備相同的符 號 格式 :Number % Divisor Numb

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

ThreeDtunnel.doc

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

Outlook 2007 設定說明 Offic 企業郵件 / 虛擬主機郵件 / Office 365

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

2010年3月计算机等级考试四级网络工程师笔试

SyncMail AJAX Manual

Visual C# 2005程式設計

Microsoft PowerPoint - Chapter4

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

基本數學核心能力測驗_行為觀察記錄紙_G2版本

Microsoft Word C-A卷.docx

攜手拼出圓滿的幸福 2

Outlook 2010 設定說明 Offic 企業郵件 / 虛擬主機郵件 / Office 365

ActiveX Control

* 40 文Preface 序* VBA 7 12 Excel Excel * 產業沒有景氣的問題, 只有競爭力的問題 * 今天不努力工作, 明天就得努力找工作 * 從業人員也沒有裁員 減薪的問題, 只有工作能力的問題 林文恭 2012/02/04 iii

Microsoft PowerPoint - Class2.pptx


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

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆


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

投影片 1

前言 人類的歷史, 因 一個簡單的思維 而改變! 1776 Thomas Paine COMMON SENSE

01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Fl

使用手冊

高雄市光華國民中學九十二學年度第一學期一年級

縣 94 學年度 上 學期 區 國民中學 Q 年級 R 領域教學計畫表 設計者:


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

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

Chapter 16 集合

Excel VBA 初探 投稿類別 : 資訊類 篇名 : Excel VBA 初探 作者 : 葉明捷 高雄市立高雄高級工業職業學校 資訊三乙林咏諒 高雄市立高雄高級工業職業學校 資訊三乙羅賢擎 高雄市立高雄高級工業職業學校 資訊三乙 指導老師 : 莊利吉老師

* 2

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python Facebook put_wall_post(message,attachment [,profile_id]) put_wall_post(message,attachment [,profile_id]) message message attachment profi

前言

IT Essentials 5

Transcription:

壹 課程說明 單元名稱 Excel VBA 程式設計 本專題在學生 Visual Basic 的學習基礎上增加 Microsoft Office Excel( 以下簡稱 Excel) 應用程式中 物件 的觀念, 希望學生學習不同的 Visual Basic 程式應單元摘要用, 並做出一個簡易的應用程式 為了引起學生興趣, 本專題實做了氣泡排序法以及簡單的遊戲 設計者邱柏翰教師 ( 國立羅東高級中學 ) 1. 能夠瞭解 Visual Basic 程式語言的語法學習目標 2. 能夠瞭解 Excel VBA 的物件操作方式 3. 能實際設計出小型的 VBA 語言專題作品課綱範圍資訊學科與應用專題 ( 選修課程 ) 教學節數 先備知識 評量方法 1. 建置專題所需的環境 (1 節課 ) 2. 複習 Visual Basic 語法 (3 節課 ) 3. 物件 屬性 方法 事件 (1 節課 ) 4. 認識 Excel VBA 常用的物件操作 (2 節課 ) 5. 使用 Excel VBA 將排序的過程視覺化呈現 (2 節課 ) 6. 使用 Excel VBA 設計井字遊戲 (2 節課 ) 7. 使用 Excel VBA 設計生命遊戲 (1 節課 ) 1. 學習過 Excel, 熟悉軟體操作 2. 學習過程式語言 (Visual Basic 尤佳 ), 瞭解程式語言基本語法與原理 1. 口頭問答及課堂觀察 2. 上機實做 3. 專題成果展示 4. 隨堂作業 分享方式 參考資源 1. 立山秀利 (2012) 世界第一立即有效的 Excel VBA 台北市: 旗標 2. 山本櫻子 (2010) 辦公室提昇效率必備 Excel VBA 技法 256 招 台北市 : 旗標 3. 伍雲輝等 (2008) Excel VBA 辦供應用開發詳解 台北市 : 文魁資訊 4. ANK Co., Ltd 著 ; 博碩文化編譯 (2006) 新 VBA 學習繪本 台北縣 : 博碩文化 5. 資訊學科中心出版之 98 教學資源小組研發教材手冊 教學活動設計參考範例 -VB 語言 ( 林明璋 毛全良 劉嘉雄教師 ) 1

參考資源 1. 由於 Microsoft Office 軟體版本各校不一, 本範例採用的語法盡量以 Excel 2003 2007 2010 都能夠執行的為主 畫面截圖以 Excel 2007 為主 2. Excel 物件模型 事件內容眾多, 本教材並未全部提及, 可留作教師自行補充 3. 軟體開發環境請教師先行準備

貳 教學活動計畫一 建置專題所需的環境 (1 節課 ) 教學活動名稱 : 1. 引起動機 (10 分 ) 2.Excel VBA 工作原理 運作的流程 (15 分 ) 3. 本專題所使用的程式語言與開發工具 (15 分 ) 4. 上機實做 (10 分 ) 教學活動說明 : 1.1 引起動機 時間 :50 分鐘 1.1.1 序言本專題所學習的 VBA 程式語言, 對於已經學過 VB 的同學應該有學習遷移的效果, 不至於感到太陌生 而 Excel VBA 開發環境 (Visual Basic Editor) 於 Office 軟體安裝時一同被安裝, 對於環境準備時算是滿方便的 Excel VBA 可以將操作自動化, 初學時學生可以發現透過錄製巨集的功能, 將剛剛做過的操作重複播放執行, 或是略加修改參數做成不同的功能, 也許學生不會對程式碼感到太過排斥 由於 Excel VBA 除了可以用工作表呈現程式執行結果, 常見的元件, 如按鈕 下拉式選單都可以在 Excel VBA 中實現, 因此學生會覺得很像是寫出一個可以實用的軟體 建議授課教師可以展示一些 Excel VBA 的程式專題成果, 引起學生學習動機 1.1.2 專題展示引起動機用 Excel VBA 設計的 氣泡排序法 動畫用 Excel VBA 設計的 井字遊戲 用 Excel VBA 設計的 生命遊戲 用 Excel VBA 設計的 俄羅斯方塊 ( 未列入教學 ) 用 Excel VBA 設計的 貪食蛇 ( 未列入教學 ) 1.2 Excel VBA 工作原理 運作的流程 1.2.1 VBA 介紹巨集 : 先記錄使用者的操作, 後續再自動執行操作過程的功能 巨集並不僅止於單一的操作, 而是記錄或執行一連串的操作過程, 同時也是一種能夠代替使用者手動操作, 自動執行命令的功能 微軟 Office 軟體中, 巨集的指令使用 Basic 語言 ( 語法 ) 來表示, 所以稱為 Visual Basic for Application(VBA), 也就是本專題所學習的程式語言, 而非純粹的 Visual Basic VBA 可以說是目前非常受歡迎的通用程式語言 Visual Basic( 簡稱 VB) 的一種 方言

Microsoft 的設想是在一些他出產的應用軟體上, 附加專門針對這應用軟體的一個程式語言, 以擴張此軟體的功能, 尤其是簡化頻繁重複的工作 所以說,VBA 是使巨集語言發展更高功能的東西 VBA 的角色定位如下圖所示 : VBA 程式 命令 Office 產品 Windows VB 程式 命令 本專題所學習的 VBA 程式, 以 VBA 操控 Office 軟體 ( 例如 Excel) 達到程式的目的, 程式碼和 Excel 文件儲存在同一個檔案當中, 並且不能夠獨立編譯成執行檔, 若他人打開包含巨集的 Excel 檔案也需要經過安全性設定才能夠執行 1.3 本專題所使用的程式語言與開發工具 1.3.1 環境準備, 讓工能區顯示相關按鈕 按一下 Excel 2007 最左上的按鈕 ( 打勾 ) Excel 選項 -- 在功能區顯示開發人員索引標籤

1.3.2 錄製巨集, 見識第一個 VBA 程式在 A1 儲存格裡隨意輸入一段文字之後按下 Enter 鍵 再次選取儲存格 A1 此時直接點選左下角的錄製巨集按鈕

接著就會開啟錄製巨集交談視窗 巨集名稱預設值是 Macro1 請直接按下確定按鈕即可 如此一來就開始錄製巨集 將 A1 儲存格的文字設定為紅色粗體字, 然後停止巨集錄製 執行剛剛記錄的巨集請在 C5 儲存格輸入一段文字之後, 按下 Enter 鍵, 再用滑鼠點選儲存格 C5

接著切換至檢視標籤頁, 點選巨集按鈕 接著將開啟巨集交談窗 從巨集清單裡點選剛剛記錄的巨集 Macro1, 再點選執行按鈕 這個操作請師生共同注意 :A1 儲存格在呈現點選擇狀態時, 才能開始錄製巨集 C5 儲存格在呈現選擇狀態時, 才能套用巨集

並請注意 : 如上圖, 假設 A1 在儲存格正在輸入的時候, 邊框會比較細, 此時選單 工具列或是錄製巨集的按鈕都暫時失效, 請師生注意 A1 儲存格輸入完成後, 按下 Enter( 此時會移動到下方儲存格 A2, 或是滑鼠按一下其他儲存格 ) 再點回去 A1, 此時儲存格的狀態呈現選取狀態, 邊框比較粗, 此時才可以使用選單 工具列等按鈕來工作 1.3.3 剛剛錄製的巨集切換至檢視標籤頁, 點選巨集按鈕接著將開啟巨集交談窗 從巨集清單裡點選剛剛記錄的巨集 Macro1, 再點選編輯按鈕 這是第一次見到 VBE 環境, 剛剛錄製的巨集程式碼便是展現在右方視窗當中, 本段程式碼功能如下 : 正被選擇到的儲存格字型設為粗體正被選擇到的儲存格字體顏色改為紅色 至於詳細程式碼的設計, 待下一章節詳述

1.4 上機實做 1.4.1 請學生錄製一個巨集, 並且執行請學生錄製一個 可以把儲存格的文字設定為 20 點標楷體 的巨集, 並且執行之

貳 教學活動計畫二 複習 Visual Basic 語法 (3 節課 ) 教學活動名稱 : 1. 基本的程式 (15 分 ) 2. 變數 資料型態 函數設計 (20 分 ) 3. 上機實做 (15 分 ) 4. 運算子 ( 複習 )( 20 分 ) 5. 流程敘述 ( 複習 )(50) 6. 上機實做 (30 分 ) 2.1 基本的程式 時間 :150 分鐘 2.1.1VBE 環境如果要發揮 VBA 的功能, 光靠錄製巨集是不夠的, 必須錄製之後加以修改, 或是開發自己所需的功能, 所以接下來的教學以自行開發 VBA 為主, 同學必須要切換到 VBE 編輯器的環境 呼叫 VBE 編輯器切換至開發人員標籤頁, 點選 Visual Basic 按鈕就能夠叫出 VBE 編輯器 專案總管 屬性視窗 Visual Basic Editor 仔細觀察, 如果剛剛有錄製巨集的話, 此時的專案視窗會有一個 模組 ( 資料夾的圖示 ), 其下有一個 Module1( 錄製巨集時, 您替巨集取的名字 )

如果剛剛沒有錄製巨集的話, 此時的專案就沒有 模組 ( 資料夾的圖示 ) 2.1.2 環境準備建立自己的 Module 若您之前已經錄製過巨集, 或是開啟已經有巨集的檔案, 此時的專案總管會有一個模組資料夾, 建議您移除之後, 再做一個新的模組出來 若您要開始寫程式, 發現有一個模組的話, 建議您刪掉, 做一個新的

在 Module1 身上按滑鼠右鍵 移除 Module1 主選單 插入 模組 2.1.3 第一個程式建立自己的模組之後, 在右手邊會出現一個空白的程式編輯區

這時候請寫出如下的程式碼, 三行都必須撰寫 Sub test() MsgBox " 第一個 VBA 程式 " End Sub 這三行程式碼解釋如下 : Sub test(), 建立一個名為 test 的副程式 MsgBox " 第一個 VBA 程式 ", 用內建的對話盒視窗顯示一句話 End Sub, 副函式結束 2.1.4 執行程式 按下工具列的執行按鈕, 本程式執行之後會產生一個對話窗 2.1.5 存檔在 Excel 2007 的規定中, 帶有巨集的 Excel 檔, 並不能以普通的活頁簿 xlsx 檔儲存, 會出現如下對話窗 : 此時存檔請用下拉式選單, 選擇 Excel 啟用巨集的活頁簿, 而存檔的副檔名將會改成 *.xlsm

2.1.6 開啟有巨集的活頁簿若滑鼠直接 double-click *.xlsm 檔案, 雖然 Excel 2007 依舊會把檔案開啟, 但是將不會執行巨集程式, 並且在標籤頁下方會出現安全性警告 若不注意觀察也許會忽略掉 請按 選項 按鈕, 將出現 安全性警告 巨集 的對話窗, 請選擇 啟用這個內容, 然後按 確定 關閉這個視窗, 這樣一來, 就可以正常的編輯 執行您的巨集程式了 2.2 變數 資料型態 函數設計 2.2.1Visual Basic 語言的基礎關於 Visual Basic 語法, 請各位老師參考坊間 Visual Basic 相關書籍有更詳細的解說, 或是參考資訊學科中心出版之 98 教學資源小組研發教材手冊 教學活動設計參考範例 -VB 語言 ( 林明璋 毛全良 劉嘉雄教師 ), 本節只做重點摘錄 強制變數宣告 Option Explicit 建議變數宣告, 其好處例如 : 避免在程式中誤用重複的變數名稱而不自知, 或是變數名稱輸入錯誤, 而難以找到錯誤發生的原因 可請教師事情況講解 變數 Dim 變數名稱 [AS 資料型別 ] 常見的資料型例如資料型別 位元組 整數 長整數 單精度浮點數 倍精度浮點數 布林值 資料型別名稱 Byte Integer Long Single Double Boolean

字串 日期 String Date 陣列定義一維陣列 Dim 陣列名稱 ( 上界 ) As 資料類型陣列索引號碼從 0 到上界 定義二維陣列 Dim 陣列名稱 ( 第 1 維上界, 第 2 維上界 ) As 資料類型 定義 Sub 程序 [Private Public Friend Static] Sub 程序名稱 [( 參數列表 )] ( 程式碼 ) End Sub 呼叫 Sub 程序 Call 程序名稱 ( 程序參數列表 ) 可以將 Sub 程序作為一個巨集來呼叫 ( 畫一個按鈕連到這個程序 ) 定義函數 [Private Public Friend Static] Function 函數名稱 [( 參數列表 )] [As 返回類型 ] ( 程式碼 ) End Function 調用函數 1. 在程式碼中呼叫您寫的函數 Call My_Function 若是有參數, 如下 Call My_Function(2, 6) 2. 在工作表當中調用函數您可以在 VBE 的環境當中設計一個函數, 然後在前台工作表的地方呼叫他, 方式如下 : 在 VBE 開發環境之中, 假設您撰寫一個輸入底 高, 求三角形面積的公式 Function My_Function(a As Integer, b As Integer) My_Function = (a * b) / 2 End Function 之後便可以在工作表儲存格當中使用這個函數, 就像內建的 SUM AVERAGE 一樣, 請見下圖

3. 在 VBA 程式碼中, 指定儲存格的公式 Cells(1, 4).Formula = "=SUM(A1:A3)" 4. 在 VBA 程式碼中, 使用工作表的函數 Dim a As Integer a = WorksheetFunction.Sum(Range("A1:A4")) 2.3 上機實做 2.3.1 教師示範寫一個程序 homework_1, 用 MsgBox 函數顯示一句話, 另外在 Sheet1 工作表當中繪製一個按鈕, 用這個按鈕來呼叫 homework_1 程序 請注意程式碼寫在 模組 -- Module1 當中, 程式碼為 Sub homework_1() MsgBox " 第一個程式 " End Sub 回到前台, 第一個工作表的地方 1. 切換工具列到 開發人員 頁 2. 插入 -- 表單控制項 3. 畫一個按鈕在工作表上

當你畫完按鈕的瞬間,Excel 就會顯示 指定巨集 的視窗, 這時請點選 homework_1, 這樣當你按下按鈕的時候, 就會呼叫 homework_1 這個程序 2.3.2 請學生練習 2.4 運算子 ( 複習 ) 2.4.1 算數運算子 ^ 運算子 用來進行次方運算 * 運算字用來將兩數相乘 / 運算子用來進行兩個數的除法運算, 並返回一個浮點數 \ 運算子用來對兩個數進行整除運算, 商數不取小數 Mod 運算子 用來對兩個數做除法並且只傳回餘數 + 運算子用來求兩數之和 - 運算子用來求兩數之差或表示數值運算式的負值 2.4.2 比較運算子比較運算子用來表示兩個或多個值或運算式之間的關係 這些運算子包括小於 (<) 小於等於 (<=) 大於 (>) 大於等於 (>=) 不等於 (<>) 和等於 (=) 2.4.3 字串連結運算子 &

2.4.4 邏輯運算子邏輯運算子是指連接運算式進行邏輯運算的運算子, 其運算結果為 True 或 False 兩種可能, 列舉如下 : Not 運算子 And 運算子 Or 運算子 Xor 運算子 Eqv 運算子 Imp 運算子 2.5 流程敘述 ( 複習 ) 2.5.1 If Then Else If Then 敘述 If 條件 Then 處理 1 End If If Then Else 敘述 If 條件 Then 處理 1 Else 處理 2 End If If Then.ElseIf 敘述 If 條件 1 Then 處理 1 ElseIf 條件 2 Then 處理 2 ElseIf 條件 3 Then 處理 3 Else 處理 4 End If 2.5.2 Select Select Case 敘述 Select Case 算式 Case 值 1 處理 1 Case 值 2 處理 2 Case Else 其他狀況時的處理 End Select 2.5.3 While Do Loop 迴圈

Do While Loop Do While 條件處理 Loop Do Loop While Do 處理 Loop While 條件 Do Until Loop Do Until 條件處理 Loop Do Loop Until Do 處理 Loop Until 條件 While Wend While 條件處理 Wend 2.5.4 For Next For Next 敘述 For Counter 變數 = 起始值 To 終止值處理 Next For Each Next 敘述 For Each 物件變數 In 物件集合處理 Next 2.6 上機實做 2.6.1 猜數字程式撰寫一個程式, 由電腦亂數選出一個 1~100 的數字, 然後讓使用者來猜, 假如使用者猜錯了, 程式會提醒範圍變更 使用者透過 InputBox 函數輸入, 例如 : a = InputBox(" 請猜數字 ", " 遊戲開始 ") 執行時會跳出如下對話窗 :

使用者輸入的數字之後, 這個數字會指定給 a 變數 亂數的使用 Rnd 函數會傳回小於 1, 但大於或等於零的值 所以要產生 1~100 的亂數數字, 就將這個亂數放大 100 倍之後取整數再加 1 例如 : 原本的數字 0.000000~0.999999 放大 100 倍 0.000000~99.999999 取整數 0~99 加 1 1~100 參考程式碼如下 : Sub homework_2() Dim a As Integer Dim answer As Integer Dim lower_bound As Integer Dim upper_bound As Integer answer = Int(Rnd * 100) + 1 lower_bound = 1 upper_bound = 100 a = InputBox(" 請猜數字 ", " 遊戲開始 ") While a <> answer If a > answer Then upper_bound = a Else lower_bound = a End If

MsgBox " 從 " & lower_bound & " 到 " & upper_bound a = InputBox(" 請猜數字 ", " 再接再厲 ") Wend MsgBox " 猜對了 " End Sub

貳 教學活動計畫三 物件 屬性 方法 事件 (1 節課 ) 教學活動名稱 : 1. 物件 屬性 ( 10 分 ) 2. 方法 (10 分 ) 3. 事件 (20 分 ) 4. 上機實做 (10 分 ) 時間 :50 分鐘 3.1 物件 屬性本章節物件 屬性 方法 事件為概論, 各物件常用的處理留待第四章, 教師也可將第三 第四章綜合之後進行教學 3.1.1 物件物件構成 Excel 的各種元素, 儲存格 工作表 活頁簿 統計圖表 圖案 等 東西 都是物件 所以只要在 VBE 裡能將物件名稱寫成程式碼, 再加以操作, 就是撰寫 VBA 程式了 3.1.2 屬性屬性 (Property) 是指物件的狀態屬性的值屬性可以取得 設定 但卻也有可以取得值卻無法設定的屬性屬性的取得參照物件或集合的屬性時, 使用.( 句號 ) 來取得屬性, 例如 : Dim str As String str = Application.Name 本行程式碼的作用 : 取得應用程式的名稱代入變數 str Dim cnt As Integer cnt = Worksheets.Count 本行程式碼的作用 : 取得 Worksheets 集合中包含的工作表數量, 代入 cnt 變數 屬性的設定 ActiveWindow.Width = 250 本行程式碼的作用 : 將目前開啟作用中的工作表視窗的寬度設定為 250 point 3.1.3 使用 VBE 的程式碼輔助功能撰寫程式碼的過程中, 當您寫了一個物件, 例如本例 Range("A1"), 當您繼續寫上. 要來存取屬性時,VBE 就會提供輔助的功能, 將 Range 物件所能使用的屬性以及方法以清單的方式顯示, 我們只要點選其中的屬性及方法就能直接輸入在程式碼裡面 這樣就不需要背誦, 也不用擔心拼字錯誤了

3.2 方法 3.2.1 方法方法是為了操作物件, 使其動作的介面 (Interface) 和函數或屬性相同, 有可以指定引述的東西, 可以取得傳回值的東西 VBA 執行物件方法的語法如下 : 物件名稱. 方法名稱 在物件名稱與方法名稱的中間以半形的. 句點連結, 這個方式很像是存取屬性的語法 3.2.2 參數用來指定方法在執行時的條件 有些時候利用方法執行動作時, 要進一步設定, 進一步設定的條件就是 參數, 語法如下 : 方法名稱參數名稱 := 設定值方法名稱參數名稱 1:= 設定值 1, 參數名稱 2:= 設定值 2, 參數名稱 3:= 設定值 3, 執行無參數的方法 Worksheets("Sheet3").Activate 執行有參數的方法 Workbooks("Book1").Close False 傳入多個參數時, 利用,( 逗號 ) 分隔 Worksheets.Add after:=worksheets(2), Count:=3 在編號 2 的工作表後面增加 3 個工作表 3.3 事件 3.3.1 事件事件是對物件進行操作或處理時發生的東西 例如, 點選滑鼠時發生 Click 事件, 物件作用時發生 Activate 事件 VBA 中, 發生特定的事件時, 會產生被執行的程序 像這樣的程序稱為事件程序 3.3.2 工作表的事件示範如何針對工作表的事件撰寫程式碼切換到 VBE 的環境, 這次寫程式的地方比較特別, 請在 Sheet1 上面滑鼠 double-click

中間下拉式選單選擇 worksheet1, 然後在其右方的下拉式選單選擇 SelectionChange 事件 這時候程式碼的地方會幫使用者填上 Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub 現在, 您可以針對 第一張工作表 儲存格選擇變動 這個事件寫上您想要做的處理, 若您寫上 MsgBox " 您選到 (" & Target.Row & "," & Target.Column & ")" 這行程式碼, 回到前台工作表的地方, 當您滑鼠點到不同的儲存格, 就會有一個對話視窗跳出來

這個事件我們在 井字遊戲 的專題中會用到, 請大家注意 3.3.3 活頁簿的事件若要撰寫活頁簿事件的程式, 在 VBE 環境中 1. 選 ThisWorkbook 2. 中間下拉選單 Workbook 3.Workbook 事件相當多, 本次示範 Open WindowResize 兩個事件, 請分別下拉 選擇事件之後, 撰寫程式 Private Sub Workbook_Open() MsgBox " 歡迎使用這個程式 " End Sub Private Sub Workbook_WindowResize(ByVal Wn As Window) MsgBox " 視窗的大小已變更 " End Sub 要測試 Workbook_Open 事件必須把檔案存檔 關閉之後, 再打開檔案才會生效, 請同學注意 3.4 上機實做 3.4.1 請同學練習撰寫 Worksheet_SelectionChange Worksheet_Activate 事件的程式

貳 教學活動計畫四 認識 Excel VBA 常用的物件操作 (2 節課 ) 教學活動名稱 : 1. 物件和集合 ( 10 分 ) 2. 儲存格 (30 分 3. 上機實做 (10 分 ) 4. 工作表 (20 分 ) 5. 應用程式 活頁簿 (20 分 ) 5. 上機實做 (10 分 ) 4.1 物件和集合 時間 :100 分鐘 4.4.1Excel 常用物件物件應用程式使用者表單活頁簿圖表工作表工作表表儲存格 VBA 的物件 集合 Application 物件 UserForm 物件 Workbook 物件 Workboos 集合 Chart 物件 Charts 集合 Worksheet 物件 Worksheets 集合 Sheet 物件 Sheets 集合 Cell 物件 Cells 集合 Range 物件 Application 物件 Application 物件代表整個 Excel 應用程式 Worbook 物件 Worbook 代表一個 Excel 活頁簿 Workbook 物件是 Workbooks 集合的成員 Workbooks 集合包含 Excel 中目前打開的所有 Workbook 物件 Worksheet 物件 Worksheet 物件代表一個工作表 Worksheet 物件是 Worksheets 集合的成員 Range 物件 Range 物件代表某一儲存格 某一行 某一列 某一選定區域 相關書籍對於 Range 使用著墨甚多, 但如果將儲存格以 Cells 也是很方便的, 就看授課教師安排

4.2 儲存格 4.2.1 使用 Cells 選取第 5 列第 3 行的儲存格 Cells(5, 3).Select 選取全部儲存格 Cells.Select 參照 1 個的儲存格時, 例如 : Cells(1, 1).Value =10 第一個數字是儲存格的列編號第二個數字是儲存格的欄編號 Value 屬性 ( 取得或設定儲存格的值 ) 本行程式碼的作用 :A1 儲存格的值設定 10 設定儲存格的公式利用 VBA 取得 設定算式時, 要使用 Formula 屬性, 例如 : Cells(3, 2).Formula = "=B1+B2" 本行程式碼的作用 :B3 儲存格的公式設定為 B1+B2 設定儲存格的格式設定 Cells(1, 1).Font.Color = RGB(255, 0, 0) 本行程式碼的作用 : 將 A1 儲存格的文字顏色設定為紅色 Cells(1, 1).Font.Size = 8 本行程式碼的作用 : 將 A1 儲存格的文字大小設定為 8 4.2.2Range 的使用 Cells 屬性能參照的僅有 單一儲存格 及 所有儲存格,Range 屬性可自由選取複數儲存格 使用 Range 屬性選取儲存格 Range( C5 ).Select Range( A1 ).Value=10 A1 表示儲存格的字串本行程式碼的作用 :A1 儲存格的值設定 10 選取連續的範圍 Range("A1:B2").Select 或 Range("A1", "B2").Select 本行程式碼的作用 :A1 到 B2 儲存格被選取 ( 如滑鼠從 A1 拖曳至 B2 的樣子, 那些儲存格呈現反白 ) 選取整行 / 整列語法 Range("1:1").Select 作用選取第一列

Range("A:A").Select Range("1:3").Select Range("A:C").Select Range("1:3,6:6").Select Range("A:C,F:F").Select 選取 A 欄選取第一列到第三列選取 A 欄到 C 欄選取第一列到第三列, 以及第六列選取 A 欄到 C 欄, 以及 F 欄 清除儲存格內容 Range("A1:Z20").Select Selection.ClearContents 本行程式碼的作用 :A1 到 Z20 的儲存格選取之後, 類似按下 Delete 按鈕清除內容 4.2.3Cells 和 Range 合併使用將 Cells 屬性作為 Range 屬性引數 Range(Cells(1, 2), Cells(5, 4)).Select 本行程式碼的作用 :B1 到 D5 儲存格被選取 Cells 和 Range 哪一種比較好用? 就看程式需求, 另外 Cells 有個優點是引數的值可以使用變數, 例如下圖 : 假如要從左上到右下填入數字 此時操作 Cells 是比較方便的, 程式碼如下 : Sub test() End Sub For i = 1 To 10 Cells(i, i) = i Next 4.3 上機實做 4.3.1 上機實做請在儲存格當中, 參考上一節程式, 由左上到右下的方式填入數字也可以試試看在儲存格中利用迴圈填入其他數字, 例如 1 到 100

4.4 工作表 4.4.1 工作表的使用參照工作表時, 要使用 Worksheets 屬性各位若對工作表的操作想知道更多的話, 可以錄製巨集, 就知道新增 刪除 修改 的動作該怎麼用程式碼撰寫 Worksheets("Sheet2").Activate 本行程式碼的作用 : 切換到工作表 Sheet2, 效果類似滑鼠點了第二張工作表 Worksheets("Sheet2").Delete 本行程式碼的作用 : 工作表刪除 Worksheets("Sheet2").Copy 本行程式碼的作用 : 將 Sheet2 工作表複製, 會另外開啟一個檔案 Worksheets("Sheet2").Copy Before:=Worksheets(1) 本行程式碼的作用 : 將 Sheet2 工作表複製到 1 號工作表之前, 不會另外開一個檔案 新增一個工作表 Worksheets.Add 4.5 應用程式 活頁簿 整合 1 個表以上的東西稱為活頁簿 活頁簿大概可以想像是 該 Excel 檔, 工作表或圖表等物件集合稱為活頁簿 以圖形所示為 : 4.5.1 活頁簿的操作新增活頁簿 Workbooks.Add 本行程式碼的作用 : 就像是用選單 開新檔案 -- 空白活頁簿, 會產生一個空白檔案 開啟活頁簿 Workbooks.Open Filename:="D:\book4.xlsx" 本行程式碼的作用 : 開啟一個 xlsx 檔案 關閉所有活頁簿 Workbooks.Close 記得存檔

關閉使用中的活頁簿 ActiveWorkbook.Close 關閉特定的活頁簿 Workbooks("Book2.xlsm").Close 存檔後關閉活頁簿 Workbooks("Book2.xlsm").Close SaveChanges:=True 特定活頁簿存檔 Workbooks("Book2.xlsm").Save 作用中的活頁簿存檔 ActiveWorkbook.Save 要參照活頁簿時, 要使用 Workbooks 屬性 MsgBox Workbooks(1).Name 本行程式碼的作用 : 將 1 號活頁簿的名稱顯示在訊息方塊 Workbooks("Book1").Activate 本行程式碼的作用 : 切換至活頁簿 Book1 應用程式 Application.Quit 本行程式碼的作用 : 結束 Excel 程式 4.6 上機實做 4.6.1 上機實做請練習本節所講述的語法

貳 教學活動計畫五 使用 Excel VBA 將排序的過程視覺化呈現 (2 節課 ) 教學活動名稱 : 1. 複習氣泡排序法 (20 分 ) 2. 氣泡排序法以 VB 實做 ( 30 分 ) 3. 完成專題 (30 分 ) 4. 進階學習 (20 分 ) 5.1 複習氣泡排序法 時間 :100 分鐘 5.1.1 氣泡排序它重複地走訪過要排序的數列, 一次比較兩個元素, 如果他們的順序錯誤就把他們交換過來 走訪數列的工作是重複地進行直到沒有再需要交換, 也就是說該數列已經排序完成 這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端 5.1.2 氣泡排序法的步驟 1. 比較相鄰的元素 如果第一個比第二個大, 就交換他們兩個 2. 對每一對相鄰元素作同樣的工作, 從開始第一對到結尾的最後一對 在這一點, 最後的 元素應該會是最大的數 3. 針對所有的元素重複以上的步驟, 除了最後一個 4. 持續每次對越來越少的元素重複上面的步驟, 直到沒有任何一對數字需要比較 5.1.3 氣泡排序法的虛擬碼請老師注意學生陣列邊界的處理, 氣泡排序法的寫法很多, 請老師以學生熟知的方式為主 function bubblesort (A : list[1..n]) { var int i, j; for i from n downto 1 { for j from 1 to i-1 { if (A[j] > A[j+1]) swap(a[j], A[j+1]) } } } 5.2 氣泡排序法以 VB 實做 5.2.1 以 Excel VBA 語法撰寫氣泡排序法 5.2.1.1 在畫面上安排兩個按鈕 亂數資料 資料由大到小 5.2.1.2 設計 亂數資料 按鈕的程式產生 1 到 100 不重複的亂數, 依序填入儲存格, 若您的方法是 產生亂數 檢查是否重複 重複就再抽一個數字 不重複就填入, 方法雖然可行, 但會花費太多次的檢查, 所以這邊提供的方法是 : 先在 A1 到 A100 依序置入 1 到 100 的整數, 然後再亂數取兩個儲存格, 數字兩兩交換, 多次之後就能將 1 到 100 的數字打亂 Sub CommandButton1_Click()

End Sub '1 到 100, 依序填入儲存格 For i = 1 To 100 Cells(i, 1) = i Next Randomize ' 取兩個儲存格, 數字兩兩交換, 做 100 次 For i = 1 To 100 a = Rnd() * 1000 Mod 100 + 1 b = Rnd() * 1000 Mod 100 + 1 'MsgBox a & b temp = Cells(a, 1) Cells(a, 1) = Cells(b, 1) Cells(b, 1) = temp Next MsgBox " 排序開始 " Call Bubble_Sort 5.2.1.3 設計 資料由大到小 按鈕的程式氣泡排序法在數字呈現 由大到小 排列的時候, 效率最差, 所以要讓學生觀察到這種狀況, 因此做了這個按鈕 Sub CommandButton2_Click() End Sub ' 由大到小 For i = 1 To 100 Cells(i, 1) = 101 - i Next MsgBox " 排序開始 " Call Bubble_Sort 5.2.1.4 以 A1 到 A100 的資料繪製 散佈圖 選擇散佈圖, 以利看出資料從散佈到歸位的過程

一開始呈現散佈狀態 大約 A90 到 A100 的數字已經排上正確的數字 數字已經排好, 也就是 A1 是最小的,A2 是第二小 5.2.1.5 設計氣泡排序法主程式 For i = 100 To 2 Step -1 For j = 1 To i - 1 If Cells(j, 1) > Cells(j + 1, 1) Then temp = Cells(j, 1) Cells(j, 1) = Cells(j + 1, 1) Cells(j + 1, 1) = temp End If

Next Range("B1").Select Call sleep Next 5.3 完成專題 5.3.1 請完成本節內容 成果請從網路下載 : 5.4 進階學習 5.4.1 修改 5.3.1 所設計的程式, 改成其他排序法老師可以提供或是講述插入 選擇排序法的程式碼, 讓學生修改後使用在本專題

貳 教學活動計畫六 使用 Excel VBA 設計井字遊戲 (2 節課 ) 教學活動名稱 : 1. 井字遊戲流程 (50 分 ) 2. 完成專題 (50 分 ) 時間 :100 分鐘 6.1 井字遊戲流程本專題將設計一個井字遊戲 ( 英文 :Tic-tac-toe 或是口語的圈圈叉叉 ) 本程式只能自己一個人玩, 遊戲開始之後, 電腦先攻, 畫叉叉 ; 使用者畫圈圈, 電腦出手的方式以亂數進行 ( 註 : 教師可以針對電腦出手的方式另闢專題講解遊戲樹 人工智慧等課題 ) 6.1.1 畫面設計 6.1.1.1 選定 9 個格子當作棋盤本專題以 E2 到 G4 為範圍, 同學可以自行選定, 然後畫上格線以資辨認 6.1.1.2 畫上一個 遊戲重開 的按鈕這個按鈕的程式就是本專題的全部, 容後敘述 6.1.2 程式設計 6.1.2.1 程式構想 以 3X3 的儲存格為盤面 設定狀態 : 玩家階段 電腦階段 把盤面的資料讀入一個 3X3 的二維陣列, 方便處理 當使用者滑鼠點到某個儲存格, 觸發 Worksheet_SelectionChange 事件, 代表 下棋 用 3X3 的陣列儲存盤面資料, 以 -1 代表 ;1 代表 好處是可以將陣列內容相加得知勝負狀況, 例如 : 轉成二維陣列 0 1 0 0 1-1 -1 1-1

檢查所有 三格連線 的可能 1 2 3 1 0 1 0 2 0 1-1 3-1 1-1 可以發現圈連成一線的話, 其儲存格的值相加為 3 叉連成一線的話, 其儲存格的值相加為 -3 6.1.2.2 遊戲流程 盤面清空 等初始動作 電腦下棋 判斷勝負 是 是 是否有人獲勝? 否 否 使用者輸入 判斷勝負 是否有人獲勝? 6.1.2.2 程式碼解說 清空盤面 Worksheets(1).Range("e2:g4").ClearContents 清空二維陣列 For i = 1 To 3 For j = 1 To 3 Table(i, j) = 0 Next Next 電腦先攻 Call Computer_Choose

電腦亂數選一格 While Not Selected i = Int((3 * Rnd) + 2) j = Int((3 * Rnd) + 5) If Cells(i, j) = "" Then Table(i - 1, j - 4) = -1 Selected = True Cells(i, j) = " " End If Wend 判斷勝負 a = Table(1, 1) + Table(1, 2) + Table(1, 3) b = Table(2, 1) + Table(2, 2) + Table(2, 3) c = Table(3, 1) + Table(3, 2) + Table(3, 3) d = Table(1, 1) + Table(2, 1) + Table(3, 1) e = Table(1, 2) + Table(2, 2) + Table(3, 2) f = Table(1, 3) + Table(2, 3) + Table(3, 3) g = Table(1, 1) + Table(2, 2) + Table(3, 3) h = Table(1, 3) + Table(2, 2) + Table(3, 1) 若變數相加為 3, 就是圈贏 ; 變數相加為為 -3, 就是叉贏, 其他都不能決定輸贏 使用者輸入本程式當 使用者點到盤面時 就視為下棋, 所以要先針對 儲存格選擇改變 事件撰寫程式 Private Sub Worksheet_SelectionChange(ByVal Target As Range) 由於 儲存格選擇改變 事件也可能在 電腦下棋 時觸發, 所以程式需要檢查 目前是否為玩家階段, 以及 是否下在盤面內 才有相對應的處理 If Turn = user And ActiveCell.Value = "" And (2 <= ActiveCell.Row And ActiveCell.Row <= 4) And (5 <= ActiveCell.Column And ActiveCell.Column <= 7) Then ( 以下程式碼略 ) 請老師注意, 其餘程式細節並未全部列出, 請下載成果 Excel 檔自行觀看 6.2 完成專題 6.2.1 請完成本節內容成果請從網路下載 :

貳 教學活動計畫七 使用 Excel VBA 設計生命遊戲 (1 節課 ) 教學活動名稱 : 1. 介紹生命遊戲 (20 分 ) 2. 完成專題 (30 分 ) 7.1 介紹生命遊戲 時間 :50 分鐘 7.1.1 生命遊戲簡介 ( 摘錄自維基百科 ) 生命遊戲, 又稱生命棋, 是英國數學家約翰 何頓 康威在 1970 年發明的細胞自動機 它最初於 1970 年 10 月在 科學美國人 雜誌上馬丁 葛登能的 數學遊戲 專欄出現 生命遊戲中, 對於任意位置, 規則只有三條 : 當周圍有 3 個細胞時, 該位置產生細胞 當周圍有 2 個細胞時, 該位置維持原樣 其他情況, 該位置變為無細胞 生命遊戲其實是一個零玩家遊戲 它包括一個二維矩形世界, 這個世界中的每個方格居住著一個活著的或死了的細胞 一個細胞在下一個時刻生死取決於相鄰八個方格中活著的或死了的細胞的數量 如果相鄰方格活著的細胞數量過多, 這個細胞會因為資源匱乏而在下一個時刻死去 ; 相反, 如果周圍活細胞過少, 這個細胞會因太孤單而死去 實際中, 玩家可以設定周圍活細胞的數目怎樣時才適宜該細胞的生存 如果這個數目設定過高, 世界中的大部分細胞會因為找不到太多的活的鄰居而死去, 直到整個世界都沒有生命 ; 如果這個數目設定過低, 世界中又會被生命充滿而沒有什麼變化 7.1.2 本專題程式構想 定義 盤面 的範圍?Excel 儲存格有 65535 列,16384 行, 程式如何定義細胞活動的範圍? 在處理盤面之前記得條件判斷 如何讓使用者安排 細胞 在盤面上? 仿照上一個專題, 偵測滑鼠點到某個儲存格的事件 如何判斷細胞周圍的狀況? 找到儲存格的座標,X 座標增加代表向下 ;Y 座標增加代表向右, 總共八個方位, 請同學想想看 計算的方式 如何判斷盤面上已經沒有細胞, 顯示遊戲結束? 由於細胞的有無, 已經以數字表示, 所以可以用內建的函數計算 7.1.3 本專題實作過程 7.1.3.1 定義盤面本專題限定細胞的活動範圍從 A1 到 AD20 請同學在盤面外繪製兩個按鈕, 功能分別是 : 清空 和 執行 按鈕 清空 的程式碼如下 : Sub 按鈕 1_Click() Range("A1:AD20").Select With Selection

.ClearContents End With Cells(1, 1).Select End Sub 上面的程式碼是透過錄製巨集的方式得知, 同學也可以寫的精簡一點 Sub 按鈕 1_Click() Range("A1:AD20").ClearContents Cells(1, 1).Select End Sub 至於按鈕 執行 的程式碼則是本專題的重頭戲, 容後敘述 7.1.3.2 使用者輸入本專題在 A1 到 AD20 的儲存格中運作, 清空內容代表沒有 細胞, 若使用者需要放置細胞, 請在儲存格當中輸入 1, 為了方便呈現, 使用 設定格式化的條件, 把值為 1 的儲存格設定填滿顏色, 看起來就像是有個細胞 也就是說, 把 塗色 的工作交給 Excel 自動處理 程式只要填上 1 或是清空就好 由於設定了格式化的條件, 只要您填上 1,Excel 就自動幫您塗滿藍色 7.1.3.3 判斷細胞周圍的狀況以儲存格 C2 為例, 周圍 8 格的細胞數量可以用 SUM(B1:D3) 計算得知, 也可以用程式語言把附近 8 個格子的值相加, 兩個方法都可以, 不過為了學習 VBA, 我們還是學習使用內建的函數 A B C D E 1 2 1 1 3 1 4 如果您要在巨集當中使用工作表函數, 必須這樣寫 WorksheetFunction.Sum(Range("B1:C3")) 注意 Sum 的裡面不能直接寫 B1:C3, 而是要傳一個 Range 物件 由於 Sum 函數會傳回一個結果, 建議可以使用一個變數記錄它, 例如 : Dim a As Integer

a = WorksheetFunction.Sum(Range("B1:C3")) MsgBox a 同學可以發現用 B1:C3 的方式去設定儲存格範圍似乎不是那麼的靈活, 因此要多學會一招 使用儲存格建立範圍, 再把範圍傳給函數的方法 Dim a As Integer a = WorksheetFunction.Sum(Range(Cells(1, 2), Cells(3, 4))) MsgBox a 用列 行指定儲存格的時候, 要先說列, 再說行, 所以 B1 儲存格是 Cells(1,2), 而這個數字可以用迴圈變數替換 7.1.3.4 變動細胞的方式程式將替每一個格子計算附近細胞的狀況, 但請注意計算的結果都不該 立刻就畫上去, 以免影響附近的細胞, 舉例如下 : A B C D E F 如上圖, 假如計算順序是由上而下, 由左而右,D 儲存格附近只有 1 個細胞, 所以 D 儲存格的細胞會消失, 如果您就直接消掉 D 儲存格然後計算 E F 儲存格的話, 將會計算錯誤, 如下圖左 錯誤 正確 7.1.3.5 細胞都消失的判斷 If WorksheetFunction.Sum(Range("A1:AD20")) = 0 Then MsgBox " 細胞都死光了 " End If 這個專題不建議將細胞生活的過程做成 While 迴圈, 因為有些盤面的結果不會結束, 細胞一直生生不息 這樣迴圈就停不下來了 7.2 完成專題 7.2.1 請完成本節內容成果請從網路下載 :