VBA續噓噓

来源:http://www.cnblogs.com/xiehaofeng/archive/2016/12/03/6128709.html
-Advertisement-
Play Games

什麼是VBA?它有什麼作用? A.實現Excel中沒有實現的功能。 B.提高運行速度。 C.編寫自定義函數。 D.實現自動化功能。 E.通過插入窗體做小型管理軟體。 VBA在哪裡存放的?怎麼運行? A.模塊中 在Excel 2010中若沒有“開發工具”項,通過“文件”——“選項”——“自定義功能區” ...


 

什麼是VBA?它有什麼作用?

 A.實現Excel中沒有實現的功能。

 B.提高運行速度。

 C.編寫自定義函數。

 D.實現自動化功能。

 E.通過插入窗體做小型管理軟體。

VBA在哪裡存放的?怎麼運行?

 A.模塊中

   Excel 2010中若沒有“開發工具”項,通過“文件”——“選項”——“自定義功能區”——選中“開發工具”——“確定”(圖1)。

註:為了提高word2010中插入的圖片的質量,“文件”——“選項”——“高級”——選中“不壓縮文件圖像質量”——“確定”。

 

1 選中文件”—“選項

2 ”自定義功能區”—“開發工具”——“確定

 

3 最終的界面多出了開發工具選項卡

 

                                                               4 代碼存放在模塊

B.運行巨集

單擊向右的綠三角,即可以運行。

 

   

                                                   右綠三角運行  

                                                          6  選中test並“運行”

 

                                                    運行結果

3.什麼是巨集?巨集和VBA有什麼關係?

 巨集Macro),是一種批量處理

 巨集通常既可以錄製又可以手動編程,而VBA一般是通過編程完成。巨集可以和VBA相結合使用。

4.錄製一個巨集。

  A.“開發工具”——“錄製巨集”——巨集名為“輸入100”——“錄製”——在A1單元格中輸入100——“停止”。

  B.“巨集”——選中“輸入100”——“執行”。

  

5.編寫一個巨集。

  A.“開發工具”——“Visual Basic”——“視圖”——“工程資源管理器”——“插入”——“模塊”——在右側輸入代碼:

  

  B. 單擊綠右三角即可運行。或者關閉VBA編輯視窗,單擊“巨集”——選中“test”——“執行”。

 

6.VBA語句

  A.巨集程式語句。

   

  B.函數程式語句

  

 C.在程式中應運語句。

  

D.迴圈語句。

  

7.VBA對象

  A.工作簿對象

     Workbooks 代表工作簿集合,所有的工作簿,Workbooks(N),表示已打開的第N個工作簿

     Workbooks ("工作簿名稱")

     ActiveWorkbook 正在操作的工作簿

     ThisWorkBook '代碼所在的工作簿

  B.工作表對象

     Sheets("工作表名稱")

     Sheet1 表示第一個插入的工作表,Sheet2表示第二個插入的工作表....

     Sheets(n) 表示按排列順序,第n個工作表

     ActiveSheet 表示活動工作表,游標所在工作表

     worksheet 也表示工作表,但不包括圖表工作表、巨集工作表等。

  C.單元格對象

     cells 所有單元格

     Range ("單元格地址")

     Cells(行數,列數)    Range(“B3”)和Cells(3,2)表示相同的單元格

     Activecell 正在選中或編輯的單元格

     Selection 正被選中或選取的單元格或單元格區域

8. VBA屬性

    VBA屬性就是VBA對象所具有的特點,表示某個對象的屬性如下:對象.屬性=屬性值

    Sub ttt()

      Range("a1").Value = 100     ’給單元格a1填充數值100

    End Sub

                                                                                                                                    

    Sub ttt1()

      Sheets(1).Name = "工作表改名了"   ’給工作簿重命名為“工作表改名了”

    End Sub

                                                                                                                                       

    Sub ttt2()

       Sheets("Sheet2").Range("a1").Value = "abcd"   ’給sheet2工作表的a1單元格填充字元串“abcd”

    End Sub

                                                                                                                                        

      Sub ttt3()

     ’單元格的內部的填充色

          Range("A2").Interior.ColorIndex = 3  ’A2單元格的背景顏色設置為紅色

         Range("A2").Font.ColorIndex = 3      ’將A2單元格的字體顏色設置為紅色

      End Sub

                                                                                                                                           

9.VBA方法

   VBA方法是作用於VBA對象上的動作,表示用某個方法作用於VBA的對象上,可以用下麵的格式:

   對象.方法  參數名稱:=參數值

                                                                                                                                            

  Sub ttt4()

      ’Range("A1").Copy Destination:= Range("A2")

      Range("A1").Copy Range("A2")   ’A1中的內容複製到A2

  End Sub

                                                                                                                                            

  Sub ttt5()

    Sheet1.Move before:=Sheets("Sheet3")   ’將sheet1表移動到sheet3之前

  End Sub

                                                                                                                                           

10.在一個鄉政府的文件中要求將Excel中一個表格的身份證號,配對並填充到另一個表中。巨集代碼如下:

     Sub 配對()

      Dim I, J As Integer

      For I = 3 To 225

           For J = 4 To 930

               If Sheets("Sheet4").Range("b" & I).Value = Sheets("黃門鄉").Range("b" & J).Value Then   

                     Sheets("Sheet4").Range("e" & I).Value = Sheets("黃門鄉").Range("d" & J).Value

              End If

         Next J

       Next I

     End Sub

     ’竟然沒寫入End IF,提示錯誤“Next 缺少 For”

11.判斷語句

   A.if判斷語句

                                                                                                                           

     Sub 判斷1() '單條件判斷

       If Range("a1").Value > 0 Then

            Range("b1") = "正數"

       Else

            Range("b1") = "負數或0"

       End If

     End Sub

  B.IIF判斷語句

                                                                                                                            

    Sub 判斷4()

        Range("a3") = IIf(Range("a1") <= 0, "負數或零", "負數")

    End Sub

  C.select判斷

                                                                                                                             

    Sub 判斷1() '單條件判斷

      Select Case Range("a1").Value

      Case Is > 0

         Range("b1") = "正數"

      Case Else

         Range("b1") = "負數或0"

      End Select

    End Sub

                                                                                                                               

    Sub 判斷2() '多條件判斷

        Select Case Range("a1").Value

         Case Is > 0

           Range("b1") = "正數"

         Case Is = 0

           Range("b1") = "0"

         Case Else

           Range("b1") = "負數"

         End Select

       End Sub

                                                                                                                                                     

      Sub 判斷3()

         If Range("a3") < "G" Then

            MsgBox "A-G"

         End If

      End Sub

D.區間判斷

                                                                                                                                     

  Sub if區間判斷()

  If Range("a2") <= 1000 Then

    Range("b2") = 0.01

  ElseIf Range("a2") <= 3000 Then

    Range("b2") = 0.03

  ElseIf Range("a2") > 3000 Then

    Range("b2") = 0.05

  End If

  End Sub

                                                                                                                               

Sub select區間判斷()

 Select Case Range("a2").Value

 Case 0 To 1000

   Range("b2") = 0.01

 Case 1001 To 3000

   Range("b2") = 0.03

 Case Is > 3000

   Range("b2") = 0.05

 End Select

End Sub

                                                                                                                                  

12.迴圈語句

   A.語句代碼

     Sub t1()

      Range("d2") = Range("b2") * Range("c2")   ’b2單元格與c2單元格相乘並賦值給d2單元格

      Range("d3") = Range("b3") * Range("c3")   ’b3單元格與c3單元格相乘並賦值給d3單元格

      Range("d4") = Range("b4") * Range("c4")   ’b4單元格與c4單元格相乘並賦值給d4單元格

      Range("d5") = Range("b5") * Range("c5")   ’b5單元格與c5單元格相乘並賦值給d5單元格

      Range("d6") = Range("b6") * Range("c6")   ’b6單元格與c6單元格相乘並賦值給d6單元格

     End Sub

  B.For each 迴圈語句

    Sub s1()

      Dim rg As Range

      For Each rg In Range("a1:b7,d5:e9")

        If rg = "" Then

           rg = 0

        End If

      Next rg

    End Sub

   ’註:在a1到b7單元區域和d5到e9單元格區域中的遍歷所有單元格,若為空,就賦值0。

C、For Next語句

   Sub t2()

   Dim x As Integer

    For x = 10000 To 2 Step -3

     Range("d" & x) = Range("b" & x) * Range("c" & x)

    Next x

   End Sub

   註:將10000行數據中每隔3行的b列和c列相乘賦值給d列。

D、For Each語句(應用offset方法來制定單元格)

   Sub t3()

   Dim rg As Range

    For Each rg In Range("d2:d18")

     rg = rg.Offset(0, -1) * rg.Offset(0, -2)

    Next rg

   End Sub

   ’註:offset就是偏移,針對d2而言,Offset(0, -1)指的就是向左移動1個單元格,即c2;Offset(0, -2)指的就是向左移動2個單元格,即b2;第一個參數是垂直移動,正為向上,負為向下;第二個參數是水平移動,正為向右,負為向左。

   

                12 offset函數分析圖

E.Do ……Loop Until語句

   Sub t4()

   Dim x As Integer

    x = 1

    Do

      x = x + 1

      Cells(x, 4) = Cells(x, 2) * Cells(x, 3)

    Loop Until x = 18

   End Sub

   ’註:Cell(行,列),即上文中的x指的是行。將第二列和第三列相乘賦值給第四列。

F.Do While……Loop語句

   Sub t5()

    x = 1

    Do While x < 18

      x = x + 1

      Cells(x, 4) = Cells(x, 2) * Cells(x, 3)

    Loop

   End Sub

   ’註:Cell(行,列),即上文中的x指的是行。將第二列和第三列相乘賦值給第四列。

G.Do ……Loop Until語句

   Sub s2()

    Dim x As Integer

    Do

      x = x + 1

      If Cells(x + 1, 1) <> Cells(x, 1) + 1 Then

         Cells(x, 2) = "斷點"

         Exit Do

      End If

    Loop Until x = 14

   End Sub

   ’判斷第1列中的數據不連續,就在其後的單元格輸入一個“斷點”。

13. 學習變數

   A、什麼是變數?

     所謂變數,就是可變的量。就好象在記憶體中臨時存放的一個小盒子,這個小盒子放的什麼物體不固定。

     Dim m As Integer

     Sub t1()

       Dim X As Integer 'x就是一個整形變數

       For X = 1 To 10

         Cells(X, 1) = X

        Next X

      End Sub

   B、小盒子里可以放什麼?

 

      1、放數字   2、放文本

        Sub t2()

       Dim st As String    ’st存放字元串

       Dim X As Integer    ’X存放整數類型

       For X = 1 To 10

        st = st & "Excel精英培訓"

       Next X

       End Sub

     3、 放對象

       Sub t3()

        Dim rg As Range      ’rg是單元格類型

         Set rg = Range("a1") ’Set關鍵詞就是給對象變數指定值

          rg = 100

        End Sub

    4、 放數組

       Sub t4()

          Dim arr(1 To 10) As Integer, X As Integer  

          For X = 1 To 10

            arr(X) = X

          Next X

       End Sub

      ’數組arr(1),arr(2),arr(3)……arr(10)都是整形類型

C、變數的類型和聲明

   1 變數的類型

     1)整型(Integer):

          表示-32768至32767之間的整數           例如:10   110   20

     2)長整型(Long):

          表示-2,147,483,648至2,147,483,647之間的整數

           例如:長整型的書寫:    23454444554     

     3)單精度實型(Single):

           有效數為7位 表示-3.37E+38至3.37E+38之間的實數

     4)雙精度實型(Double):

           有效數為15位

     5)字元型(String)

         VB中字元串常量是用雙引號“ ”括起的一串字元,例 如"ABC","abcdefg","123","0","VB程式設計"等。

    6) 邏輯型(Boolean)

         邏輯型又稱布爾型,其數據只有True(真)和False(假)兩個值

    7)日期型(Date)

         表示日期和時間

         用兩個“#”符號把日期和時間的值括起來       如:#08/20/2001#、#2001-08-20#

   2 為什麼要聲明變數

&nb

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ...
  • ...
  • 在本文中,我們將創建一個簡單的 Web API 來實現對一個 “todo” 列表的 CRUD 操作,使用 Apache Cassandra 來存儲數據,在這裡不會創建 UI ,Web API 的測試將使用 Postman 來完成。 ASP.NET Core 是 ASP.NET 的重大的重構,ASP. ...
  • 使用 Bundle 可以將多個 JS文件或 CSS 文件合併成一個文件,並且壓縮。這樣可減少瀏覽器需下載多個文件的請求時間,同時通過移除JS/CSS文件案中空白、批註及修改JavaScript內部函數、變數名稱的壓縮手法,能有效縮小文件案體積,提高傳輸效率,提高使用者的瀏覽體驗。 基本使用 Glob ...
  • 用菜鳥的思維學習演算法 -- 馬桶排序、冒泡排序和快速排序 【博主】反骨仔 【來源】http://www.cnblogs.com/liqingwen/p/4994261.html 馬桶排序 一、場景:期末考試完了,老師要將同學們的分數從高到低排序。假設班上有 5 名同學,分別考了 5 分、3 分、5 ...
  • 很多人認為關閉應用程式應該很簡單,例如WindowsForm里一個Application.Exit();方法就可以解決問題,但在WPF裡面可別濫用,因為WPF里Application類沒有該方法,倒是有一個Exit的事件驅動,在WPF應用程式裡面關閉程式講究很多: 在WPF應用程式的關閉是有Shut ...
  • using (Image image = Image.FromFile(arrFiles[0])) { MemoryStream stream = new MemoryStream(); image.Save(stream, System.Drawing.Imaging.ImageFormat.Pn ...
  • 親身經歷記錄下來,以備後用。也希望能夠幫助到有需要的朋友們! 1、安裝之前首先下載VS2015,下載地址: 【VS2015社區版官方中文版下載】:http://download.microsoft.com/download/B/4/8/B4870509-05CB-447C-878F-2F80E4CB ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...