精华内容
下载资源
问答
  • vb语言函数和函数的连接是通过什么语句实现的,怎么用两个函数连接一个结果出来?
  • VB语言的API函数手册

    2008-01-04 15:46:54
    VB语言的API函数手册!
  • 请问vb语言函数中怎么绕过参数给函数传值?如果参数定义好了不能修改,那么可以通过数组传么?
  • VB语言参考及函数速查手册
  • vb语言怎么通过函数跳转的方式代替call语句实现函数调用?能不能不通过函数名的方式传参数而是直接把主程序的变量送入函数
  • vb语言中mid函数外加cstr函数连起来调用是不是比mid$函数更慢啊?那么为什么还要保留mid函数呢?
  • vb语言中内函数调用外函数,两个函数可以同时修改一个数组,但是两个平行函数先后调用,修改也是先后的,这是为什么?
  • C++ & VB.NET & VB 过程函数结构

    千次阅读 热门讨论 2015-02-12 17:04:38
     通过之前的VB,后VB.NET 与C++等计算机语言的了解,代码流程、控制结构、函数 等就是像我们中文中常用的一些短语,固定的句式,有了这些句式往里面套东西就行, 比如,不仅~还~、因为~所以~等等,在代码中就是...


       C++ & VB.NET & VB 过程函数结构


      

       通过之前的VB,后VB.NET 与C++等计算机语言的了解,代码流程、控制结构、函数

    等就是像我们中文中常用的一些短语,固定的句式,有了这些句式往里面套东西就行,

    比如,不仅~还~、因为~所以~等等,在代码中就是用英语的白话文这么写的罢了,

    下面我们详细的来看看:

    一、流程、控制结构

      

      这其中就两个结构分别是:


                                        
            


    1、条件结构
          1)简单的 IF 条件语句




         
         2)If...Then...Else

        
         
         3)Select...Case判定结构  ,下面还包含了Case Else 字句:






    2、循环结构
       1)For...Next ,代码例子是重复书写 5 个Beep:




    2)Do 循环




    3)while循环


       

    4)For Each ...Next




    二、过程函数

              




    1、Sub过程:

    这又分为通用过程和事件过程。Sub 过程就是相应事件时执行的代码块,一般在代码块

    的最后。

       1)通用过程:这是通过过程告诉应用程序完成一项制定的任务,一旦确定了通用过

    程,就由专有应用程序来调用。
       

       2)事件过程:编程语言中的对象对一个事件的发生做出认定时,自动调用与事件名

    字相对应的事件过程。这是相互对应的,名字在对象和代码之间建立了联系,我们通常

    说事件过程是附加值窗体和控件上的。



    2、Function 过程:
     

      这个和其他的调用方法一样,代码实现:
                     



    3、调用过程
       

    1)调用Sub过程:下面代码实例
         

    2)调用函数过程
      


     或像Sub过程那样:
                  

    3)调用其他模块的函数,这些必须提前声明类的实例为对象变量并用变量名引用他。
                       



    4、过程传递参数
      1)按数据类型

    一般是默认是具有Object的数据类型,但是也有其他的,但是要事先声明:
                       

      2)按值传递,这在VB.net 中的是默认的方式,用ByVal关键字支持参数是按值传递

    的。
      3)按地址传递:这是过程变量的内存地址去访问时间变量的内容。在用按地址传递时

    无论变量是什么,传值都只是4 个字节,所有效率比较的高。
      

      代码实例:参数”RunningTotal“ 是按地址传进来的,因此传进的变量值为参

    数”AcctNum“的值。






    4)可选参数

    一般过程的参数列表中有”Optional“关键字,这类过程就是参数可选的。




    5)不定数量的参数
       这个的一般情况是有”ParamArray“关键字,代码实例如下:




    小结:

      通过这几门语言的总结,其中的代码流程、控制结构、函数等都是像我们中文中常用

    的一些短语,固定的句式,有了这些句式往里面套东西就行,这些在计算机的语言中都

    相似,函数、调用、过程等,不过在具体的代码中这些就是英语中的”白话文“句式短

    语罢了,要真正的运用自如还得通过更多的实践才能达到融会贯通境界。






    展开全文
  • vb语言添加引用函数库的方法是什么?怎么调用一个没有定义的函数?tofix函数能不能通过指令包含到工程里从而实现调用?
  • vb语言中用什么函数可以类似于cstr那样将函数的返回值转换为另一个类型?怎么定义函数的返回值,也是用到函数的调用么?
  • VB函数.CHM VB函数.CHM

    2010-10-27 01:10:27
    VB函数.CHM,对于学习VB编程必备的参考书之一.对于其它语言编程的人就免下了.
  • mid函数vb语言中的反函数是什么定义?函数的名称和参数的使用是怎么样实现的?怎么对mid函数调用反函数得到两边的数组?
  • 请问vb语言怎么在函数里根据用户inputbox输入的不同,切换到别的函数调用,或者继续执行?怎么切换函数,自身退出保持参数不变?
  • '定义一个函数,把业务状况表的数据加载到字典里 Public Function AddDictionary(OriginalDictionary)  Dim Path, CurrentWorkBook, CurrentWorkSheet, CurrentName  Dim str1, str2, str3, str4, str5, str6  ...

    '定义一个函数,把业务状况表的数据加载到字典里
    Public Function AddDictionary(OriginalDictionary)
        Dim Path, CurrentWorkBook, CurrentWorkSheet, CurrentName
        Dim str1, str2, str3, str4, str5, str6
        Dim n
        n = 10
        '打开名称里含有业务状况表的表格
        Path = ThisWorkbook.Path & "\*业务状况表*"
        'Dir函数返回路径下的文件名称,再次调用自动查找下一个符合条件的文件
        CurrentName = Dir(Path)
        Set CurrentWorkBook = Workbooks.Open(ThisWorkbook.Path & "\" & CurrentName)
        Set CurrentWorkSheet = CurrentWorkBook.Worksheets(1)
        'VB字典的定义和应用!
        Set OriginalDictionary = CreateObject("Scripting.Dictionary")
        While CurrentWorkSheet.Cells(n, 1) <> ""
            str1 = "BD" & CurrentWorkSheet.Cells(n, 1)
            str2 = "BC" & CurrentWorkSheet.Cells(n, 1)
            str3 = "MD" & CurrentWorkSheet.Cells(n, 1)
            str4 = "MC" & CurrentWorkSheet.Cells(n, 1)
            str5 = "ED" & CurrentWorkSheet.Cells(n, 1)
            str6 = "EC" & CurrentWorkSheet.Cells(n, 1)
            OriginalDictionary.Add str1, CurrentWorkSheet.Cells(n, 3).Value
            OriginalDictionary.Add str2, CurrentWorkSheet.Cells(n, 4).Value
            OriginalDictionary.Add str3, CurrentWorkSheet.Cells(n, 5).Value
            OriginalDictionary.Add str4, CurrentWorkSheet.Cells(n, 6).Value
            OriginalDictionary.Add str5, CurrentWorkSheet.Cells(n, 7).Value
            OriginalDictionary.Add str6, CurrentWorkSheet.Cells(n, 8).Value
            n = n + 1
        Wend
        '关闭业务状况表
        CurrentWorkBook.Close
    End Function
    '定义一个函数,将基础项目定义的公式依逗号拆分
    Public Function SplitString(m, l, CurrentWorkBook, ModelWorkSheet, CurrentWorkSheet, Dictionary, ThisWorkbook)
        Dim a, b, c, d, SumNumber, SubNumber
        Dim Crr, x, y, h, k 'h表示行次所在的列,k表示基础定义所在的列
        a = 1
        x = 1
        y = m
        SumNumber = 0
        SubNumber = 0
        '找出行次和基础定义所在的列
        Do While x < 12
        If Trim(ModelWorkSheet.Cells(l, x)) = "行次" Then
        h = x
        End If
        '基础项目定义的列开始!!!!!!!!!!!!!!!!!!
        If Trim(ModelWorkSheet.Cells(l, x)) = "基础项目定义" Then
        k = x
        Do While ModelWorkSheet.Cells(m, h) <> ""
        'k的值小于6和大于6从报表取值的列是不同的,因为加了基础项目定义的列
        If k < 6 Then
        ModelWorkSheet.Cells(m, k + 1) = CurrentWorkSheet.Cells(m, k + 1)
        Else
        ModelWorkSheet.Cells(m, k + 1) = CurrentWorkSheet.Cells(m, k)
        End If
        '基础定义的项拆分开始!
        If Left(ModelWorkSheet.Cells(m, k), 2) = "ED" Or Left(ModelWorkSheet.Cells(m, k), 2) = "EC" Then
        '把基础项目定义公式依据逗号拆分成一个一个的数组
        Crr = Split(ModelWorkSheet.Cells(m, k), ",")
        '对于每一个数组进行分析:+的部分放在SumNumber里,-的部分放在SubNumber里
        For i = 0 To UBound(Crr)
        '首先分析+的部分,a表示一个科目号码开始的位置(默认1),b表示结束的位置
        Do
        'INstr函数找出字符出现的第一个位置
        b = InStr(a, Crr(i), "+")
        If b = 0 Then
            If 0 = InStr(Crr(i), "-") Then
                b = Len(Crr(i)) + 1
                Else
                b = InStr(Crr(i), "-")
            End If
            SumNumber = Dictionary.Item(Mid(Crr(i), a, b - a)) + SumNumber
            Exit Do
            Else
            SumNumber = Dictionary.Item(Mid(Crr(i), a, b - a)) + SumNumber
            a = b + 1
         End If
         Loop While b <> 0
         '然后分析-的部分,a表示一个科目号码开始的位置,d表示结束的位置
        If InStr(Crr(i), "-") <> 0 Then
         c = InStr(Crr(i), "-") + 1
        Do
         d = InStr(c, Crr(i), "-")
         If d = 0 Then
            d = Len(Crr(i)) + 1
            SubNumber = SubNumber + Dictionary.Item(Mid(Crr(i), c, d - c))
            Exit Do
            Else
            SubNumber = SubNumber + Dictionary.Item(Mid(Crr(i), c, d - c))
            c = d + 1
         End If
        Loop While d <> 0
        End If
        '判断是否是第一个数组,第一个数组直接SumNumber - SubNumber,后面的数组需要判断扎差
        If i = 0 Then
        If Trim(ModelWorkSheet.Cells(m, 1)) = "存放同业款项" Or Trim(ModelWorkSheet.Cells(m, 6)) = "同业及其他金融机构存放款项" Then
        ModelWorkSheet.Cells(m, k + 2) = ModelWorkSheet.Cells(m, k + 2) + SumNumber - SubNumber
        ModelWorkSheet.Cells(m, k + 2) = ModelWorkSheet.Cells(m, k + 2) - ThisWorkbook.Worksheets("报表检核页").Cells(11, 13)
        Else
        ModelWorkSheet.Cells(m, k + 2) = ModelWorkSheet.Cells(m, k + 2) + SumNumber - SubNumber
        End If
        Else
        If SumNumber > SubNumber Then
        ModelWorkSheet.Cells(m, k + 2) = ModelWorkSheet.Cells(m, k + 2) + SumNumber - SubNumber
        End If
        End If
        '每一个数组分析完毕后都需要把a 、SumNumber、SubNumber重新赋值
        a = 1
        SumNumber = 0
        SubNumber = 0
        Next
        '基础定义的项拆分完毕!
        '计算公式的项赋值开始!
        Else
        If ModelWorkSheet.Cells(m, k) <> "" Then
        ModelWorkSheet.Cells(m, k + 2).Formula = "=" & ModelWorkSheet.Cells(m, k)
        End If
        '计算公式的项赋值完毕!
        End If
        '判断报表值和计算的结果是否相等,不相等则标记颜色区分
        If Round(Val(ModelWorkSheet.Cells(m, k + 1)), 2) <> Round(Val(ModelWorkSheet.Cells(m, k + 2)), 2) Then
        ModelWorkSheet.Cells(m, k + 1).Interior.ColorIndex = 3
        ModelWorkSheet.Cells(m, k + 2).Interior.ColorIndex = 3
        End If
        m = m + 1
        Loop
        'm的循环结束后需要把m重新赋值!
        m = y
        End If
        '基础项目定义的列结束!!!!!!!!!!!!!!!!!!
        x = x + 1
        Loop
        CurrentWorkBook.Close
    End Function

    展开全文
  • 关于在vb语言编程系统中使用用户自定义的函数替换系统函数替换的方式的问题,请问代码可以在标准模块中实现么?编写了函数提示编译不通过是什么意思?
  • VB编程语言中,除了我们根据程序需要自己建立的函数及过程外,VB自身还提供了丰富的内置函数可用于程序设计,包括:数学函数 、字符串函数 、判断函数、转换函数等方面的函数。转换函数用来实现不同类型数据之间的...

    各位朋友:

    大家晚上好,首先感谢大家本着对VB编程的热爱共同相聚在跟我学VB。

    学习新的知识,肯定会遇到许多问题及困惑,尤其是编程语言的学习。正所谓,勤学好问,说的正是这个道理。

    在VB编程语言中,除了我们根据程序需要自己建立的函数及过程外,VB自身还提供了丰富的内置函数可用于程序设计,包括:数学函数 、字符串函数 、判断函数、转换函数等方面的函数。

    f236589bff07e142035af7288b7d6810.png

    转换函数用来实现不同类型数据之间的转换。

    b122ac4662931f9fa954edfc9c98e0ee.png

    数学函数与数学中的定义一致,但三角函数中的参数x是以弧度为单位的。

    c625d5f9d43f4b3a48c44de50f678ba5.png

    字符串函数有:

    1. InStr([起始位置],字符串1,字符串2[,比较类型])—   字符串2在字符串1中第一次出现的位置。 2. InStrRev(字符串1, 字符串2[起始位置[,比较类型]]—与InStr()函数相似,只是从字符串1的后面开始向前查找。3. LTrim(字符串) —去掉字符串左边的空白部分。 4. Rtrim(字符串) —去掉字符串右边的空白部分。 5. Trim(字符串) —去掉字符串的左右空格 。 6. Left(字符串,个数) —取出字符串左边指定个数的字符 。7. Right(字符串,个数) —取出字符串右边指定个数的字符。8. Mid(字符串,起始位置[,个数]) —取字符串由起始位置开始的指定个数的字符。 9. Len(字符串或字符变量) —计算字符长度 。10. Ucase(字符串) —将字符串的小写字母转换为大写字母。11. Lcase(字符串) —将字符串的大写字母转换为小写字母。 12. Space(个数) —返回指定个数的空字符串。 13. String(个数,字符)—返回包含重复字符的字符串 。

    日期与时间函数主要是向用户显示日期和时间信息。 

    0bcbf9c08513308dd8b66f600fb9a7d1.png

    随机函数

                  Rnd函数返回0和1(包括0但不包括1)之间的双精度随机数.

                  每次运行时,要产生不同序列的随机数,需执行Randomize 语句.


    VB内部函数部分

    牛刀小试题目答

    (答案明天在公众号及朋友圈公布)

    1、 以下()是Visual Basic中合法的函数使用。

    A) exp.x    B) exp(x)    

    C) cos[x]    D) sinx

    2、 表达式Mid("ShangHai",6,3)的值是()

    A) Shang   B) Hai   C) SHa   D) angH  

    3、 函数Len(str(val("-135.6")))的值是()

    A) 11    B) 6    C) 5    D) 8

    4、 设a="abcdefghijklm",下面的函数值为"jklm"的是()。

    A) ltrim(a)        B) left(a,4)

    C) mid(a,10,4)     D) rtrim(a)

    5、 函数InStr("VB程序设计教程","程序")的值为()。

    A) 4     B) 3    C) 2      D) 1  

    6、 函数Ucase(mid("Visual Basic程序设计",5,8))的值为()。

    A) AL BASIC     B) al basic    

    C)  basic      D) AL basic  

    7rnd函数不可能产生()。

    A) 0     B) 0.12345    

    C) 0.00005  D) 1  

    8、 表达式Abs(-5)+Len("ABCDE")的值是()。 

    A) 5ABCDE           B) -5ABCDE

    C) 10               D) 0


    跟我学VB微信平台

    独家视频讲解

    为了帮助大家很好的学习VB,快速掌握VB编程技巧,经过老师的积极努力与辛苦讲解,VB视频讲解教程现在已经全部录制完毕!

    为促进复产复工复学,VB视频教程3月21日--3月31日之间限时发放,助力大家学习!


    1、每节视频课结合实际的VB项目程序,从基础到综合应用、数据管理系统、数据互导、报表、超市收银支付系统等均亲自指导,代码一句一句讲解;

    2、课程报名后可以永久学习,没有时间限制;

    3、享受VB老师的随时指导,有问题及时解答、快速解决,无需等待、事半功倍!

    4、报名即可获得各种编程学习资料和软件。

    学习VB中有问题可以添加老师微信号:vbyjk521 ,学习问题在线答疑。

    3601c9a8cacf0e5b3a2bde9b5747daad.png


    2639c84322a365f196a3a98268c43688.gif
    展开全文
  • VB语言能不能编写函数传递不确定个数的参数呢?我知道在C语言是可以的,但是写在VB里就不正确
  • vb语言中实现两个函数体的相加用什么方式,函数也不能嵌套定义啊?怎么嵌套实现函数的调用?
  • VB语言里能不能用goto语句调用一个函数的一部分呢?如果函数不从开头执行,而从其它地方执行,可以用goto么?
  • 可能有些朋友觉得这是多余的事情,既然 VB 有了 DateAdd 函数来进行日期运算,干嘛还要自己手写一个? 其实这一点也不多余,因为有些时候我们的开发环境不一定就在 VB 里,而那些个开发环境不一定就有那么多现成的...

             可能有些朋友觉得这是多余的事情,既然 VB 有了 DateAdd 函数来进行日期运算,干嘛还要自己手写一个?坏笑 其实这一点也不多余,因为有些时候我们的开发环境不一定就在 VB 里,而那些个开发环境不一定就有那么多现成的函数可以使用,那么这个时候要做个日期运算那就不是那么简单的事情了。就比如我写这函数的理由,就是在单片机里需要做日期运算写的。因为在单片机里,就连想取得个时间都要外挂一个外围的时钟芯片,要读个时间也要进行专门的通讯才能读到内容,更别说什么现成的日期时间类型或对其进行运算了,这些全要自己弄,所以做这些个蛋疼的事情并不是没必要的,而是你是否接触到这种蛋疼的需求而已。好了,闲话不多说,先看看这个函数如果用 VB 可以怎么写吧。

    '====================================================================================================
    '  Definition structure ( 结构体定义 )
    '====================================================================================================
    Private Type SYSTEMTIME
            wYear As Integer
            wMonth As Integer
            wDayOfWeek As Integer
            wDay As Integer
            wHour As Integer
            wMinute As Integer
            wSecond As Integer
            wMilliseconds As Integer
    End Type
    '====================================================================================================
    '  API function declaration ( API 函数声明 )
    '====================================================================================================
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, _
                                                                         Source As Any, _
                                                                         ByVal Length As Long)
    '====================================================================================================
    '  Custom function ( 自定义函数 )
    '====================================================================================================
    '----------------------------------------------------------------------------------------------------
    ' Function   Name: DateAdd2
    ' Description    : A function for computing time.
    ' Input Parameter: interval      - (String)Necessary,Type of operation time.
    '                : number        - (Long)Necessary,The numeric value that needs to be performed.
    '                : dateInfo      - (SYSTEMTIME)Necessary,The time required for computation is also
    '                :                 the result of computation..
    ' Return    Value: (void)        - No return
    ' Version        : 1.0.0
    ' Author         : Zhou Wen Xing <mail@rljy.com>
    ' CSDN   Accounts: SupermanKing
    ' Date           : June, 26nd 2018
    '----------------------------------------------------------------------------------------------------
    Private Sub DateAdd2(ByVal interval As String, _
                         ByVal number As Long, _
                         ByRef dateInfo As SYSTEMTIME)
        Dim m_Year As Long
        Dim IsLeapYear As Long
        Dim m_Month As Long
        Dim m_AllMonth As Long
        Dim m_Day As Long
        Dim m_AllDay As Long
        Dim m_DayCount As Long
        Dim m_AllHour As Long
        Dim m_Hour As Long
        Dim m_AllMinute As Long
        Dim m_Minute As Long
        Dim m_AllSecond As Long
        Dim m_Second As Long
        Dim m_SYSTEMTIME As SYSTEMTIME
        Select Case interval
        Case "yyyy":
                    dateInfo.wYear = dateInfo.wYear + number
        Case "m"
                    m_Year = dateInfo.wYear
                    m_AllMonth = dateInfo.wMonth + number
                    If m_AllMonth > 12 Then
                        m_Year = m_Year + Int(m_AllMonth / 12)
                        m_Month = m_AllMonth Mod 12
                        If m_Month = 0 Then
                            dateInfo.wMonth = 1
                        Else
                            dateInfo.wMonth = m_Month
                        End If
                        dateInfo.wYear = m_Year
                    Else
                        dateInfo.wMonth = m_AllMonth
                    End If
        Case "d"
                    m_Year = dateInfo.wYear
                    If (m_Year - 1980) Mod 4 = 0 Then
                        IsLeapYear = 1
                    Else
                        IsLeapYear = 0
                    End If
                    m_Month = dateInfo.wMonth
                    Select Case m_Month
                    Case 1, 3, 5, 7, 8, 10, 12
                            m_DayCount = 31
                    Case 2
                            If IsLeapYear Then
                                m_DayCount = 29
                            Else
                                m_DayCount = 28
                            End If
                    Case 4, 6, 9, 11
                            m_DayCount = 30
                    End Select
                    m_AllDay = dateInfo.wDay + number
                    If m_AllDay > m_DayCount Then
                        Do
                            m_AllDay = m_AllDay - m_DayCount
                            m_Month = m_Month + 1
                            If m_AllDay > m_DayCount Then
                                If m_Month > 12 Then
                                    m_Month = 1
                                    m_Year = m_Year + 1
                                    If (m_Year - 1980) Mod 4 = 0 Then
                                        IsLeapYear = 1
                                    Else
                                        IsLeapYear = 0
                                    End If
                                End If
                            End If
                            Select Case m_Month
                            Case 1, 3, 5, 7, 8, 10, 12
                                    m_DayCount = 31
                            Case 2
                                    If IsLeapYear Then
                                        m_DayCount = 29
                                    Else
                                        m_DayCount = 28
                                    End If
                            Case 4, 6, 9, 11
                                    m_DayCount = 30
                            End Select
                        Loop While m_AllDay > m_DayCount
                        If m_AllDay = 0 Then
                            m_AllDay = 1
                        End If
                        dateInfo.wDay = m_AllDay
                        dateInfo.wMonth = m_Month
                        dateInfo.wYear = m_Year
                    Else
                        dateInfo.wDay = m_AllDay
                    End If
                    
        Case "h"
                    m_AllHour = dateInfo.wHour + number
                    If m_AllHour < 24 Then
                        dateInfo.wHour = m_AllHour
                    Else
                        m_Hour = m_AllHour Mod 24
                        m_AllDay = Int(m_AllHour / 24)
                        CopyMemory m_SYSTEMTIME, dateInfo, LenB(m_SYSTEMTIME)
                        
                        DateAdd2 "d", CInt(m_AllDay), m_SYSTEMTIME
                        dateInfo.wHour = m_Hour
                        dateInfo.wDay = m_SYSTEMTIME.wDay
                        dateInfo.wMonth = m_SYSTEMTIME.wMonth
                        dateInfo.wYear = m_SYSTEMTIME.wYear
                    End If
                    
        Case "n"
                    m_AllMinute = dateInfo.wMinute + number
                    If m_AllMinute < 60 Then
                        dateInfo.wMinute = m_AllMinute
                    Else
                        m_Minute = m_AllMinute Mod 60
                        m_AllHour = Int(m_AllMinute / 60)
                        
                        CopyMemory m_SYSTEMTIME, dateInfo, LenB(m_SYSTEMTIME)
                        
                        DateAdd2 "h", CInt(m_AllHour), m_SYSTEMTIME
                        
                        dateInfo.wMinute = m_Minute
                        dateInfo.wHour = m_SYSTEMTIME.wHour
                        dateInfo.wDay = m_SYSTEMTIME.wDay
                        dateInfo.wMonth = m_SYSTEMTIME.wMonth
                        dateInfo.wYear = m_SYSTEMTIME.wYear
                    End If
                    
        Case "s"
                    m_AllSecond = dateInfo.wSecond + number
                    If m_AllSecond < 60 Then
                        dateInfo.wSecond = m_AllSecond
                    Else
                        m_Second = m_AllSecond Mod 60
                        m_AllMinute = Int(m_AllSecond / 60)
                        
                        CopyMemory m_SYSTEMTIME, dateInfo, LenB(m_SYSTEMTIME)
                        
                        DateAdd2 "n", CInt(m_AllMinute), m_SYSTEMTIME
                        
                        dateInfo.wSecond = m_Second
                        dateInfo.wMinute = m_SYSTEMTIME.wMinute
                        dateInfo.wHour = m_SYSTEMTIME.wHour
                        dateInfo.wDay = m_SYSTEMTIME.wDay
                        dateInfo.wMonth = m_SYSTEMTIME.wMonth
                        dateInfo.wYear = m_SYSTEMTIME.wYear
                    End If
        End Select
    End Sub

    上面是 VB 的实现过程,我写来主要是用来调试逻辑的偷笑 ,因为如果要在单片机里调试逻辑怎么都没直接在 Windows 下方便坏笑 ,其实写好了程序直接翻译一下就可以成为 C 语言的函数了,比如以下代码:

    //====================================================================================================
    //    Adduction head file ( 引用头文件 )
    //====================================================================================================
    #include <STRING.H>
    //====================================================================================================
    //    Type definition ( 类型定义 )
    //====================================================================================================
    #define BYTE unsigned char
    #define WORD unsigned int
    //====================================================================================================
    //    Definition structure ( 结构体定义 )
    //====================================================================================================
    typedef struct tagSYSTEMTIME{
        BYTE    Century;                // 世纪
        BYTE    FullYear;               // 年份
        BYTE    Month;                  // 月份
        BYTE    Day;                    // 日期
        BYTE    Hours;                  // 小时
        BYTE    Minutes;                // 分钟
        BYTE    Seconds;                // 秒钟
        BYTE    Week;                   // 周几
    }SYSTEMTIME,*PSYSTEMTIME;
    //====================================================================================================
    //    Custom function ( 自定义函数 )
    //====================================================================================================
    //----------------------------------------------------------------------------------------------------
    // Function   Name: DateAdd
    // Description    : A function for computing time.
    // Input Parameter: interval      - (char *)Necessary,Type of operation time.
    //                : number        - (WORD)Necessary,The numeric value that needs to be performed.
    //                : dateInfo      - (SYSTEMTIME *)Necessary,The time required for computation is also
    //                :                 the result of computation..
    // Return    Value: (void)        - No return
    // Version        : 1.0.0
    // Author         : Zhou Wen Xing <mail@rljy.com>
    // CSDN   Accounts: SupermanKing
    // Date           : June, 26nd 2018
    //----------------------------------------------------------------------------------------------------
    void DateAdd(char *interval,WORD number,SYSTEMTIME *dateInfo)
    {
        WORD m_Year;
        WORD m_Month;
        WORD m_Hour;
        WORD m_Minute;
        WORD m_Second;
        WORD m_AllMonth;
        WORD m_AllDay;
        WORD m_AllHour;
        WORD m_AllMinute;
        WORD m_AllSecond;
        WORD m_DayCount;
        BYTE IsLeapYear;
        BYTE m_SType;
        SYSTEMTIME m_SYSTEMTIME;
        if(strcmp(interval,"y")){
            m_SType = 0;    
        }else if(strcmp(interval,"M")){
            m_SType = 1;    
        }else if(strcmp(interval,"d")){
            m_SType = 2;    
        }else if(strcmp(interval,"h")){
            m_SType = 3;    
        }else if(strcmp(interval,"i")){
            m_SType = 4;    
        }else if(strcmp(interval,"s")){
            m_SType = 5;    
        }
        switch(m_SType){
        case 0: // 年份计算
                m_Year  = (dateInfo->Century*100)+dateInfo->FullYear;
                m_Year += number;
                dateInfo->Century = ((m_Year-(m_Year%100))/100)&0xFF;
                dateInfo->FullYear = (m_Year%100)&0xFF;
                break;
        case 1: // 月份计算
                m_Year      = (dateInfo->Century*100)+dateInfo->FullYear;
                m_AllMonth  = dateInfo->Month+number;
                if(m_AllMonth>12){
                    m_Year = m_Year+(m_AllMonth / 12);
                    m_Month = m_AllMonth % 12;
                    if(m_Month==0){
                        dateInfo->Month = 1;    
                    }else{
                        dateInfo->Month = m_Month;
                    }
                    dateInfo->Century = ((m_Year-(m_Year%100))/100)&0xFF;
                    dateInfo->FullYear = (m_Year%100)&0xFF; 
                }else{
                    dateInfo->Month = m_AllMonth;
                }
                break;
        case 2: // 日期计算
                m_Year      = (dateInfo->Century*100)+dateInfo->FullYear;
                if((m_Year-1980)%4==0){
                    IsLeapYear = 1;
                }else{
                    IsLeapYear = 0;
                }
                m_Month = dateInfo->Month;
                switch(m_Month){
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                        m_DayCount = 31;
                        break;
                case 2:
                        if(IsLeapYear){
                            m_DayCount = 29;
                        }else{
                            m_DayCount = 28;
                        }
                        break;
                case 4:
                case 6:
                case 9:
                case 11:
                        m_DayCount = 30;
                        break;
                }
                m_AllDay = dateInfo->Day+number;
                if(m_AllDay>m_DayCount){
                    while(m_AllDay>m_DayCount){
                        m_AllDay = m_AllDay - m_DayCount;
                        m_Month++;
                        if(m_AllDay>m_DayCount){
                            if(m_Month>12){
                                m_Month = 1;
                                m_Year++;
                                if((m_Year-1980)%4==0){
                                    IsLeapYear = 1;
                                }else{
                                    IsLeapYear = 0;
                                }
                            }
                        }
                        switch(m_Month){
                        case 1:
                        case 3:
                        case 5:
                        case 7:
                        case 8:
                        case 10:
                        case 12:
                                m_DayCount = 31;
                                break;
                        case 2:
                                if(IsLeapYear){
                                    m_DayCount = 29;    
                                }else{
                                    m_DayCount = 28;
                                }
                                break;
                        case 4:
                        case 6:
                        case 9:
                        case 11:
                                m_DayCount = 30;
                                break;
                        }
                    }
                    if(m_AllDay == 0){
                        m_AllDay = 1;
                    }
                    dateInfo->Day = m_AllDay&0xFF;
                    dateInfo->Month = m_Month&0xFF;
                    dateInfo->Century = ((m_Year-(m_Year%100))/100)&0xFF;
                    dateInfo->FullYear = (m_Year%100)&0xFF; 
                }else{
                    dateInfo->Day = m_AllDay&0xFF;  
                }
                break;
        case 3: // 小时计算
                m_AllHour = dateInfo->Hours + number;
                if(m_AllHour<24){
                    dateInfo->Hours = m_AllHour&0xFF;   
                }else{
                    m_Hour = m_AllHour%24;
                    m_AllDay = m_AllHour/24;
                    memcpy((void *)&m_SYSTEMTIME,(void *)dateInfo,sizeof(SYSTEMTIME));
                    DateAdd("d",m_AllDay,(SYSTEMTIME *)&m_SYSTEMTIME);
                    dateInfo->Hours = m_Hour&0xFF;
                    dateInfo->Day = m_SYSTEMTIME.Day;
                    dateInfo->Month = m_SYSTEMTIME.Month;
                    dateInfo->FullYear = m_SYSTEMTIME.FullYear;
                    dateInfo->Century = m_SYSTEMTIME.Century;
                }
                break;
        case 4: // 分钟计算
                m_AllMinute = dateInfo->Minutes + number;
                if(m_AllMinute<60){
                    dateInfo->Minutes = m_AllMinute&0xFF;   
                }else{
                    m_Minute = m_AllMinute%60;
                    m_AllHour = m_Minute/60;
                    memcpy((void *)&m_SYSTEMTIME,(void *)dateInfo,sizeof(SYSTEMTIME));
                    DateAdd("h",m_AllHour,(SYSTEMTIME *)&m_SYSTEMTIME);
                    dateInfo->Minutes = m_Minute&0xFF;
                    dateInfo->Hours = m_SYSTEMTIME.Hours;
                    dateInfo->Day = m_SYSTEMTIME.Day;
                    dateInfo->Month = m_SYSTEMTIME.Month;
                    dateInfo->FullYear = m_SYSTEMTIME.FullYear;
                    dateInfo->Century = m_SYSTEMTIME.Century;
                }
                break;
        case 5: // 秒钟计算
                m_AllSecond = dateInfo->Seconds + number;
                if(m_AllSecond<60){
                    dateInfo->Seconds = m_AllSecond&0xFF;   
                }else{
                    m_Second = m_AllSecond%60;
                    m_AllMinute = m_AllSecond/60;
                    memcpy((void *)&m_SYSTEMTIME,(void *)dateInfo,sizeof(SYSTEMTIME));
                    DateAdd("n",m_AllMinute,(SYSTEMTIME *)&m_SYSTEMTIME);
                    dateInfo->Seconds = m_Second&0xFF;
                    dateInfo->Minutes = m_SYSTEMTIME.Minutes;
                    dateInfo->Hours = m_SYSTEMTIME.Hours;
                    dateInfo->Day = m_SYSTEMTIME.Day;
                    dateInfo->Month = m_SYSTEMTIME.Month;
                    dateInfo->FullYear = m_SYSTEMTIME.FullYear;
                    dateInfo->Century = m_SYSTEMTIME.Century;
                }
                break;
        }
    }
    代码看上去是不是就像直译的偷笑,其实本来也是差不多直译过来用的。好了有需要的就拿去用呲牙
    展开全文
  • EMA返回指数移动平均 用法:EMA(C,N):E的N日指数移动平均.算法:E=(2*C+(N-1)*E')/(N+1) e:=(2*c+(n-1)*e')/(n+1); INPUT:n(5,0,1000); ...e:if(barpos=1,c,(2*c+(n-1)*e)/(n+1)...各位大侠,帮忙给个VB语言的代码!谢谢了!
  • vb编程语言中将函数的触发事件的代码放在标准模块的做法是什么?怎么不通过界面就可以调用和触发模块的函数的事件呢?
  • 学习vb语言

    2019-08-03 17:53:19
    今天大概了解了一下vb语言的一些语法,但是把所学的整理出来,一时间却又不知道如何整理。 换一个方式,我来看看接下来要学什么。 1. vb 变量的作用域 2. 常用的内部函数 3. 数据的输入和输出 4. 常用的标准控件 5. ...
  • 怎么用vb语言中的mid函数怎么从字符串中截取不知道长度的一个数字呢?怎么用mid函数来截取这个字符串中的数字?
  • vb语言中调用的两个函数如果连在一起嵌套调用,那么两个函数的调用的先后关系是什么?能不能在两个函数里传一个变量?
  • vb语言代码大全

    千次阅读 2019-09-25 03:24:17
    VisualBasic是微软公司推出的简单...本文主要介绍的就是vb语言代码大全,分别从五种常用的vb语言代码中来详细说明,跟随小编一起来了解一下吧。 vb语言代码大全 1、数值型函数: abs(num): 返回绝对值 ...
  • 请问用vb语言写程序把两个函数名直接相加,没有写括号是什么意思?这种写法的作用是什么,和写括号的区别是什么?
  • Application.Onkey"{Enter}","HanShu",使用这个语句实现当在特定单元格按下回车键时,可以调用模块HanShu,但我现在想要通过这个语句传递参数,比如我想写成Application.Onkey"{Enter}","HanShu(CanShu1,CanShu2)...
  • 因为VB是博主接触的第一门编程语言,之前有零散的学过一点,所以系统的学起来还是蛮快的。接下来几篇博客会总结一下这本教程中的一些难记的东西,方便以后查看,也希望可以帮到后来学习的小伙伴们话不多说,第一篇是...
  • 主要用到函数说明: MxDrawXCustomFunction::Mx_SendStringToExecuteFun 把一个命令当着一个函数调用,不执行,详细说明如下: 参数 说明 CString sCmaName ...例如: VB,在命令中,调用绘...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,191
精华内容 476
关键字:

vb语言函数