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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...