循環結束后變回去 設置一個值_VBA掌握循環結構,包你效率提高500倍

572b3647fa2daf6645dd1679f3e74a06.png

這是系列免費教程《Excel VBA:辦公自動化》,還是老規矩,看看我們走到哪里了。

1.認識VBA:什么是VBA?

2.這些掌握了,你才敢說自己懂VBA

3.VBA變量5年踩坑吐血精華總結

4.VBA中重要的強制申明,誰看誰明白

2a64e780fde7be32fab58668a81cf762.png

我們先看上次分享的案例題目。

在「單元格B2」輸入不同的行號,點擊「顯示答案」按鈕,計算「F列」和「H列」對應行號的乘積,并將每個乘積結果加上公共值「單元格B4」的50,將最終結果顯示在相應的單元格。

c313efcc4a9bf3adb1f2d206b0c17d57.png

我們首先回顧一下上述的操作,我們先輸入不同題號,然后點擊宏按鈕,整個過程需要2步。

如果題目只有10道,好像看起來沒什么,但是如果題目有100道、1,000道或是更多的題目呢?

假設題目1,000道,輸入題號+點擊按鈕2連操作你僅需要1s(那得多快的手速),全部操作完就是1,000s,也就約為17分鐘。

如果這個題目的數字再進一步放大呢?我想時間成本就不可想象了。

其實,上述案例是我之前部門同事工作的簡化版,他經常要面對機械重復、枯燥乏味的Excel表格操作。

當然了,如今的他早已擺脫當年的那種苦海~

如果你也想早日擺脫機械重復、枯燥乏味的Excel表格操作苦海,下面2個知識點你一定要掌握。

1.for循環

案例:不輸入題號,僅點擊1次「顯示答案」按鈕,所有題目答案自動計算后顯示在「J列」

d9dd60a8e93347b3672f6c8cdd9919eb.png

我們來分析案例(僅以10道題目來分析)

0bc5ff91e05616a676fbf50c051182f7.png

我們觀察發現:行號是變化的,而且是「正向遞增加1」的規律。

在《變量》分享那篇文章,我們將這些變化的行號數字更改為「變量」,用x代替,程序被精簡為這樣:

5a4d339a48198d30df3ff286626a7519.png

那時,我們通過將「單元格B2」的值賦值給「變量x」,然后手動變更「單元格B2」的值,從而變更「變量x」的值,那么能不能讓「變量x」完全自動變化呢?

我們對之前的代碼小小改造一下,僅加2句「For循環結構」代碼即可輕松實現一鍵自動計算上述案例答案:

15cea52151a108637b7a96de72820826.png

我們把上述代碼單獨拿出來,分析一下

3a24c3f18ac8d7cbf1fd1d19a8253776.png

For循環主要分為3個部分,分別為:

(1)循環開始

標準的書寫格式為「For xxx = xxx To xxx Step xxx」,表示的意思是「變量xxx」的值從xxx變化為xxx,每次增加xxx

3018aa86cede677978f30caf4a76c400.png

(2)循環內容

循環內容根據工作需求書寫相關執行代碼就好,一般都是循環的核心代碼,比如這里的循環內容就是「J列某行單元格」=「F列某行單元格」*「H列某行單元格」+ 50

fa8ba9e242f9035ccfe07faf28560349.png

(3)循環結束

標準的書寫格式為「Next xxx」,表示的意思是「下一個xxx的值」

ad7c052163f05e8d296a1251966b4096.png

[備注]

a.「Step」可以取正整數和負整數,也可以省略不寫;當「Step」省略不寫時,值默認為1。

b.「Next xxx」中的「變量 xxx」可以省略不寫,但建議完整書寫,不省略。

我們來模擬一下上述「For循環結構」的程序運行過程:

(1)程序讀取「循環開始」語句「For x = 1 To 10 Step 1」

c2a2ac2ff4e14ade16ff9d1301ea3bdc.png

由于我們使用了「For循環開始」,并且嚴格規定了「變量X」的值從1變為10,每次僅增加1,即:x可以取1 2 3 4 ...10。而本次「x = 1」

(2)讀取第2句「循環內容」代碼「Cells(x, 10) = Cells(x, 6) * Cells(x, 8) + h」

3eebc86f09e3c11ded2f9543879932ea.png

由于第1句代碼確定了「x = 1」,而「Cells(4, 2) = 50」以及「h = Cells(4, 2)」,那么「h = 50」。因此,上述代碼可以翻譯為:「單元格J1」= 「單元格H1」* 「單元格F1」+50。最后,程序到單元格獲取對應的值即可。

(3)讀取第3句「循環結束」代碼「Next x」

55e6f817ad732bf7bcfe8fc09a1ff6a6.png

此時,「變量 x = 2」

(4)程序回到第1句讀取「循環開始」語句「For x = 1 To 10 Step 1」

0890bef31598b3ad4ce14abdb162b1dd.png

我們可以看到此時程序自動返回「循環開始」的地方,由于此時「變量 x = 2」仍然符合「X 從 1 變為 10 每次增加1」這個區間,因此程序接著運行,一直等到「變量 x = 11」的時候,程序會跳出循環,執行下一個語句。

(5)我們看下最終的程序的執行結果

fb113f1c5a047a777d4f519b5907c024.png

看到這里我們大家也許就明白了,所謂的「For循環結構」就是:

提前設置一定的條件或規則,然后程序自動按照設定的條件或規則自動運行,等到不符合設定的條件或規則時,程序跳出循環結構,執行下一個句子。

那么,我們就可利用「For循環結構」這種符合條件自動運行的特性,根據工作場景書寫相關代碼即可。

2.代碼排版

按照馬斯洛的需求層次理論,我們在達到一定的需求層次之后,會追求更高的需求層次。

那么,這句話應用到VBA代碼領域就是:在我們掌握了一定的代碼基礎之后,我們就希望掌握更強的VBA技能。(這些技能你只要跟著我們的VBA分享課一步一個腳印練習,一定能夠驚嘆自己的超能力)

但真正的VBA高手不僅取決于VBA代碼實力,還取決于自己寫的代碼別人能不能看懂,也包括自己日后能不能看懂。(別問我為什么,因為我經歷過翻譯自己代碼的痛苦)

0d10ecd8eb9dd6eec9d58d74c83a0b5b.png

很明顯,更喜歡右邊的排版,因為它排版干凈、代碼從屬關系清晰,更易閱讀。

所以說,我們不僅要多金(技能強),還要帥氣(排版好)

那么,如何實現上述帥氣的排版呢?很簡單,戳一下就可以

(1)按「Tab」代碼縮進

cbfe318dc026c8d1b9becfa98eb75d33.png

(2)點選VBE編輯器的縮進按鈕

3c75fe1a2d5803688ce61f5bbe142002.png

正所謂:“帥氣”VBA路,從Tab起步

3.總結

(1)For循環結構

提前設置一定的條件或規則,然后程序自動按照設定的條件或規則自動運行,等到不符合設定的條件或規則時,程序跳出循環結構,執行下一個句子。

de9c2af2c38051954ed27b0ae1ca3256.png

(2)VBA代碼排版

“帥氣”VBA路,從Tab起步

42c4c7d5cbfba9c7caa9369040f77d03.png

推薦:人工智能時代的必學技能

5d6c82e179fb2287a8ace19c8eaf2877.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257698.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257698.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257698.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

連接到kali linux服務器上的MySQL服務器錯誤

前言:想把數據庫什么的都放在虛擬機kali Linux里,但無奈出了好多錯誤。 首先:可以參照上一篇文章開啟kali服務器端的遠程連接功能,上一篇文章 然后:使用window端的sqlyog(MySQL圖形化連接工具)連…

dedecms后臺怎么添加發布軟件?織夢后臺軟件內容管理

使用織夢cms有很多的功能,其中有一個是在dedecms后臺添加發布軟件,然后在前臺大家可以直接下載軟件,在織夢cms后臺怎么添加發布軟件呢?下面是織夢軟件內容管理的主要操作步驟。使用織夢cms有很多的功能,其中有一個是在…

301 302區別_如何正確理解301,302和canonial標簽

今天我們來學習一下幾個比較容易混淆的頁面跳轉標簽,301,302,relcanonial。在谷歌SEO里面,我們比較容易常見的是第一個301,302和canonial出現的比較少,但是不代表不存在,我會嘗試從以下價格方面…

ffmpeg文檔08-表達式計算/求值

8 表達式計算/求值 在計算表達式時,ffmpeg通過libavutil/eval.h接口調用內部計算器進行計算。 表達式可以包含一元運算符、運算符、常數和函數 兩個表達式expr1和expr2可以組合起來成為"expr1;expr2" ,兩個表達式都會被計算,但是新…

為什么手機游戲手柄沒有流行起來?

問答社區知乎上有人提了一個問題,“為什么手機用游戲手柄沒有流行?” Ta找了不少論證:1)手機用戶數量很大;2)大量用戶在手機上花費最多時間的是玩游戲;3)游戲機平臺(的游…

c++排序算法ppt_C/C++學習教程:C語言排序算法—插入排序算法

前言:插入排序算法是所有排序方法中最簡單的一種算法,其主要的實現思想是將數據按照一定的順序一個一個的插入到有序的表中,最終得到的序列就是已經排序好的數據。直接插入排序是插入排序算法中的一種,采用的方法是:在…

python函數參數

1.位置參數 2.默認參數 指向參數為不可變對象 3.可變參數 **args 一個列表list或是元組tuple 4.關鍵字參數 **kw,是一個字典dict 5.命名關鍵字參數 *, 轉載于:https://www.cnblogs.com/aliy-pan/p/5198025.html

Python 常用函數 configparser模塊

使用ConfigParser模塊讀寫ini文件 ConfigParserPython的ConfigParser Module中定義了3個類對INI文件進行操作。分別是RawConfigParser、ConfigParser、SafeConfigParser。模塊所解析的ini配置文件是由多個section構成,每個section名用中括號‘[]’包含,每…

自制Unity小游戲TankHero-2D(3)開始玩起來

自制Unity小游戲TankHero-2D(3)開始玩起來 我在做這樣一個坦克游戲,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)這個游戲制作的。僅為學習Unity之用。圖片大部分是自己畫的,少數是從網上搜來的。您可以到我的github頁…

mysql按月分列統計_實現mysql按月統計的教程

mysql有個字段是DATETIME類型,要實現可以按月統計,該怎么寫sql語句?select month(f1) from tt group by month(f1)or select DATE_FORMAT(f1,%m) from tt group by DATE_FORMAT(f1,%m)比如數據庫的為2008-01-15 12:10:…

Log4j的擴展-支持設置最大日志數量的DailyRollingFileAppender

Log4j現在已經被大家熟知了,所有細節都可以在網上查到,Log4j支持Appender,其中DailyRollingFileAppender是被經常用到的Appender之一。在討論今天的主題之前,我們先看下另外一個Appender。 最常用的Appender——RollingFileAppend…

VirtualBox虛擬機安裝CentOS 7

新建虛擬機 因為比較簡單,所以對于VirtualBox就不做過多介紹了,直接下載安裝即可,安裝好之后打開Oracle VM VirtualBox管理器,點擊新建,選擇Red Hat(根據windows主機選擇 32/64 bit,通常會自動識…

mysql 指定賬戶已存在_安裝mysql時告訴我指定的賬戶已存在?

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云數據庫專家保駕護航,為用戶…

C語言:用字符讀取流和輸出流來讀寫入數據。(文本文件)

/* 文件的幾種操作模式: r:只讀 w:只寫 rw:可讀可寫 文件的分類: t:文本文件(字符文件) b:二進制文件(字節文件)注意: 采用只讀方式打開文件時,如果源文件不存在,打開文件會失敗! 采用只寫方式打開文件時,不管源文件存不存在,都不會失敗…

PC 上訪問設備數據庫的方法

通過 .NET 訪問 .sdf 的數據庫的方法: 在 VS2005 IDE 中,創建 SQL MOible 數據庫,編輯表結果和填充數據。 具體是在 Server Explorer 中,右鍵單擊 “Data Connections”,選擇 “Add Connection”,新建一個 …

模板原理和操作數據類的觀點【艱難的一天,慢慢的會過去的】

1.模板原理:視圖類【將數據輸出到模板中,實現對視圖的控制】 smarty的類實現對視圖的控制【展示和smarty的基本語法:smarty需要它的庫進行支持】 面向對象的編程中對象的訪問和類的訪問本質上還是代碼空間的訪問,區別也在于對象的…

mysql 用戶 類別_從mysql里讀取用戶類型

##1、后端1(從mysql里讀取用戶類型):from django import formsfrom django.forms import widgetsfrom django.forms import fieldsfrom app01 import modelsfrom django.forms import ModelChoiceField,ModelMultipleChoiceFieldfrom django.shortcuts import rende…

從C語言到C++成長經歷所得的一些技巧和感悟

我介紹幾個辦法,學習辦法,期望你能找到愛好1。必定要和喜愛編程的,或編程兇猛的,或常常編程的人,在一同,常常探討問題!初學編程會有許多問題呈現,你自己很 難處理 c是我們必定要學的…

老子《道德經》第三十三章

上德不德,是以有德;下德不失德,是以無德。 上德無為而無不為,下德為之而有以為,上仁為之而無以為,上義為之而有以為。 上禮為之而莫之應,則攘臂而扔之。 故失道而后德,失德而后仁&am…

[Spring]-各種標注-零配置

個人學習筆記,記錄了一些比較基礎的標注; 1、controller 控制器(注入服務)2、service 服務(注入dao)3、repository dao(實現dao訪問)4、component pojo實例化到spring容器中&#xf…