VBA學習筆記 1-2

2021-02-19 瘋子穆澤

Sub variantdemo()

myvar = "123"

myvar = myvar + myvar

myvar = "answer:" & myvar

MsgBox myvar

End Sub

測試結果:

dim 聲明數據類型

Sub variantdemo()

Dim x As Integer

Dim first As Long

Dim interestrate As Single

Dim todaysdate As Date

Dim username As String

Dim myvalue

'-the procedure's code goes here-

End Sub

Integer(整數)

模塊所有過程均可以使用變量

Dim currentvalue As Long

Sub procedure1()

End Sub

Sub procedure2()

End Sub

均有權訪問 currentvalue

靜態變量 static  



sub mysub()

static counter as long

end sub

常量 const語句  常量聲明某種特定的數據類型 
const numquarters as integer =4

const rate=0.0725,period =12

const modname as string="budget macros"

public const appname as string="budget application"

對常量進行賦值時不被允許的。

字符串規定:
dim mystring as string *50  最大五十 

dim yourstring as stting   

賦值語句:
進行數學計算並將結果賦給某個變量或對象
x=1 

x=x+1

x=(y*2)/(z*2)

fileopen =true

fileopen =not fileopen

rang("theyear").value=2010「

數組 一組擁有相同名稱的同類元素。
終於找到我出問題的部分了 哇咔咔

聲明數組
dim 或 public 
dim myarry(1 to 100)as integer

必須指定上界 

dim myarry(100)as integer  

效果一樣

聲明多維數組
dim myarry(1 to 10,1to 10)as integer
10*10 矩陣

聲明動態數組 

dim myarray()as integer

dim myarray (1 to X)

對象變量:

書上是這樣寫的

然而我無法運行 !!!!!

經過我百度和浪費時間後,我得到了正確的個格式:

Function noobjvar()

 Dim mycell As Range

 Set mycell = Worksheets("sheet2").Range("A1")

 mycell.Value = 124

 mycell.Font.Bold = True

 mycell.Font.Italic = True

 mycell.Font.Size = 14

 mycell.Font.Name = cambria

 

End Function

開始語句不一樣! 

用戶自定義數據類型
需要創建一個customerinfo 自定義數據類型。

dim customers(1 to 100) as customerinfo

內置函數

Sub showroot()

Dim myvalue As Double

Dim squareroot As Double

myvalue = 25

squareroot = Sqr(myvalue)

MsgBox squareroot

End Sub

sqr 函數等同於excel 中的sqrt工作表函數。

emmmmm  書上的和我寫的 我他娘 具體原因我也不知道

msgbox 是最有的vba函數之一

簡單自定義對話框的一個很好替代品。顯示一個對話框,代表了用戶對該對話框的反應。

msgbox 函數正式的語法包含5個參數。(方括號中的參數是可選的)
msgbox(prompt [,buttons] [,tittle] [, helpfile,context])

prompt (必需的):該消息顯示在彈出的對話框中。

buttons (可選的):指定在消息框長出現哪些按鈕和圖標的值。使用內置常量,如 vbYesNo
title( 可選的):出現在消息框標題欄中的文本,默認值為Microsoft excel
helpfile (可選的)與消息框關聯的幫助文件的名稱。

context (可選的) 幫助主題上下文id 它表示要顯示的某個特定的幫助主題,如果使用了context參數,還必須使用helpfile參數

處理對象和集合:

VBA 提供了兩個重要的結構,這些結構可以簡化對象和集合的處理。

with-end with 結構

for each-next 結構

with-end with 結構:允許在單個對象上執行多項操作。

Sub changefont1()

Selection.Font.Name = "cambria"

Selection.Font.Bold = True

Selection.Font.Italic = True

Selection.Font.Size = 12

Selection.Font.Underline = xlUnderlineStyleSingle

Selection.Font.ThemeColor = xlThemeColorAccent1

End Sub

可以直接替換成下文格式:

Sub changefont2()

With Selection.Font

.Name = "cambria"

.Bold = True

.Italic = True

.Size = 12

.Underline = xlUnderlineStyleSingle

.ThemeColor = xlThemeColorAccent1

End With

End Sub

for each-next 要對集合所有對象求值並在特定條件下採取動作

語法結構:

運行時顯示 類型不匹配

Sub countsheets()

Dim cnt As Integer

Dim win As Window

cnt = 0

For Each win In Windows

If Not win.Visible Then cnt = cnt + 2

Next win

MsgBox cnt & " hidden windows."

End Sub

for each-next 結構常見一個用法是遍歷單元格區域中的所有單元格。

Sub selectnegative()

  Dim cell As Range

  For Each cell In Range("1:1")

    If cell.Value < 0 Then

      cell.Select

      Exit For

    End If

  Next cell

End Sub

插入一個if-then 結構檢查單元格是否為負值 ,是 結束循環

控制代碼的執行。

goto 語句
VBA只有在一種情況下必須使用Goto語句 那就是進行錯誤處理時。

if-then 結構

基本語法:

if condition then true_instructions [else false_instructions]

excel 中 if(規則,是,否) 【類比記憶】

Sub greetmel()

If Time < 1.5 Then MsgBox "good morning"

End Sub

Sub greetme2()

If Time < 0.5 Then MsgBox "good morning"

If Time >= 0.5 Then MsgBox "good afternoon"

End Sub


可以修改成 if-then else 句子

Sub greetme3()

If Time < 0.5 Then MsgBox "good morning" Else MsgBox "goodafternoon"

End Sub

高階版本:

VBA的iif函數

語法格式:iif(expr,truepart,falsepart)

exper(必需的) 需要求值的表達式

truepart(必需的) 當exper返回為true時,返回的值或表達式。

falsepart (必需的) 當expr 返回為false時,返回的值或表達式。

select case 結構

Function greetme()

    Dim meg As srring

    Select Case Time

        Case Is < 0.5

            msg = "good morning"

        Case 0.5 To 0.75

            msg = "good afternoon"

        Case Else

            msg = "good evening"

    End Select

    MsgBox msg

End Function

for-next 循環

for counter =starts to end [step stepval ]

  [instructions]

  [exit for]

  [instructions]

next [counter]

Sub sumsquareroots()

    Dim sum As Double

    Dim count As Integer

    sum = 0

    For count = 1 To 100

        sum = sum + Sqr(count)

    Next count

    MsgBox sum

End Sub

do while 循環 :只有在滿足指定條件(true)時才會執行 do while 循環。

語法格式:
do [while conditon]

    [instruction]

    [exit do]

    [instructions]

loop   '可能從來不執行循環內容

do 

    [instruction]

    [exit do]

    [instructions]

loop [while conditon] 『至少執行一次循環內容

do until 語句   一直執行循環,直至循環條件值未true

語法格式:

do [until condition]

    [instructions]

    [exit do]

    [instructions]

loop


do 

    [instructions]

    [exit do]

    [instructions]

loop [until condition]

相關焦點

  • VBA學習筆記 1-1
    alt+11調出vba窗口ctrl+r 調出工程資源管理器vba續行符_獲取sheet1 中A1  輸入下列代碼:application.thisworkbook.sheets("sheet1").range("A1").select代碼2:range("A1
  • excel VBA是什麼?VBA編程入門教程
    excel vbaVBA對於沒有學過計算機語言的人來說會很陌生,會被它陌生的語句所嚇倒,從而放棄對它的學習。但是小編可以告訴大家,VBA其實很簡單。二、vba編程入門教程1、打開vba編輯器打開vba編輯器有下邊三種方法供大家使用:方法1:點擊excel菜單中的【開發工具】(如果沒有開發工具選項卡,請參考:
  • VBA編程理論學習之談
    No.1 掌握對象方法和屬性VBA編程是一個即學即用的過程,幾乎不可能全面掌握所有對象的代碼,也不可能記住所有的對象屬性。所以,在實際應用中遇到哪些對象就對應去掌握這些對象的方法和屬性就可以,不需要完全學習。既浪費時間又沒有意義。鑑於對Excel的整理和學習,很有必要對這個月來的學習經過總結一下。
  • Excel VBA入門教程1.1 數據和數據類型
    1 語法說明都知道學會了英語語法,再加上大量的詞彙基礎,就算基本掌握了英語了。
  • EXCEL學習筆記之VBA
    Array創建數組,如Dim arr As  Variantarr=Array(1,2,3,4(6) 將數組中的數據寫入單元格區域arr=Split(1,2,3,4,5,6 4、在vba中直接使用工作表函數要加前綴Application.WorksheetFunction
  • 「Python替代Excel Vba」系列(終):vba中調用Python
    外部傳入的是字符串,比如參數 groups 可以是 "col1,col2",因此需要對 groups 和 values 參數調用 split 分裂成列表。然後就順序調用之前定義的2個方法 where_df 和 group_df。
  • Address屬性介紹,vba編程學習基礎知識
    No.1Address是Range對象的一個重要屬性,而用好這個屬性也是學習vba編程一個必修課。本章介紹關於Address的一些參數功能,對於全面了解和學習Range地址尋址方面十分必要。Address英譯為地址。
  • vba第十八課
    vba第十八課調用工作表函數在vba中我經常會對工作表的數據進行一些運算,雖然通過代碼進行循環或判斷也可以完成,但是通vba調用函數可以更簡單更直接進行運算提高代碼的運行效率,比如countif、sumif等需要進行判斷統計和求和的運算。
  • vba字典功能介紹,Excel辦公效率就這麼高
    vba字典功能十分有用,如果對其它編程有一定了解,那麼對於字典也不陌生,它代表著高效和強大的數據處理功能。字典功能介紹那麼如何在vba中運用字典功能?n = VBA.Rnd() * (Dicobj.Count - 1) + 1 '隨機取值 nX = VBA.Split(Dicobj.Item(Range("A" & n).Value), " ") Cx = VBA.RGB(nX(0), nX(1), nX(2)) '顏色值 MsgBox "鍵名:" & Dicobj.Keys()(n) & VBA.vbCrLf
  • VBA基礎入門(6)簡單的字符串處理函數(1)
    VBA課程每周的次數為2節(周六,周日),後期可能會根據大家需求調整課程安排,在平常也歡迎大家來聊Kevin相關問題,不相關也行,hiahia。下面我們進入今天的正題,今天要講的是簡單的字符串處理函數。在Kevin看來無論哪門語言,字符串的處理都佔據著重要的位置。我們今天先來說說下面3個函數。我們先從例子來了解一下你們的含義。
  • MySQL學習筆記 PART 1
    做筆記的最終目的是為了能夠記住內容不再翻看筆記,所以內容大於形式,以幫助學習記憶為主。在有外部資料做補充的前提下,花儘量少的時間整理筆記,花更多的時間把內容記到腦子裡和做練習更為重要。, 1, 10), (DEFAULT, 'product2', 2, 20), (DEFAULT, 'product3', 3, 30)插入分級行---訂單表(orders表)裡的一條記錄對應訂單項目表(order_items表)裡的多條記錄,一對多,是相互關聯的父子表。
  • 原創書籍 |《VBA從入門到放棄》
    單擊文末「閱讀原文」可自動跳轉📺Part.1.A.what-is-vba(認識VBA)(一)我怎麼認識VBA的?17年公司的規模並不大,大概不到8家專賣店,從提取數據、整理數據、分析數據、匯報數據,每家門店大概需要2個小時,那8家門店大概16個小時,差不多2-3天完成,當然手動製作的數據報表難免出錯,算上差錯耗時,大概3-4天完成工作,這些聽起來挺正常的。
  • Excel VBA新手學習筆記 基礎循環控制論
    VBA 175例教程(私信回復175),本文是新手整理出來的筆記,雖然名字高大上但內容多為基礎,也難免有錯誤,希望大家批評指正。循環基礎1>>循環的種類與解釋1.1 數值型變量循環寫法為For i = …to …/next 循環變量一般為數值且知道具體對象,步長值(step)為1的時候可省略不寫,為負數時是倒著循環,刪除空白單元格的時候通常是倒著循環
  • 2021.1.30注會會計學習筆記(第七章)成本法轉權益法(2)
    成本法轉權益法(2)【教材例題】 20× 7年 1月 1日,甲公司支付 600萬元取得乙公司 100%的股權,投資當時乙公司可辨認淨資產的公允價值為 500萬元,商譽 100萬元。2021.1.21注會會計學習筆記(第七章)(同一控制下控股合併長投初始計量)2021.1.22注會會計學習筆記(第七章)(非同一控制下控股合併長投初始計量)2021.1.23注會會計學習筆記
  • VBA究竟值不值得審計學?
    這兩個案例我在《審計效率手冊》裡有提到:1當年,分所需要將全所所有審計過的上市公司的財務報表按財政部下發的模版填寫,上傳。這是一個巨大的工作量,離上交的日期只有3天。2當時,另外部門的同事做一個資產證券化的項目,搞了個概率分布,建了個模型,開始他們是手算,算一次要3個小時。券商經常變參數,每變一次就重新算3個小時。
  • 如果你是學習Excel的朋友,對VBA這個應該概念不陌生吧?
    我們下面說說VBA的優缺點:1:作為程序語言和其他開發語言比較,VBA的特點:(1)"天然"強大的輸入輸出平臺,Excel的控制項功能非常強大(2)使用便捷,無需搭建任何環境,隨時可以用,無需保存,編譯,即可運行;代碼數據一體化
  • Excel VBA 實例(22) - 一鍵篩選其他工作表或工作簿的數據
    今天說的這個vba實例還是和學校有關。
  • 一個新手關於Excel VBA中IF條件判斷語句的學習理解心得
    而整個流程中判斷也的確有著控制流程走向的作用,可以說循環,判斷,數組是vba的三駕馬車,絕大部分的問題都是他們仨來解決的。其中for循環和if是新手最先學到的東西,今天我就來分享一下我這個新手在安裝"閥門"的時候遇到過的坑。
  • Excel VBA入門教程 1.6 過程和函數
    1.6.1 Sub 過程[Private|Public] [Static] Sub 過程名([參數列表 [As 數據類型]]) [語句塊]End Sub' [Private|Public]定義過程的作用範圍' [Static]定義過程是否為靜態' [參數列表]定義需要傳入的參數調用Sub的方法有三種,使用Call
  • 學習筆記系列NO.1 SQL學習筆記及資料分享
    本期就是一期非常良心的學習資料分享~希望大家能覺得有用~為什麼學SQL呢,就是因為看到越來越多的產品崗,數據崗,戰略崗甚至營銷崗都開始要求會使用