展开

关键词

VBA进阶:基础扩展17. 链表

图1在VBA中,使用类模块,也可以实现链表结构。下面,以实现顺序链表为例来讲解如何使用VBA代码创建链表。在VBE中,先插入两个类模块:ListItem类模块和List类模块。 As Boolean 初始化当前节点为头节点 bFound = False Set listPrevious =Nothing Set listCurrent =ListHead 链表不为空则循环 Do While Not listCurrent Is Nothing 查找给定的值,如果当前值不是,则后移 With listCurrent If varItem >.Value Then Set listPrevious = listCurrent Set listCurrent = .NextItem Else Exit Do End If End With Loop 如果找到,则返回True If Not listCurrent While Not listCurrent Is Nothing Debug.Print listCurrent.Value Set listCurrent =listCurrent.NextItem

90220

VBA实战技巧35:使用VBA组织图形2

引言:本文的代码与昨天发表的《VBA实战技巧34:使用VBA组织图形1》一样,都整理自mrexcel.com,一个很好的令人兴奋的示例,有兴趣的朋友可以仔细研究。 代码所使用的工作表数据与《VBA实战技巧34:使用VBA组织图形1》相同,如下图1所示,包含所需信息的源数据表,其中:列A和列B – 两个元素之间的关系。形状填充颜色将来自列A。 图1 与《VBA实战技巧34:使用VBA组织图形1》不同,本文的代码自顶向下组织图形,代码运行后的效果,如下图2所示。 While Src.Cells(L, 1) IfSrc.Cells(L, 2) = Src.Cells(L, 3) Then SetQNode = oshp.SmartArt.AllNodes.Add AddChildNodes QNode, Source, CurPid Set QNode = ParNode 已排序,找不到其他任何东西 ElseIf Found Then Exit Do Else

13240
  • 广告
    关闭

    2021云+社区年度盘点发布

    动动手指转发活动或推荐好文,即可参与虎年公仔等百份好礼抽奖!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    社群答疑精选03:拆分数据到新工作表

    图1这种问题最适合使用VBA来解决。仔细观察后发现,户主对应的人数就是该户家庭在工作表中所占的行数,这样只要定位到户主,就知道了该户所有成员的范围,这就方便提取相应的数据了。 VBA代码如下:Sub test1() Dim lngLast As Long Dim str As String Dim rng As Range Dim rngData As Range Dim firstRng =str,LookIn:=xlValues) 如果找到 If Not rng Is Nothing Then 获取第1个找到的数据的单元格地址 firstRng = rng.Address 继续查找 Do - 1).Copy wks.Range(A1).PasteSpecial xlPasteAll 查找下一个数据 Set rng =rngData.FindNext(After:=rng) Loop While arr1(i) = rng.Row i = i + 1 ReDim Preserve arr1(i) 查找下一个 Set rng =rngData.FindNext(After:=rng) Loop While

    15420

    深探 whiledo while

    我们很多时候刷题会用到循环,对whiledo while分辨得可能不是很清楚,那么今日我们就来一探究竟。 循环中的关键字:whiledo while简单来说,whiledo while最大的区别便是while会先判断再执行语句,而do while便是先do(执行)再判断,也就是说do while不管条件是否成立 while语句:入口条件循环 1.while循环的通用形式如下:while(){ 循环体; }2.终止while循环:while循环有一点非常重要:在构建while循环时,必须要让测试表达式的值有变化, do while语句:出口条件循环 何为出口条件循环呢,即在循环的每次迭代之后检查测试条件,保证至少能执行一次循环体中的内容。 1.do while循环的通用形式如下: do{ 循环体 }while();注:do while语句以分号结尾 那么最后我们该如何选择使用哪一种语句呢?

    15220

    VBA循环结构没过瘾,那就再来一篇

    image.png这是免费教程《Excel VBA:办公自动化》的第10节,介绍while循环结构。1.认识VBA:什么是VBA? 2.这些掌握了,你才敢说自己懂VBA 3.VBA变量5年踩坑吐血精华总结4.VBA中重要的强制申明,谁看谁明白5.VBA掌握循环结构,包你效率提高500倍6.精通VBA分支结构,少写程序100行7.VBA 程序报错,用调试三法宝,bug不存在的8.VBA字符串介绍,这篇就够了9.还自己写代码? 用法1是由关键字「WHILE」和「WEND」组成,而用法2由关键字「DO WHILE」和「LOOP」组成,二者表达意思一样。由于2的用法更加丰富和灵活,因此我们见到它的频率也更高些。 2)WHILE循环结构分为2大类语法,一种是「WHILE…END」,另一种是「DO WHILE…LOOP」。好了,这个懒人智能循环结构,你学会了吗?

    21800

    4.1 whiledo...while循环

    一、while循环 一般形式:while(表达式)语句,其中语句就是循环体注意:只要循环条件表达式为真(即给定的条件成立),就执行循环体语句例子:?结果:? 二、do...while循环一般形式:do 语句while(表达式)注意:先执行循环体,然后再检查条件是否成立,若成立,再执行循环体例子:?结果:?

    1713329

    VBA大牛用了都说好的嵌套循环

    2.这些掌握了,你才敢说自己懂VBA 3.VBA变量5年踩坑吐血精华总结4.VBA中重要的强制申明,谁看谁明白5.VBA掌握循环结构,包你效率提高500倍6.精通VBA分支结构,少写程序100行7.VBA 通俗解释就是:IF循环和WHILE循环大家组合在一起。你中有我,我中有你,实现工作的实际需求。2. image.png 通过上图展示的代码,我们可以看到整个代码的核心架构采用了3层嵌套结构,分别为:第1层的Do...While循环结构,其主要用来控制表格「行」方向的循环;第2层的For循环结构,其主要用来控制表格 2)程序执行Do...While循环体 image.png 程序读取「Do While Cells(i, 2) 」表明程序进入了第1层的「行循环」,换句话就是:单元格B3的值是否为空? 当程序符合「Do While Cells(i, 2) 」这个条件时,程序将继续执行下一轮。一旦不符合上述条件,那么整个程序将跳出「Do...While」循环。

    23500

    问与答66: 如何不打开Excel文件删除行?

    A:可以使用下面的VBA代码:Sub DeleteRows() 声明变量 Dim FilePath As String Dim fFile As String Dim fName As String Dim Right$(FilePath, 1) Then FilePath = FilePath & End If 获取文件 fFile = Dir(FilePath & *.xlsx) 遍历文件夹中的文件 Do While fFile 忽略当前工作簿 If fFile fName Then Set WB = Workbooks.Open(FilePath& fFile, UpdateLinks:=0) ActiveWorkbook.Sheets (1).Rows(1:3).Delete Shift:=xlUp Application.DisplayAlerts = False ActiveWorkbook.Save ActiveWorkbook.Close

    30210

    whiledo while循环语句

    HTML5学堂:在JS的循环语句当中,for、for-in的确是使用管比较频繁的,但是额外还有两种循环语句,一种是while语句,一种是do-while语句,今天主要讲解这看两种语句,并比较一下它们与for 学过计算机都会接触到循环,循环有很多种,今天我们就来看看whiledo while的区别吧while语句语法:while(判断条件){}while循环满足条件后执行大括号内的内容,下面我们来直接看下demo 只有当达到条件时累加才会被执行demo: var sum = 0;声明变量sum用于累加求和 var i = 1;声明变量i用于条件判断 while(i

    53070

    whiledo while循环语句

    这节课我们来学习一下while,和do while语句,这两个也是循环语句一、while 语句的含意很简单,它告诉 PHP 只要 while 表达式的值为 TRUE就重复执行嵌套中的循环语句$i = 1 ;while ($i 0);

    13520

    5.7 do...while循环

    01介绍 1、除了while语句以外,C语言还提供了do...while语句来实现循环。 2、一般形式do 语句 while(表达式)其中语句就是循环体,先执行一次指定的循环语句,然后判别表达式,当表达式的值为非零(“真”)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0(“假”) 3、do...while语句的执行过程是,先执行循环体,然后再检查条件是否成立,若成立,再执行循环体。 02 小案例int i=1;设置变量i的初值为1do{ 循环结构开始 printf(“%d”,i++); 循环体,输出i的值,然后使i+1 }while(i

    2063029

    VBA实战技巧07: 阻止用户按Ctrl+Break键中断代码运行

    此时,VBA会弹出如下图1所示的消息。? 要阻止按Ctrl+Break键中断代码的执行,可以在程序中添加下面的语句:Application.EnableCancelKey= xlErrorHandler这个语句指示VBA不要显示“代码执行被中断 如果将其设置为xlDisabled,则告诉VBA停止响应用户按下Ctrl+Break键的操作。如果将其设置为xlInterrupt,则正常响应用户按下Ctrl+Break键的操作。 While Timer - t < 5 Loop MyErrorHandler: If Err.Number = 18 Then MsgBox 按Ctrl+Break键中止!!! While Timer - t < 5 Loop Application.EnableCancelKey = xlInterrupt Do While Timer - t < 8 Loop MyErrorHandler

    47510

    第五章 调试:do-while循环:while循环和do-while循环的区别

    # include # include using namespace std; int main(){ unsigned seed; while (true){ cin >> seed; srand(

    12630

    C++巧用do...while(0)

    C++中,有三种类型的循环语句:for、whiledo...while在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。  do...while(0)或do...while(false), 比如: #define AFXASSUME(cond)       do { bool __afx_condVal=!! ,我要这个看似多余的do...while(0)有什么意义呢?   为了看起来更清晰,这里用一个简单点的宏来演示: #define SAFE_DELETE(p) dodelete p; p = NULL} while(0) 假设这里去掉do...while(0),  你可能发现,为了避免这两个问题,我不一定要用这个令人费解的do...while,  我直接用{}括起来就可以了 #define SAFE_DELETE(p) { delete p; p = NULL;}

    38420

    VBA代码库08:获取字符串中指定位置的子字符串

    excelperfect下面的自定义函数:ExtractString函数,来源于《VBA Developer’s Handbook》,对于分析字符串来说,是一个很有用的函数。 While iLoop > 0 iLastPos = iPos iPos1 = InStr(iPos + 1, strIn,Left$(strDelimiter, 1)) If iPos1 > 0 Then 则提取子字符串 ExtractString = Mid$(strIn, _ iLastPos + 1, iPos - iLastPos - 1) End IfEnd Function在代码中,使用了《VBA 代码:Do While iLoop > 0 iLastPos = iPos iPos1 = InStr(iPos + 1, strIn,Left$(strDelimiter, 1)) If iPos1 While True strSubText = ExtractString(strSourceText, i, =,) If Len(strSubText) = 0 Then Exit Do End

    1.1K10

    MyVBA加载宏——添加自定义菜单04——功能实现

    有了前面的功能分析基础,使用VBA代码实现这个功能就不是很难了,逐行读取CommandBarDir.txt里面的信息,然后创建弹出式菜单或者按钮,最终实现的效果如下:? 类模块功能类模块CCommandBar就是为了响应单击按钮的功能:根据单击的按钮的名称,读取对应名称的txt文件将读取到的文本插入到VBE中所以,分别先实现2个函数,读取txt文件的内容在前面有过介绍: VBA = vbaCodesCommandBarDir.txt On Error Resume Next Application.VBE.CommandBars(1).Controls(sBAR_NAME).Delete Open ThisWorkbook.Path & VBACodes For Input As #num_file 跳过标题行 Line Input #num_file, bar_info.Caption Do 工程对象模型的访问,如何设置请参考VBA操作VBA——VBA工程对象。

    23730

    while循环与dowhile循环的区别

    while循环与dowhile循环的区别while 先判断再执行 不满足循环条件时 一次都不会执行 dowhile 先执行再判断 不管任何情况都至少执行一次

    7730

    C++ do while无限循环~

    参考链接: C++ whiledo ... while循环#includeusing namespace std;#includeint main(){        int i=10;    int sum = 0;    system(color A4);    do    {        sum += i;        i++;        cout

    15640

    C语言 | do while语句

    C语言do while介绍 除了while语句以外,C语言还提供了do...while语句来实现循环。 一般形式do    语句while(表达式)其中语句就是循环体,先执行一次指定的循环语句,然后判别表达式,当表达式的值为非零(真)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0(假)为止,此时循环结束 C语言do while注意事项 C语言do...while语句的执行过程是,先执行循环体,然后再检查条件是否成立,若成立,再执行循环体。 C语言使用do while语句求1+2+3+...+10的和#include头文件int main()主函数{  int i=1,sum=0;定义变量  do{    sum=sum+i;    i=i +1;  }while(i

    21820

    VBA实用小程序49: 列出所有打开工作簿中的VBA模块和过程

    Jon Peltier改编了VBA过程,可以列出当前所有已经打开的工作簿中所含有的VBA模块和过程清单。在输出工作表中,前两行为模块所在工作簿名称和工程名称。 并且,代码会绕过受保护的VBA工程,同时如果工作簿中没有代码,也会在输出工作表中说明。 遍历工程中的每个组件 For Each vbComp InvbProj.VBComponents 找到代码模块 Set vbMod = vbComp.CodeModule 浏览代码模块,查找程序 iLine = 1 Do While iLine

    54920

    扫码关注云+社区

    领取腾讯云代金券