亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        如何在Excel中使用VBA編程

        2014-01-13 03:08:10蘇子偉
        軟件工程 2014年1期
        關(guān)鍵詞:運(yùn)算符賦值語句

        蘇子偉

        利用Excel軟件處理大量數(shù)據(jù)的過程中,分離有些需要的數(shù)據(jù)是比較困難的,并且Excel中的宏函數(shù)并不能很容易、很純粹地解決這些問題。這時(shí)使用VBA進(jìn)行數(shù)據(jù)處理就是最佳的選擇。VBA本身與Excel的結(jié)合是無縫的,且提供了大量豐富的函數(shù)。用VBA操縱表格的過程簡單,并且效率極高。

        一、下面從六個(gè)方面說明VBA編程語言的結(jié)構(gòu)

        1.運(yùn)算符

        (1)賦值運(yùn)算符: =

        (2)數(shù)學(xué)運(yùn)算符:&(字符連接符)、+(加)、-(減)、*(乘)、

        /(除)、Mod(取余)、\(整除)、-(負(fù)號)、^(指數(shù))

        (3)邏輯運(yùn)算符:Not(非)、And(與)、Or(或)、Xor(異或)、Eqv(相等)、Imp(隱含)

        (4)關(guān)系運(yùn)算符:= (相等)、<>(不等)、>(大于)、<(小于)、>=(不小于)、<=(不大于)、Like、Is

        (5)位運(yùn)算符:Not(邏輯非)、And(邏輯與)、Or(邏輯或)、Xor(邏輯異或)、Eqv(邏輯等)、Imp(隱含)

        2.數(shù)據(jù)類型

        下面列舉了一些常用類型及其所占的字節(jié)空間。

        3.VBA的變量

        4.VBA中的流程控制

        (1)判斷結(jié)構(gòu)

        (2)循環(huán)結(jié)構(gòu)

        5.函數(shù)和過程的聲明與使用

        函數(shù)和過程都是為了實(shí)現(xiàn)一個(gè)特定的機(jī)能而寫的獨(dú)立的模塊代碼。函數(shù)的聲明采用Function、End Function,而過程使用Sub和End Sub來表示。二者形式上很相像,但是函數(shù)與過程也有一些區(qū)別。

        首先,Sub過程定義時(shí)無需定義返回值類型,而Function聲明一般需要用“As 數(shù)據(jù)類型”定義函數(shù)返回值類型。

        其次,Sub過程中沒有對過程名賦值的語句,而Function實(shí)現(xiàn)中一定有對函數(shù)名賦值的語句。

        再次,Sub與Function的調(diào)用方式不同。調(diào)用Sub過程是一個(gè)獨(dú)立的語句,而調(diào)用Function函數(shù)只是表達(dá)式的一部分。Sub過程不會(huì)用名字返回一個(gè)值,而Function函數(shù)一般會(huì)有一個(gè)返回值。

        例子:

        6.VBA中的注釋

        注釋語句是用來說明程序中某些語句或函數(shù)實(shí)現(xiàn)了什么樣的功能,提供了什么樣的接口,使用者應(yīng)該怎么使用的一種輔助性文字。VBA中注釋語句有兩種標(biāo)識方法。

        (1)單引號 例如:this is compare function.

        (2)Rem 例如:Rem this is compare function.

        這樣注釋語句就會(huì)變成綠色,區(qū)別于代碼字體的顏色。

        二、一些經(jīng)常使用的VBA操作

        三、一個(gè)根據(jù)表格數(shù)據(jù)自動(dòng)生成代碼的例子

        下面表格中的Message列是代碼中用到的整形變量,ID(Hex)列列出了該整形變量的值。String列是通過整形變量能索引到的字符串。這樣程序中只要使用Message列的變量就能找出相應(yīng)的字符串信息。如果有新的變量要追加,只需要在No.6的后面添加一行,重新運(yùn)行生成代碼的宏(CreateMessagefile),代碼就會(huì)自動(dòng)生成,維護(hù)起來非常的方便。

        下面是例子的代碼實(shí)現(xiàn)。

        Sub writeheader(obj As Variant, str As String)

        obj.WriteLine ("/********************************")

        obj.WriteLine (" file name : " & str)

        obj.WriteLine (" author : zzzz")

        obj.WriteLine (" Create date :" & Date)

        obj.WriteLine ("********************************/")

        End Sub

        Sub CreateMessagefile()

        Dim fso_h As Object

        Dim fname_h As String

        Dim col_message As Long

        Dim col_ID_hex As Long

        Dim col_string As Long

        col_message = 3

        col_ID_hex = 4

        col_string = 5

        'file name

        fname_h = "MessageInfo.h"

        fname_h = ThisWorkbook.Path & "\" & fname_h

        'open header file

        Set fso_h = CreateObject("Scripting.File

        SystemObject")

        Set obj_h = fso_h.CreateTextFile(fname_h, True, False)

        'to write comment header of the function

        writeheader obj_h, "MessageInfo.h"

        'to guard multi-include header file

        Dim multi_str As String

        multi_str = "__LOG_INFORMATION_H__"

        obj_h.WriteLine ("#ifndef " & multi_str)

        obj_h.WriteLine ("#define " & multi_str)

        obj_h.WriteLine ("")

        Cells(65536, 2).Select

        Selection.End(xlUp).Select

        Row_num = ActiveCell.Row

        For i = 3 To Row_num

        obj_h.WriteLine ("#define " & Cells(i, col_message).Value & " " & "0x" & Cells(i, col_ID_hex).Value)

        Next i

        obj_h.WriteLine ("")

        obj_h.WriteLine ("typedef struct msg_info")

        obj_h.WriteLine ("{")

        obj_h.WriteLine (Chr$(9) & "unsigned int msg_val;")

        obj_h.WriteLine (Chr$(9) & "char * pMsg;")

        obj_h.WriteLine ("}msg_info;")

        obj_h.WriteLine ("")

        obj_h.WriteLine ("msg_info MsgInfoTotal[] = {")

        For i = 3 To Row_num

        obj_h.WriteLine (Chr$(9) & "{" & Cells(i, col_message).Value & ", " & """" & Cells(i, col_string).Value & """" & "},")

        Next i

        obj_h.WriteLine ("};")

        obj_h.WriteLine ("")

        obj_h.WriteLine ("#endif")

        obj_h.Close

        MsgBox ("It is over to make Message information!")

        End Sub

        以上代碼運(yùn)行后,會(huì)在和excel相同的目錄下生成文件MessageInfo.h,即我們需要自動(dòng)生成的文件。

        自動(dòng)生成的MessageInfo.h代碼如下所示:

        /*************************************************

        file name : MessageInfo.h

        author : zzzz

        Create date :2013/12/20

        **************************************************/

        #ifndef __LOG_INFORMATION_H__

        #define __LOG_INFORMATION_H__

        #define msg_inf_1 0xC01A0001

        #define msg_inf_2 0xC01B0002

        #define msg_inf_3 0xD0120005

        #define msg_inf_4 0xD0130006

        #define msg_inf_5 0xD0140007

        #define msg_inf_6 0xD0150008

        typedef struct msg_info

        {

        unsigned int msg_val;

        char * pMsg;

        }msg_info;

        msg_info MsgInfoTotal[] = {

        {msg_inf_1, "file param error!"},

        {msg_inf_2, "file logic error!"},

        {msg_inf_3, "disk error!"},

        {msg_inf_4, "no memory error!"},

        {msg_inf_5, "function call failure!"},

        {msg_inf_6, "array overflow!"},

        };

        #endif

        本文通過VBA編程中的一個(gè)例子,使VBA的初學(xué)者對VBA的應(yīng)用能有一個(gè)初步的認(rèn)識,進(jìn)而在工作學(xué)習(xí)中處理表格數(shù)據(jù)時(shí)能多一種解決思路。當(dāng)然,想要精通VBA還需要讀者去深入地學(xué)習(xí)其相關(guān)的知識點(diǎn),多學(xué),多練,多總結(jié),從而利用VBA工具更高效地處理數(shù)據(jù)。

        猜你喜歡
        運(yùn)算符賦值語句
        關(guān)于1 1/2 … 1/n的一類初等對稱函數(shù)的2-adic賦值
        L-代數(shù)上的賦值
        老祖?zhèn)魇诨具\(yùn)算符
        重點(diǎn):語句銜接
        強(qiáng)賦值幺半群上的加權(quán)Mealy機(jī)與加權(quán)Moore機(jī)的關(guān)系*
        精彩語句
        利用賦值法解決抽象函數(shù)相關(guān)問題オ
        C++運(yùn)算符重載剖析
        如何搞定語句銜接題
        語文知識(2014年4期)2014-02-28 21:59:52
        表達(dá)式求值及符號推導(dǎo)
        国产成人精品久久二区二区91| 日韩在线看片| 色哟哟av网站在线观看| 99久久精品人妻一区| 日韩精品久久不卡中文字幕| 日韩人妻免费视频一专区| 国产美女做爰免费视频| 天堂sv在线最新版在线| 色二av手机版在线| 国产天堂av在线播放资源| 国产精品欧美久久久久久日本一道| 久久99精品久久久久久秒播| 日韩免费一区二区三区在线| 国产成人亚洲综合小说区| 女优av性天堂网男人天堂| 国产欧美va欧美va香蕉在| 国产一区二区不卡老阿姨| 欧美成人a视频免费专区| 中文字幕人妻互换av| 欧美肥妇毛多水多bbxx水蜜桃| 久久99精品国产麻豆不卡| 国产成a人亚洲精v品无码性色| 在线观看亚洲你懂得| 亚洲最大av免费观看| 美女露出奶头扒开内裤的视频| 久久久久久亚洲av成人无码国产 | 国产精品亚洲欧美云霸高清| 中文字幕无线精品亚洲乱码一区 | 国产精品高清网站| 国产成人精品999在线观看| 日本不卡一区二区高清中文| 蜜臀av一区二区三区| 欧美人与禽z0zo牲伦交| 亚洲狠狠网站色噜噜| 视频福利一区二区三区| 久久一区二区三区少妇人妻| 国产永久免费高清在线| 国产精品不卡无毒在线观看| 日韩产的人妻av在线网| 97精品人人妻人人| 久久中文字幕av一区二区不卡|