精华内容
下载资源
问答
  • vb6.0/vba中 计算公式字符串转化为可执行的计算公式输出结果 vb6.0中 将计算公式字符串转化为可执行的计算公式输出结果方法如下: Private Sub command1_click() Set My_Script = CreateObject(“scriptcontrol”) ...

    vb6.0/vba中 计算公式字符串转化为可执行的计算公式输出结果

    vb6.0中 将计算公式字符串转化为可执行的计算公式输出结果方法如下:
    Private Sub command1_click()
    Set My_Script = CreateObject(“scriptcontrol”)
    My_Script.Language = “VBscript”
    Run_Str = “msgbox 1+1”
    My_Script.executestatement Run_Str
    End Sub

    可惜的是scriptcontrol控件没有64位版本,也就是说在64位的excel中是无法使用的

    但在VBA(excel)中有这样一个函数:Evaluate(“计算式”)
    Sub 测试()
    For Each r In Selection
    MeValue = “(” & r.Value & “)”
    r.Value = Evaluate(MeValue & “*2”)
    Next
    End Sub

    展开全文
  • 任务目的→处理H列O列数据,使其没有负数。 思路如下: 如果G列数值为负数或0,则 E=F=G+F (因为G中有函数 G=sum(H:O),此时为负数) H到O列数值均赋值0(此时G到O列均为0,E=F=原先的G) ...
  • 3.可选参数 '问题:怎么输出数组 Function WEEKTOTAL() WEEKTOTAL = Array("周一", "周二", "周三", "周四", "周五", "周六", "周日") '使用方法 '1.框柱不能多于数组数量的单元格(多了的会显示错误值,还不能单独...

    想说的都写在批注了,就不多写了。

    '带有一个参数的函数
    Function CAL(a) As Double
        Select Case a
            Case Is > 100:
                CAL = 100
            Case 55 To 100
                CAL = 55
            Case Else
                CAL = 0
        End Select
    End Function
    
    '带1个参数写1个,带2个写2个,多个的话可以选择数组
    '函数过程主要是在单元格用,意味着经常一框,不晓得多少个参数,怎么处理?
    '用数组作为参数
    '经过测试,类似=SUMARRAY(A4:D4)可以运行,但是=SUMARRAY(A4,B4,C4,D4)无法计算
    
    Function SUMARRAY(list) As Double
        '未明确是啥类型就用Variant
        Dim Item As Variant
        SUMARRAY = 0
        For Each Item In list
            '是数字就加总
            If WorksheetFunction.IsNumber(Item) Then
                SUMARRAY = SUMARRAY + Item
            End If
        Next Item
    End Function
    Sub MakeList()
        Dim nums(1 To 100) As Double
        Dim i As Integer
        For i = 1 To 100
            '随机赋值1-100的值到nums数组的各个元素
            nums(i) = Rnd * 100
        Next i
        MsgBox SUMARRAY(nums)
    End Sub
    
    '部分函数带可选参数,可选参数怎么实现呢?
    '在参数名前面加上Optional就是可选参数啦!
    '假设实现一个返回大小写功能的函数,不写参数全大写,可选参数填了则全小写
    
    
    Function UPORLOW(cell As Variant, Optional UpperCase As Variant)
        'cell是必须提供的参数,用IsMissing判断是否提供了后面的UpperCse参数
        
        If IsMissing(UpperCase) Then
            UPORLOW = UCase(cell)
        Else
            UPORLOW = LCase(cell)
        End If
            
    End Function
    
    '参数传入1.固定数量参数;2.数组;3.可选参数
    '问题:怎么输出数组
    
    Function WEEKTOTAL()
        WEEKTOTAL = Array("周一", "周二", "周三", "周四", "周五", "周六", "周日")
        '使用方法
        '1.框柱不能多于数组数量的单元格(多了的会显示错误值,还不能单独删除)
        '2.把=WEEKTOTAL输入到单元格中,然后注意不要就按回车键哈,是按Ctrl+Shift+Enter三个一起
        '3.数组输出的值在单元格只会横着排
    End Function
    
    '怎么实现想横着就横着想竖着就竖着的数组排列呢?
    '和之前一样,传入一个可选参数,这里简单点,随便穿了参数就当做竖着排列好了
    Function WEEKTOTALPLUS(Optional arg As Variant)
        '基本流程就是1.没参数,不管了;有参数,横着排
        Dim weeks As Variant
        '不能Dim weeks(7) as String ,然后weeks =arry(7个值)这样操作
        weeks = Array("周一", "周二", "周三", "周四", "周五", "周六", "周日")
        '还是用IsMissing判断有没有参数
        If IsMissing(arg) Then
            WEEKTOTALPLUS = weeks
        Else
            '有参数了,就变成竖的往下排列,用系统的转置函数
            WEEKTOTALPLUS = Application.Transpose(weeks)
        End If
    End Function
    
    '刚才例子SUMARRAY在输入=SUMARRAY(A4:D4)可以运行,但输入=SUMARRAY(A4,B4,C4,D4)无法计算
    '不定数量的参数的处理办法:使用数组作为最后一个参数,加上关键字PrarmArray
    
    Function SUMPLUS(ParamArray arglist() As Variant) As Double
        Dim arg As Variant
        For Each arg In arglist
            SUMPLUS = SUMPLUS + arg
        Next arg
        '这个时候输入=SUMARRAY(A4,B4,C4,D4)等等多个参数可以计算
        '但是输入=SUMARRAY(A4:D4)又可以运行,后面完善类似SUM的功能
    End Function
    

     

    展开全文
  • 一、输出linux/dos格式文件 用print写内容到文件,一般会自动加回车和换行符号,即dos格式,用vi打开就是显示为^M。 open ThisWorkbook.Path ...号表示打印未结束,所以vba不会自动在后面加回车和换行符号 显示结果为:

    一、输出linux/dos格式文件

    用print写内容到文件,一般会自动加回车和换行符号,即dos格式,用vi打开就是显示为^M。

    open ThisWorkbook.Path & "\my_file.txt" For Output As #1
    print #1,"aaa"
    

    显示结果为:
    在这里插入图片描述
    如果想输出为linux格式,可这样修改

    print #1,"aaa" & chr(10);
    

    其中chr(10)表示换行,后面的;号表示打印未结束,所以vba不会自动在后面加回车和换行符号
    显示结果为:
    在这里插入图片描述

    二、附一些文件操作相关函数说明:

    2.1、open


    在这里插入图片描述

    2.2、print语句

    在这里插入图片描述
    在这里插入图片描述

    2.3、eof

    在这里插入图片描述
    在这里插入图片描述

    2.4、loc

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 自己制作的用VBA输出XML。VBA也是初学,主要为了用EXCEL能够编辑XML表。点击保存按钮或者直接CTRL+S就可以输出最终的XML。最终的XML会在当前目录下。DATAOUT是在EXCEL直接看到编辑的结果。代码中有很多冗余的代码...
  • 作者:iamlasongVBA编程实现不重复随机数输出VBA里的随机函数是RND,在工作表中随机函数是RAND,一字之差,可要记好了。RND取值范围是[0,1),意思是0和1之间的一个随机数,包含0,但不包含1。1、用法语法:Rnd[...

    作者:iamlasong

    VBA编程实现不重复随机数输出。VBA里的随机函数是RND,在工作表中随机函数是RAND,一字之差,可要记好了。RND取值范围是[0,1),意思是0和1之间的一个随机数,包含0,但不包含1。

    1、用法

    语法:Rnd[(number)]

    如果 number 的值是 Randomize 生成

    小于 0 ,每次都使用 number 作为随机数种子得到的相同结果。

    大于 0 ,以上一个随机数为种子产生下一个随机数。

    等于 0 ,产生与最近生成的随机数相同的随机数。

    省略, 以上一个随机数为种子产生下一个随机数(同大于0)。

    说明:

    Rnd 函数返回小于 1 但大于或等于 0 的值。

    number 的值决定了 Rnd 生成随机数的方式。

    对最初给定的种子都会生成相同的数列,因为每一次调用 Rnd 函数都用数列中的前一个数作为下一个数的种子。

    在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器(若带参数,则产生由参数对应的一个特定序列的随机数),该生成器具有根据系统计时器得到的种子。如果不使用Randomize 语句,那么每次执行程序时产生的随机数序列是相同的。

    Rnd 后面跟一个负数时,同样的参数可以得到完全相同的两个序列,例如,rnd -1执行后用rnd取1000个随机数,然后再执行rnd -1,然后再用rnd取1000个随机数,这1000个随机数和前面1000个完全相同。为了得到不同的序列,可以用不同的负数,也可以在rnd -1后面执行Randomize number。注意,要得到相同的序列,两次Randomize后面的number必须相同。这种方法用途之一就是用于加密和解密。

    为了生成某个范围内的随机整数,可使用以下公式:

    Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

    这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。

    注意:若想得到重复的随机数序列,在使用具有数值参数的 Randomize 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 Randomize 是不会得到重复的随机数序列的。

    2、无重复随机数算法一

    这是最简单的算法,每产生一个随机数,就和已有的比较,如果已经存在,则重新产生。比较适合从一个大范围里面抽出一小部分数据,比如,从题库中抽取试题。

    ' 产生20个1-100之间的不重复随机数

    PublicSubRndNumberNoRepeat1()

    DimRndNumber, temp(20), i, k, MaxrecAsInteger

    Randomize (Timer) '初始化随机数生成器

    Maxrec = 100

    ' 从A21开始输出随机数

    k = 0

    DoWhilek < 20

    RndNumber = Int(Maxrec * Rnd) + 1

    temp(k) = RndNumber

    Cells(k + 21, 1) = RndNumber

    Fori = 0Tok - 1

    Iftemp(i) = RndNumberThenExitFor

    Nexti

    Ifi = kThenk = i + 1

    'MsgBox "随机数:" & RndNumber

    Loop

    EndSub

    3、无重复随机数算法二

    这个算法比较巧妙,需要细细体会,才能知道真谛。这个算法不会重复产生随机数,但需要一个占位数组。比较适合输出范围之内所有数值的场合,比如,随机发牌。

    ' 产生20个1-100之间的不重复随机数

    SubRndNumberNoRepeat2()

    DimRndNumber, TempArray(99), iAsInteger

    Randomize (Timer) '初始化随机数生成器

    Fori = 0To99'产生包含1-100的不重复的随机数列

    TempArray(i) = i

    Nexti

    Fori = 99To80Step-1

    RndNumber = Int(i * Rnd)

    '从A21开始输出这些数字

    Cells(120 - i, 1) = TempArray(RndNumber) + 1

    TempArray(RndNumber) = TempArray(i)

    Nexti

    EndSub

    4、无重复随机数算法三

    这个算法使用字典对象完成去重复,和第一个算法差不多,但程序看上去简洁一点,嗯,起码新颖一点。

    ' 产生20个1-100之间的不重复随机数

    SubRndNumberNoRepeat3()

    DimdAsObject'New Dictionary

    DimsAsInteger

    Randomize (Timer) '初始化随机数生成器

    Setd = CreateObject("Scripting.Dictionary")

    DoUntild.Count = 20

    s = Int(Rnd * 100 + 1)

    d(s) = ""

    Loop

    [a21].Resize(d.Count, 1) = Application.Transpose(d.Keys)

    EndSub

    附:VBA中Dictionary对象使用小结

    Dim dict

    ' 创建Dictionary

    Set dict = CreateObject("Scripting.Dictionary")

    ' 增加项目

    dict.Add "A", 300

    dict.Add "B", 400

    dict.Add "C", 500

    ' 统计项目数

    n = dict.Count

    ' 删除项目

    dict.Remove ("A")

    ' 判断字典中是否包含关键字

    dict.exists ("B")

    ' 取关键字对应的值,注意在使用前需要判断是否存在key,否则dict中会多出一条记录

    Value = dict.Item("B")

    ' 修改关键字对应的值,如不存在则创建新的项目

    dict.Item("B") = 1000

    dict.Item("D") = 800

    ' 对字典进行循环

    k = dict.keys

    v = dict.Items

    For i = 0 To dict.Count - 1

    key = k(i)

    Value = v(i)

    MsgBox key & Value

    Next

    ' 删除所有项目

    dict.Removeall

    实例:Sub 宏1()

    Set dic = CreateObject("Scripting.Dictionary") '字典

    For i = 1 To 10000

    If Not i Like "*4*" Then

    dic.Add i, "" '如果不包含“1”

    End If

    Next

    Range("a2").Resize(dic.Count, 1) = Application.WorksheetFunction.Transpose(dic.keys) '从A2单元开始向下放置

    End Sub

    =========================================================================

    又 Tranpose工作表函数的用法实例

    '把一行多列的二维数组转换成一维数组

    Sub test()

    Dim arr, arrt

    arr = Range("a1:j1")

    arrt = WorksheetFunction.Transpose(WorksheetFunction.Transpose(arr))

    Stop

    End Sub

    首先看看TRANSPOSE函数的基础用法。官方帮助说明,TRANSPOSE函数可返回转置单元格区域,即将行单元格区域转置成列单元格区域,反之亦然。

    TRANSPOSE函数语法是:TRANSPOSE(array)

    Array参数是需要进行转置的数组或工作表上的单元格区域。所谓数组的转置就是,将数组的第一行作为新数组的第一列,数组的第二行作为新数组的第二列,以此类推

    展开全文
  • VBA--XML文件的读取与输出

    万次阅读 2018-07-09 13:08:30
    但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows, Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析它,并以XML格式输出结果。下面我们来学习一下用VBA如何...
  • SUB 将查询结果保存为CSV () If CheckBox1.Value = True Then TEX = "A.EUTRANCELLFDD" ElseIf CheckBox2.Value = True Then TEX = "A.EUTRANCELLTDD" End If Dim cnn, SQL$, A, B, C, D, E, f, G, H, i, L, M Set...
  • 关于Debug.Print语句在“立即”窗口中的排版1, 一个Debug.Print语句能同时打印多个变量或者常量(通常是String),各个单位之间分隔符有2种:半角逗号【,】,代表制表输出- (图1);半角分号【;】,代表连续输出- ...
  • VBA编程实现不重复随机数输出VBA里的随机函数是RND,在工作表中随机函数是RAND,一字之差,可要记好了。RND取值范围是[0,1),意思是0和1之间的一个随机数,包含0,但不包含1。 1、用法 语法:Rnd[(number)]  如果...
  • VBA挑战 此存储库中VBA脚本(.bas文件)的目的是从特定的excel文件中获取库存数据,并计算年度变化,变化... 然后,脚本应将这些计算结果输出到新列,并循环浏览各行,直到为excel文件中的每个工作表处理了库存数据。
  • 本系列一直强调要善用各种工具,作为本系列的最后一节,那么这次就用一例子说明如何让Python结合Vba,直接在Excel中动态获取各种处理条件,输出结果。日后也会不定期分享 pandas 的处理案例,但不一定非要与 Excel ...
  • vba窗口介绍

    2018-05-06 21:39:01
    显示使用语句Debug.Print输出结果。2.属性窗口:可以列出工程管理器中所有属性以及属性的值。用户可以对属性进行查询和修改。3.代码窗口:是VBA中必不可少也是最常用的窗口。当用户在工程管理器中双击某个对象时,...
  • VBA挑战-源码

    2021-02-15 03:36:19
    2014、2015和2016的输出结果屏幕截图 设计理念: 我最初的Macro设计将数据视为未排序的数组,并使用嵌套的for循环扫描整个数组以查找每个单个值的所有实例。 该代码适用于简化的测试数据集,但事实证明,该代码...
  • VBA调用C++DLL

    2021-01-06 05:44:00
    以下建立了一个比较简单的C++的DLL,它的输入是一个字符串,两个double类型的变量,输出double类型的计算结果。 CPP代码: #include stdafx.h #include test_excel.h double fun_property(const char *outProp, ...
  • 1.案例说明在早期的Basic...在VBA中,Print 方法只能向“立即窗口”中输出程序的运行中间结果,供开发人员调试程序时使用。本例使用Print 方法在立即窗口中输入九九乘法表。2.关键技术.在VBA中,Print 方法只能应用...
  • VBA-challenge-源码

    2021-03-15 08:32:21
    创建一个脚本,该脚本将循环浏览所有股票一年,并输出以下信息。 股票代码。 从给定年初的开盘价到该年年底的收盘价的年度变化。 从给定年年初的开盘价到该年末的收盘价的百分比变化。 库存的总库存量。 您还...
  • 1、需求:有1个工作簿,多个工作表,格式一致,按某列作为关键字(具有唯一性),汇总数据,以...需要的结果表:3、代码实现简单分析:读取数据根据姓名确定数据要存放的行号,并累加到合计列输出个人碰到的很多VBA...
  • 设置了判断功能,判断当前截取的字符元素长度是否与采集长度一致,如果不一致则舍弃该采集结果,避免存储重复的数据 Sub button_click() Dim patent_name As String Dim patent_name_part(0 To 99, 0 To 99) As ...
  • VBA实现Excel转DBC

    千次阅读 2019-05-08 15:25:34
    欢迎关注《汽车软件技术》公众号,回复关键字获取资料。 使用方法 公众号回复VBA获取。 ...DBC”转化。 在CANdb++中检查输出结果。 注意:本工具非常简易,未对输入做详细检查,因此不建议用在商业用途。 ...
  • 每段代码都是由3个部分组成:I 输入数据,处理数据,O 输出数据(返回结果)。 I/O 输入数据:声明(定义)数据,赋初值---声明变量的数据类型,赋初值等就是第一部分,定义和输入数据! 处理数据 输出数据...
  • excel VBA 路程图

    2016-11-22 17:22:08
    本文及以后系列主要来自《offic2010应用大全》,《excel vba编程实战宝典》两本书的读书笔记。为读过书理清思路,记忆理解应用。 excel作为数据处理工具,大多数使用时,将数据键入到单元格,经过计算把结果显示在...
  • 示例输出是显示数据设置和运行VBA脚本的结果的屏幕截图 注意-有一个附加的“ VBA分析财务数据bonus.bas”脚本,其中包括上述内容以及以下内容:最大百分比增长,最大百分比下降和最大总交易量。 还将重复浏览Excel...
  • 操作思路:1.使用 ADODB.stream 把字符串转换为UFT-8的编码集存储到文件 AA2....字符串截取第二行,去空格,输出MD5值VBA代码:strBody = "VBA变量字符串转换为UFT-8后MD5加密"'MD5计算Dim stream As...
  • VBA 获得circle输入文件

    2016-02-19 09:32:43
    复制cog文件的前两列放至sheet1,复制整个gff文件放至sheet2,sheet3为cog结果,sheet5为RNA结果。即sheet1、sheet2为输入信息,sheet4为操作界面,sheet3、sheet5为输出信息。VBA宏代码如下(sheet4操作界面下): ...
  • 我们使用一个简单的示例,提取1-10中的偶数并输出结果,判断偶数非常简单,程序主框架如下。 Sub Demo() Dim i As Integer, msg As String For i = 1 To 10 If Int(i / 2) = (i / 2) Then '构建字符串ms
  • VBA实现单精度浮点数与十六进制字符串相互转换,并提供2个相互转换的示例 第一个按钮: "A1录入十六进制8位字符串;...B1输出单精度浮点数结果" 第二个按钮 "将B1作为单精度浮点数输入 C1输出16进制结果
  • 日常工作中经常要处理别人发来的excel附件,在工作簿中增加一个sheet来显示数据提取结果,但数据结构保护的工作簿会添加sheet失败。...VBA中判断工作簿是否结构、窗口保护,后重新指定判断结果输出位置。
  • VBA:打印乘法表

    2020-11-20 20:22:59
    Sub 乘法表() Dim i As Integer Dim j As Integer For i = 1 To 9 For j = 1 To i Sheets("sheet2").Cells(i, j) = i & "x" & j & "=" & i * j Next j Next i ...输出结果如下表。

空空如也

空空如也

1 2 3 4 5
收藏数 98
精华内容 39
关键字:

vba输出结果