第四講 資料型態及變數、常數

Similar documents
Microsoft PowerPoint - Chapter3

Excel VBA Excel Visual Basic for Application

Microsoft Word - 第0講 準備Excel 2013的VBA開發環境

投影片 1

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

穨文件1

Microsoft PowerPoint - STU_C_Lang_CH13.ppt

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

資料型態

Microsoft PowerPoint - ICP_02_Basic_Data_Type.ppt [相容模式]

Microsoft Word - ACG chapter00c-3ed.docx

Microsoft PowerPoint - 04-array_pointer.ppt

Microsoft Word - 投影片ch03

【電腦閱卷專用】

投影片 1

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

3.1 num = 3 ch = 'C' 2

untitled

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

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

TC35短信发送程序设计

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

untitled

Microsoft PowerPoint - Class2.pptx

Microsoft PowerPoint - vb_net8

Microsoft PowerPoint - 07-overloaded.ppt

<4D F736F F F696E74202D FB5F8B3A5A142B8EAAEC6B6C7BBBCA142BB50C0C9AED7BEDEA7402E >

Microsoft Word - ACI chapter00-1ed.docx

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

Java 程式設計入門

Microsoft PowerPoint - Class5.pptx

PowerPoint Presentation

Microsoft PowerPoint - pl_4.ppt

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

Microsoft PowerPoint - OPVB1基本VB.ppt

ThreeDtunnel.doc

CC213

書面

Microsoft PowerPoint - VB14.ppt


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

HTML網頁基礎語言

現在人類獲取地球內部訊息的方法, 是從可能影響我們身家性命安全的地震, 用數學模型把地震資料轉換成地震波速度, 進而獲得地底物質密度與深度的關係 地下世界知多少 km/s g/cm 3 P Gpa km S P S 3,000 3,000 ak K 透視地底 Percy Bridgma

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

Microsoft PowerPoint - sql2005_ch09.ppt

第四單元 運算式與流程控制 單元目標 當完成本單元後, 你將能學習到 : 認識 Java 基本資料型態使用基本資料型態與參考資料型態使用 String 類別與 StringBuffer 類別利用 Java 運算子建構算術運算式與邏輯運算式描述轉型 (casting) 與晉升 (promotion)

Microsoft Word - ch 校.doc

Visual Basic D 3D

投稿類別:資訊類

-2-1 進入與離開 Visual Basic 6.0 Visual Basic 是採用 視覺化 圖形的操作介面, 使用者可以直接點選按鈕或圖示 (Icon) 的方式, 直接來進行程式的撰寫與視窗外觀的設計 首先我們先開機實際操作如何進入與離開 Visual Basic 6.0 按 開始 程式集 M

The Embedded computing platform

Microsoft Word - AEL 序.doc

(Microsoft PowerPoint - \262\304\244\273\263\271)

C/C++基礎程式設計班

untitled


Microsoft Word - ACL chapter02-5ed.docx

多媒體應用 13 新增專案並完成版面配置 <ExMusic01> <activity_main.xml> ImageView ID imgplay ImageView ID imgstop ImageView ID imgfront TextView ID txtsong TextView ID t

運算子多載 Operator Overloading

Microsoft Word - CMS 目錄

運算子多載 Operator Overloading

資料結構之C語言重點複習

PowerPoint Presentation

Microsoft Word - 投影片ch11

VB控件教程大全

Outline USB Application Requirements Variable Definition Communications Code for VB Code for Keil C Practice

Microsoft Word - 01.DOC

untitled

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

Microsoft PowerPoint - VB3

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

Strings

踏出C++的第一步

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

公共圖書館利用教育方案規劃之研究


<4D F736F F D B0EABB79A4E5B8D5C344BBBCB065AAA9>


康體藝術


1.5招募说明书(草案)

Microsoft PowerPoint - Bronson-v3-ch07.ppt [相容模式]

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

第 26 章 :Visual Basic 入門 二 控制項的特徵與功能 考 1. VB 工具箱提供有許多可用來設計視窗程式外觀的控制項 控制項 用途 表單 Form 是佈建表單以外之控制項的平台, 常作為程式的主畫面 標籤 Label 顯示資料 文字方塊 TextBox 輸入資料 按鈕 Button

<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

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

3-1 javascript v4.1

untitled

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>

( )... 5 ( ) ( )

VBA簡介

jQuery實戰手冊

概述

Maasa停車場管理系統

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

Microsoft PowerPoint - OPVB3基本程式設計.ppt

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

Transcription:

VBA 講義 4-1 第四講資料型態及變數 常數 VBA 的資料型態 (Data Types) 資料型態使用的記憶體空間數值範圍 Byte( 短整數 ) 1 Byte 0~255 Integer ( 整數 ) 2 Bytes -32768~32767 Long ( 長整數 ) 4 Bytes -2147483648~2147483647 Single ( 單倍精準浮點 數 ) Double ( 雙倍精準浮 點數 ) String ( 可變長度字串 ) String*( 長度 ) ( 固定長度字串 ) 4 Bytes 負數 :-3.4E38~-1.4E-45 正數 :1.4E-45~3.4E38 8 Bytes 負數 :-1.7E308~-4.9E-324 正數 :4.9E-324~1.7E308 10 Bytes+ 字串長度最多 2 的 31 次方 ( 約 20 億 ) 個字元 與字串長度相等 最多 2 的 16 次方 (32768) 個字元 Boolean( 布林 ) 2 Bytes True or False Variant ( 變數 ) 註 : 此 variant 變數與 variable 變數不同 數值 :16 Bytes 字串 :22 Bytes+ 字串長度 數值型態時, 與 Double 相同 字串型態時, 與 可變長度字串 相同 Currency ( 貨幣 ) 8 Bytes 922,337,203,685,477.5807~ -922,337,203,685,477.5808 Date ( 日期與時間 ) 8 Bytes 日期 :January 1,100~ December 31,9999 時間 :00:00:00~23:59:59 Boolean 資料型態 Boolean 變數係以 16 位元 ( 2 個位元組 ) 數字的形式儲存, 但只能是 True 或是 False Boolean 變數的值不是 True 就是 False 使用關鍵字 True 與 False 可將 Boolean 變數指定為這兩個狀態中的一個 當轉換其他的數值型態為 Boolean 時,0 會轉成 False, 而所有其他的值則變成 True 當轉換 Boolean 值為其他的資料型態, 時,False 成為 0, 而 True 成為 -1 Byte 資料型態 Byte 變數係以範圍在 0 至 255 之單精度 無正負號 8 位元 ( 1 個位元組 ) 數字的形式儲存 Currency 資料型態

VBA 講義 4-2 Currency 變數係以 64 位元 ( 8 個位元組 ) 整數格式的數字形式儲存, 在小數點左邊有 15 位數, 右邊 4 位數的數字 這種表示法的範圍可以從 -922,337,203,685,477.5808 到 922,337,203,685,477.5807 Currency 資料型態適用於精確度特別重要的貨幣與固定點計算, 是兼具長整數及浮點數優點的一種型態 Date 資料型態 Date 變數係以 IEEE 64 位元 (8 個位元組 ) 浮點數字的形式儲存, 其可以表示的範圍從 1 January 100 到 31 December 9999, 而時間可以從 0:00:00 到 23:59:59 任何可辨認的文字日期都可以指定給 Date 變數 短式日期須以數字符號 (#) 包住, 例如,#January 1, 1993# 或 #1 Jan 93# Date 變數會根據電腦中的短日期格式來顯示 ; 時間則根據電腦的時間格式 ( 12 或 24 小時制 ) 來顯示 當其他的數值型態要轉換成 Date, 小數點左邊的值表示日期資訊, 而小數點右邊的值則表示時間 午夜為 0 而中午為 0.5 負整數表示 30 December 1899 之前的日期 Double 資料型態 Double ( 雙精度浮點數 ) 變數係以 IEEE 64 位元 (8 個位元組 ) 浮點數字的形式儲存, 它的範圍在負數的時候是從 -1.79769313486231E308 到 -4.94065645841247E-324, 而正數的時候是從 4.94065645841247E-324 到 1.79769313486232E308 Integer 資料型態 Integer 變數係以範圍為 -32,768 到 32,767 之 16 位元 (2 個位元組 ) 數字的 形式儲存 Long 資料型態 Long ( 長整數 ) 變數係以範圍從 -2,147,483,648 到 2,147,483,647 之 32 位元 (4 個位元組 ) 有號數字形式儲存 Single 資料型態 Single ( 單精度浮點數 ) 變數係以 IEEE 32 位元 (4 個位元組 ) 浮點數字的形式儲存, 它的範圍在負數的時候是從 -3.402823E38 到 -1.401298E-45, 而在正數的時候是從 1.401298E-45 到 3.402823E38 String 資料型態 字串有兩種 : 可變長度與固定長度的字串

VBA 講義 4-3 可變長度字串最多可有大約 20 億 ( 2^31) 個字元 固定長度的字串可有 1 到大約 64K ( 2^16 ) 個字元 Variant 資料型態 Variant 資料型態是所有沒被明確宣告為其他型態 ( 用如 Dim Private Public 或 Static 的陳述式 ) 之變數的資料型態 Variant 是一種特殊的資料型態, 除了固定長度 String 的資料及使用者自訂型態外, 也可以包含任何種類的資料 數值資料可以是任何整數或實數值, 負數時範圍從 -1.797693134862315E308 到 -4.94066E-324, 正數時則從 4.94066E-324 到 1.797693134862315E308 通常, 數值 Variant 資料維持在其 Variant 中原來的資料型態 例如, 如果您指定一 Integer 給 Variant, 則接下來的運算會把此 Variant 當成一 Integer 來處理 然而, 如果一算術運數針對含 Byte Integer Long 或 Single 之一 Variant 執行, 而當結果超過原來資料型態的正常範圍時, 則在 Variant 中的結果會提升到較大的資料型態 如 Byte 則提升到 Integer,Integer 提升到 Long, 而 Long 及 Single 則提升為 Double 當 Variant 變數中有 Currency Decimal 及 Double 值超過它們個別的範圍時, 會發生錯誤 您可以用 Variant 資料型態來取代任何的資料型態, 以更有彈性的方式來運算 如果 Variant 變數的內容是數字, 它可以用字串來表示數字或是用它實際的值來表示, 由內容來決定, 例如.. Dim MyVar As Variant MyVar = 98052 在前面的例子中,MyVar 內有一值 98052 的數字表示 算術運算子將內有數值或字串資料的 Variant 變數視為一數字 如果您用 + 運算子來將 MyVar 與其他含有數字或數字型態變數的 Variant 相加, 結果便是一算術和 使用者自訂資料型態任何用 Type 陳述式定義的資料型態 使用者自訂型態可包含一或多個某種資料型態的元件, 陣列, 或一個先前定義的使用者自訂型態 例如 : Type MyType MyName As String ' String variable stores a name. MyBirthDate As Date ' Date variable stores a birthdate. MySex As Integer ' Integer variable stores sex (0 for End Type ' female, 1 for male). 型態轉換函數 這些函數可強制一個運算式轉成特定的資料型態 語法

VBA 講義 4-4 CBool(expression) CByte(expression) CCur(expression) CDate(expression) CDbl(expression) CDec(expression) CInt(expression) CLng(expression) CSng(expression) CStr(expression) CVar(expression) CStr(expression), 其中, expression 引數為任何字串運算式或數值運算式 傳回型態 下列顯示函數對應的傳回型態 : 函數 傳回型態 expression 引數範圍 CBool Boolean 任何可使用的字串或數值運算式 CByte Byte 0 至 255 CCur Currency -922,337,203,685,477.5808 至 922,337,203,685,477.5807 CDate Date 任何可使用的日期運算式 CDbl Double 負數從 -1.79769313486231E308 至 -4.94065645841247E-324; 正數從 4.94065645841247E-324 至 1.79769313486232E308 CInt Integer -32,768 至 32,767; 小數部份將被轉換 CLng Long -2,147,483,648 至 2,147,483,647; 小數部份將被轉換 CSng Single 負數為 -3.402823E38 至 -1.401298E-45; 正數為 1.401298E-45 至 3.402823E38 CStr String 字串 CStr 傳回值是依據 express 引數 CVar Variant 若為數值, 則範圍與 Double 相同 ; 若非數值, 其範圍與 String 相同 變數 * 變數 (variable) 就是可以改變其內容資料的數, 在撰寫程式時, 將所設定的變數宣告合適的資料型態, 可以讓變數在執行時立刻得到適當的記憶體空間配置 如果在撰寫程式時並未明確定義變數的資料型態,VBA 會自動將該變數的資料型態視為 Variant 資料型態 * 變數宣告語法 : Public/Private/Dim [Static] 變數名稱 [As 資料型態 ] 在宣告變數時, 如果省略 [As 資料型態 ] 內的部分,VBA 會自動將該變數的資料

VBA 講義 4-5 型態視為 Variant 資料型態 字母大小寫會被系統視為是一樣的, 所以 QwErT 與 qwert 會被 VBA 視為完全相同的變數 Public Private Dim 的目的是要指定變數的使用範圍, 由於 Dim 與 Private 的使用方式及結果完全相同, 所以比較常用 Dim 而少用 Private * 變數在宣告時會自動將變數的內容初始化, 內定數值型態初始值為 0, 字串型態初始值為空字串, 布林型態初始值為 False *[Static]: 一般在程序中呼叫 Sub 或 Function 程序時, 被呼叫的程序會先將該程序內所宣告的變數初始化再執行程序內容 然而在某些特殊的情況下 ( 例如計數器 ), 會希望將程序變數的內容值保留下來, 以供下次執行該程序時使用, 這種會保留上次執行內容值的變數就是靜態變數, 其宣告方式是在變數名稱之前加上 Static 字樣 * 如果全域變數和區域變數的名稱相同, 則程序會引用區域變數的內容 變數 ( 補充 ) * 變數命名規則 : 變數名稱必須以英文字母開頭, 其後可以加上數字 英文字母或底線 ( _ ), 也可以以中文當作變數名稱 通常會使用 Dim 陳述式來宣告變數 一個宣告陳述式可以放到程序中以建立屬於程序層次的變數 ( 即 : 區域變數 ), 或放到模組頂端的 Declarations 區段裡面, 以建立屬於模組層次的變數 ( 即 : 全域變數 ) 下面的範例建立了變數 strname 並且指定為 String 資料型態 Dim strname As String 如果這個陳述式出現在程序中, 則變數 strname 只可以在此程序中被使用 如果這個陳述式出現在模組中的 Declarations 區段, 則變數 strname 可以被此模組中所有的程序所使用, 但是不能被同一專案中不同的模組所含程序來使用 為了使變數可被專案中所有的程序所使用, 則在變數名稱前加上 Public 陳述式, 如同下面的範例 : Public strname As String 可以在一個陳述式中宣告幾個變數 ; 而為了指定資料型態, 必須將每一個變數的資料型態包含進來 在下面的陳述式中, 變數 intx inty 與 intz 被宣告為 Integer 型態 Dim intx As Integer, inty As Integer, intz As Integer 在下面的陳述式中, 變數 intx 與 inty 被宣告為 Variant 型態 ; 只有 intz 被宣告為 Integer 型態 Dim intx, inty, intz As Integer 在宣告陳述式中, 不一定要提供變數的資料型態, 若省略資料型態的則會將變數設成 Variant 型態 使用 Public 陳述式

VBA 講義 4-6 可以使用 Public 陳述式去宣告公用的模組層次變數 Public strname As String 公用變數可使用於專案中所有的程序中 使用 Private 陳述式可以使用 Private 陳述式去宣告私有的模組層次變數 Private MyName As String 私有變數只可使用於同一模組中的程序 附註在模組層次中使用 Dim 陳述式與使用 Private 陳述式是相同的 不過使用 Private 陳述式可以更容易的去讀取並且解譯程式碼 使用 Static 陳述式當使用 Static 陳述式取代 Dim 陳述式, 則所宣告的變數在程序呼叫時仍會保留它原先的值 使用 Option Explicit 陳述式在 Visual Basic 中可以輕易的透過一個指定陳述式來隱含性的宣告變數 所有隱含性宣告的變數都為 Variant 型態, 而 Variant 型態比一般型態的變數需要更多的記憶體來源 如明確的宣告變數為某一特定的資料型態, 則應用程式將更加有效率, 明確宣告所有變數減少了名稱衝突以及拼字錯誤的發生率 如果不想要 Visual Basic 產生隱含性宣告的話, 可以將 Option Explicit 陳述式放置於模組層次中所有的程序之前 這一個陳述式會要求您對模組中所有的變數做明確的宣告 如果模組包含 Option Explicit 陳述式, 則當 Visual Basic 遇到一個先前未定義的變數或拼字錯誤, 它會發生編譯時間的錯誤 可以設定 Visual Basic 程式環境中的某個選項, 使得可以自動在所有模組中加上 Option Explicit 陳述式 變數宣告範例 Sub DeclareVariable() Dim a As Byte a = 255 Dim b As Integer b = -32768 Dim c As Long c = 200000 Dim d As Single d = 23.564 Dim e As Double e = 56789.12345 Dim f As Boolean f = True Dim g As String ( 接下頁 )

VBA 講義 4-7 End Sub ( 續上頁 ) g = " 會計二技三 " Dim h As String * 8 h = "iloveyou" Dim i As Variant i = 1235680 Dim j As Date j = #12/10/2001 3:30:00 PM# Dim k As Currency k = 2345678.1234 ( 接下頁 ) Cells(1, 1) = a Cells(1, 2) = b Cells(1, 3) = c Cells(1, 4) = d Cells(1, 5) = e Cells(2, 1) = f Cells(2, 2) = g Cells(2, 3) = h Cells(2, 4) = i Cells(2, 5) = j Cells(3, 1) = k 執行結果 : 範例 2( 變數的運算 )

VBA 講義 4-8 Sub Calculate() Dim a As Integer, b As Integer, c As Integer Dim d As String, e As String, f As String a = 100 b = 20 End Sub 執行結果 c = a / b Cells(1, 1) = a Cells(1, 2) = b Cells(1, 3) = c b = b + c c = a / b Cells(2, 1) = a Cells(2, 2) = b Cells(2, 3) = c d = " 我 " e = " 是 " f = " 周老師 " Cells(3, 1) = d Cells(3, 2) = e Cells(3, 3) = f d = d + e + f Cells(4, 1) = d e = f + e + d Cells(5, 1) = e

VBA 講義 4-9 常數為一名稱, 當程式在執行時用來代表一個不變的值 常數可以是字串 數值 另一常數 任何算術運算子 ( 除指數外 ) 或邏輯運算子 ( 除 Is 外 ) 的組合 每個主應用程式皆可定義自己的常數, 使用者也可以 Const 陳述式來定義附加的常數 在程式中的任意位置均可使用常數以代替真正的值 自訂常數範例 Sub 圓週率 () End Sub Const pi = 3.1415926 Dim x As String x = " 圓週率 " 執行結果 : Cells(1, 1) = x Cells(1, 2) = pi x = x + CStr(pi) Cells(2, 1) = x 陣列 (Array) 陣列提供一個空間, 讓多筆依序排列且資料型態相同的元素儲存在一起共同管理 宣告語法如下 : Dim 陣列名稱 ( 索引範圍 ) As 資料型態例如 : Dim Student(41) As String, 則 Student 這個陣列中就可以儲存至少 41 筆字串資料 ( 至多 42 筆 ), 像是這學期修 Excel 在會計上之應用 的 41 名同學的名字 * 索引範圍 決定了陣列的大小, 但它指的是陣列索引的最大值 ( 上界 ), 而非陣列元素的個數 索引範圍 的值必須是一個 Long 型態的數字或變數

VBA 講義 4-10 * 基本上, 陣列索引值會由 0 開始算起, 但也可以透過 Option Base 敘述來更改 如果設定為 Option Base 0, 則 Dim Student(41) 這個敘述會保留 42 個陣列元素, 陣列的索引值由 0 開始, 分別是 Student(0) Student(1) Student(2) 到 Student(41) 如果設定為 Option Base 1, 則 Dim Student(41) 這個敘述只會保留 41 個陣列元素, 陣列的索引值由 1 開始, 分別是 Student(1) Student(2) 到 Student(41) Option Base 這個敘述必須寫在模組宣告區中, 如果沒寫, 則內定為 Option Base 0 多維陣列 當所要儲存的元素比較複雜時, 也可以使用多維陣列的方式來儲存 陣列宣告的例子 宣告 陣列元素 Dim A(10) As Integer A(0) ~ A(10) 共 11 個元素 Dim B(3 To 10) As Byte B(3) ~ B(10) 共 8 個元素 Dim C(2,3) C(0,0) ~ C(2,3) 共 12 個元素 Dim D(2,1 To 3) D(0,1) ~ D(2,3) 共 9 個元素 動態陣列 * 動態陣列在宣告時可以不必指定索引範圍, 表示其大小未定, 如下所示 : Dim A( ) As Long 等到需要使用時, 再以程式碼敘述指定索引範圍即可