国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
VBA程序集(第5輯)

VBA程序集(第5輯)

分類: Office編程 199人閱讀 評(píng)論(0) 收藏 舉報(bào)

VBA程序集
(第5輯)

[摘要] VBA程序集匯集了一些小型代碼程序。其中的代碼可直接運(yùn)用到您的應(yīng)用程序中,也可以根據(jù)您的需要稍作調(diào)整或修改后運(yùn)用到您的應(yīng)用程序中。一小段代碼也能附加額外的功能或增強(qiáng)現(xiàn)有的功能,或許能大大改善您的工作效率。
本程序集中匯集了5個(gè)小型實(shí)用功能程序代碼:
? >>將Excel數(shù)據(jù)表輸出為一個(gè)帶有逗號(hào)和引號(hào)分隔符的文本文件
? >>統(tǒng)計(jì)所選區(qū)域中包含公式、文本或數(shù)字的單元格數(shù)
? >>使用Saved屬性判斷工作簿是否有改變
? >>連接相鄰兩列單元格中的數(shù)據(jù)
? >>匯總單元格區(qū)域的行單元格值和列單元格值

如何創(chuàng)建和使用這些程序
使用程序前,您必須選創(chuàng)建它。您可以在VBE編輯器中輸入或粘貼下面的代碼以創(chuàng)建宏程序,然后執(zhí)行工作表菜單“工具”中的宏程序,或者在工作表中為自定義的菜單或命令按鈕附加宏,這樣就可以方便使用它們。
1. 打開您想創(chuàng)建宏程序的工作簿或新工作簿。
2. 在工作表中選擇菜單“工具——宏——Visual Basic編輯器”(或按Alt+F11組合鍵),打開VBE編輯器。
3. 在VBE編輯器中選擇菜單“插入——模塊”,插入一個(gè)模塊并打開代碼窗口。
4. 在代碼窗口中輸入或粘貼程序代碼。
5. 關(guān)閉VBE窗口。
6. 若程序要求運(yùn)行前需要選擇單元格區(qū)域或特定單元格,則先按要求選擇。
7. 選擇工作表菜單“工具——宏——宏”命令,打開“宏”對(duì)話框。在“宏”對(duì)話框中選擇所創(chuàng)建的宏,單擊“執(zhí)行”按鈕運(yùn)行宏程序。
提示  (1) 當(dāng)然,上面的創(chuàng)建和使用程序的過(guò)程不是唯一的,您可以根據(jù)習(xí)慣來(lái)進(jìn)行,如可以直接在VBE編輯器中運(yùn)行宏,或者將宏程序附加到自定義菜單或按鈕中,點(diǎn)擊它們即運(yùn)行。
      (2) 在閱讀或理解這些程序的時(shí)候,您應(yīng)該思考如何擴(kuò)展這些應(yīng)用程序來(lái)滿足您的需要。


程序分析和程序代碼
■ 將Excel數(shù)據(jù)表輸出為一個(gè)帶有逗號(hào)和引號(hào)分隔符的文本文件
Excel沒(méi)有一個(gè)菜單命令能夠自動(dòng)輸出數(shù)據(jù)到一個(gè)文本文件,例如輸出為一個(gè)帶有逗號(hào)和引號(hào)標(biāo)記作為分隔符的文本文件。例如,內(nèi)容為“Text1”,”Text2”,”Text3”的文本文件。
但是,你能在Excel中使用VBA宏程序?qū)崿F(xiàn)這個(gè)功能。在VBA宏程序中使用Print語(yǔ)句,輸出一個(gè)帶有逗號(hào)和引號(hào)作為分隔符的文本文件。為了實(shí)現(xiàn)程序的功能,你必須在運(yùn)行程序前選擇你所有輸出為文本文件的數(shù)據(jù)的單元格區(qū)域。
程序代碼如下:
****************************
程序18(數(shù)據(jù)輸出)
Option Explicit
Sub 數(shù)據(jù)輸出()
    Dim DestFile As String
    Dim FileNum As Integer
    Dim ColumnCount As Integer
    Dim RowCount As Integer

    ' 提示用戶輸入目標(biāo)文件名
    DestFile = InputBox("輸入您所要保存數(shù)據(jù)的目標(biāo)文件名" & _
      Chr(10) & "(最好帶有完整的保存路徑和擴(kuò)展名):", _
      "引號(hào)-逗號(hào)分隔輸出")
    ' 獲取下一個(gè)文件號(hào)
    FileNum = FreeFile()

    ' 忽略出現(xiàn)的錯(cuò)誤
    On Error Resume Next

    '打開想要輸入數(shù)據(jù)的目標(biāo)文件
    Open DestFile For Output As #FileNum
    '若發(fā)生錯(cuò)誤則結(jié)束運(yùn)行
    If Err <> 0 Then
      MsgBox "不能打開文件!請(qǐng)確保您輸入了正確的文件名和路徑." & DestFile
      End
    End If

    ' 打開錯(cuò)誤檢查
    On Error GoTo 0

    ' 查找所選區(qū)域中的每一行
    For RowCount = 1 To Selection.Rows.Count
      ' 查找所選區(qū)域的每一列
      For ColumnCount = 1 To Selection.Columns.Count

         ' 寫當(dāng)前單元格中的文本并帶有引號(hào)標(biāo)記到目標(biāo)文件中
         Print #FileNum, """" & Selection.Cells(RowCount, _
            ColumnCount).Text & """";
         '檢查單元格是否是最后一列中的單元格
         If ColumnCount = Selection.Columns.Count Then
            '如果是,則寫入一個(gè)空白行
            Print #FileNum,
         Else
            '否則,寫入一個(gè)逗號(hào)
            Print #FileNum, ",";
         End If
      ' 開始下一列循環(huán)判斷
      Next ColumnCount
    ' 開始下一行循環(huán)判斷
    Next RowCount

    ' 關(guān)閉寫入的目標(biāo)文件
    Close #FileNum
End Sub
****************************
文檔示例見(jiàn)[過(guò)程]輸出所選數(shù)據(jù)到文本文件.xls。UploadFiles/2006-7/71278799.rar
■ 統(tǒng)計(jì)所選區(qū)域中包含公式、文本或數(shù)字的單元格數(shù)
在Excel中,您能使用定位對(duì)話框來(lái)選取工作表中某單元格區(qū)域所包含的公式、文本或數(shù)字的單元格,即
1. 在編輯菜單中,單擊“定位”,打開“定位”對(duì)話框。
2. 單擊“定位條件”按鈕,打開“定位條件”對(duì)話框。為了選擇所有的公式,單擊公式選項(xiàng)按鈕,確保選中數(shù)字、文本、邏輯值和錯(cuò)誤復(fù)選框。若要選擇文本,則選取常量選項(xiàng)按鈕并只選取公式按鈕下的“文本”復(fù)選框;若要選擇數(shù)字,則選取常量選項(xiàng)按鈕并只選取公式按鈕下的“數(shù)字”復(fù)選框。
要統(tǒng)計(jì)所選區(qū)域單元格的數(shù)量,并在消息框中顯示結(jié)果,使用下面的程序:
****************************
程序19(循環(huán))
Option Explicit
Sub 選區(qū)單元格數(shù)()
    Dim cell As Object
    Dim count As Integer
    count = 0
    For Each cell In Selection
        count = count + 1
    Next cell
    MsgBox "您選擇了" & count & "個(gè)單元格."
End Sub
****************************
提示  您能在工作表中將該程序指給一個(gè)自定義按鈕,當(dāng)您單擊此按鈕時(shí),將顯示您工作表上所選區(qū)域單元格數(shù)。
示例文檔見(jiàn)[過(guò)程]統(tǒng)計(jì)所選區(qū)域的單元格數(shù).xls。UploadFiles/2006-7/71979122.rar
■ 使用Saved屬性判斷工作簿是否有改變
您能通過(guò)檢查工作簿的Saved屬性判斷該工作簿是否發(fā)生了改變。根據(jù)工作簿是否改變,Saved屬性返回True值或False值。
若您的工作表中存在可變函數(shù),可能影響Saved屬性判斷??勺兒瘮?shù)是在工作表中每次發(fā)生變化時(shí)都重新進(jìn)行計(jì)算的函數(shù),不管該變化是否影響到這個(gè)函數(shù)。最常用的可變函數(shù)有RAND(),NOW(),TODAY()和OFFSET()。
下面是不同條件下該屬性的運(yùn)用代碼:
程序20(對(duì)工作簿的操作)
****************************
‘當(dāng)活動(dòng)工作簿發(fā)生改變而沒(méi)有保存時(shí)顯示一個(gè)消息
Sub 測(cè)試1()
    If ActiveWorkbook.Saved = False Then
        MsgBox "這個(gè)工作簿已經(jīng)改變,但您沒(méi)有保存該變化. "
    End If
End Sub
****************************
‘不保存并關(guān)閉工作簿,而不管工作簿是否發(fā)生改變
Sub 測(cè)試2()
    ThisWorkbook.Saved = True
    ThisWorkbook.Close
End Sub
****************************
‘功能與上面的程序相同,即不管工作簿是否變化,不保存而直接關(guān)閉工作簿
Sub 測(cè)試3()
    ThisWorkbook.Close SaveChanges:=False
End Sub 
****************************
■ 連接相鄰兩列單元格中的數(shù)據(jù)
在Excel中,你能使用一個(gè)宏程序來(lái)連接兩個(gè)相鄰列中的數(shù)據(jù),并在右邊相鄰的空列顯示結(jié)果,下面的宏程序?qū)崿F(xiàn)該功能:
****************************
程序21(單元格)
Sub 連接相鄰兩列數(shù)據(jù)()
    '循環(huán)直到活動(dòng)單元格為空
    Do While ActiveCell <> ""
        ActiveCell.Offset(0, 1).FormulaR1C1 = _
           ActiveCell.Offset(0, -1) & " " & ActiveCell.Offset(0, 0)
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub
****************************
提示  在運(yùn)行程序前,應(yīng)該將選第二列的第一個(gè)單元格作為當(dāng)前單元格。即若想合并A1:A10和B1:B10中的數(shù)據(jù),運(yùn)行程序前,單元格B1應(yīng)為活動(dòng)單元格。
示例文檔見(jiàn)[過(guò)程]連接相鄰兩單元格中的數(shù)據(jù).xls。UploadFiles/2006-7/71978092.rar
■ 匯總單元格區(qū)域的行單元格值和列單元格值
在Excel中,您能使用數(shù)組去計(jì)算和操作工作表中的數(shù)據(jù)。你也能使用宏程序在一個(gè)數(shù)組中存儲(chǔ)一個(gè)單元格區(qū)域中的值。這里介紹的宏程序代碼將添加一個(gè)附加列和行到一個(gè)矩形單元格區(qū)域中,并匯總這個(gè)區(qū)域中每行和每列的列數(shù)和行數(shù)。
代碼首先在活動(dòng)工作表中從活動(dòng)單元格所在的單元格區(qū)域中讀取數(shù)據(jù),并存諸數(shù)據(jù)在數(shù)組中,然后對(duì)單元格區(qū)域中的每行和每列進(jìn)行統(tǒng)計(jì),最后輸出到工作表中。數(shù)組的大小取決于當(dāng)前區(qū)域中單元格的數(shù)量。
注 該宏程序沒(méi)有添加任何公式到工作表中,因此,如果所統(tǒng)計(jì)區(qū)域發(fā)生改變,匯總結(jié)果不會(huì)相應(yīng)變化,故您必須重新運(yùn)行宏。
****************************
程序22(數(shù)組應(yīng)用)
Option Explicit
Sub 匯總行列值()
    ' 該程序假設(shè)您已在一個(gè)矩形單元格區(qū)域中選取了單元格
    ' 匯總數(shù)據(jù)將顯示在矩形區(qū)域右側(cè)和下面
    Dim r As Integer
    Dim c As Integer
    Dim i As Integer
    Dim j As Integer
    Dim myArray As Variant

   '選取包含所選單格的區(qū)域
    With Selection.CurrentRegion
        r = .Rows.Count
        c = .Columns.Count
        '用區(qū)域中的行列數(shù)定義數(shù)組大小
        myArray = .Resize(r + 1, c + 1)

        ' 變量i代表行數(shù),變量j代表列數(shù).
        '當(dāng)一行循環(huán)完后進(jìn)入下一行
        For i = 1 To r
            For j = 1 To c
              myArray(i, c + 1) = myArray(i, c + 1) + myArray(i, j)
              myArray(r + 1, j) = myArray(r + 1, j) + myArray(i, j)
              myArray(r + 1, c + 1) = myArray(r + 1, c + 1) + myArray(i, j)
            Next j
        Next i

        .Resize(r + 1, c + 1) = myArray
    End With
End Sub
****************************
提示  (1)運(yùn)行該程序前,應(yīng)保證活動(dòng)單元格處于數(shù)據(jù)區(qū)域中。
      (2)您能修改該程序執(zhí)行相似的操作,例如,對(duì)單元格區(qū)域進(jìn)行相減、相乘或相除等數(shù)學(xué)運(yùn)算。
示例文檔見(jiàn)[過(guò)程]匯單元格區(qū)域中的行列值.xls。UploadFiles/2006-7/71957932.rar

一點(diǎn)心得
在學(xué)習(xí)VBA的過(guò)程中,注意積累一些實(shí)有的小型程序,不僅對(duì)提高您的VBA編程水平有所幫助,而且可以在運(yùn)用時(shí)對(duì)程序作些小的調(diào)整以方便地滿足您所需的功能。這些,都絕對(duì)是值得做的。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VBA編程問(wèn)答(第1輯)
使用 Excel 2003 工作表的 VBA 示例
VBA在Excel中的應(yīng)用(一)
VBA中名稱的使用
VBA系列-For Each語(yǔ)句
Excel VBA編程的常用代碼
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服