主页 | excel电子表格 | Word办公 | PPT教学 | Wps文档处理 |

办公软件excel中vba怎样调用if函数

    1. vba编程if

    如果有多个并列的条件,可以使用“And”(逻辑与)、“Or”(逻辑或)来连接。例子:

    2. vba if

    优化还要根据情况来确定。

    条件判断一般还是不可少的。另外,慢也可能是您系统配置的问题或者运行的应用很多,占用了大量的系统资源。还有不上网的话,将防火墙,杀毒软件关了。可能快些。总之,换一台更好的电脑可能才能根本解决问题。哈哈 祝您一切顺利!!

    3. vba if else if

    有ELSE的时候,前面的THEN后面要单独一句,例如:If x > y Then a = x And x = y And y = aElseIf y > z Then a = y And y = z And z = aElseIf x > y Then a = x And x = y And y = atxt4.Value = ztxt5.Value = ytxt6.Value = xEnd If

    4. Excel中如何运用IF函数

    1、首先打开一个Excel,点击一个要使用if函数的空白单元格。

    2、然后在单元格内输入“=if”。

    3、接着在单元格内输入判断条件。

    4、然后在单元格内输入if真值。

    5、接着在单元格内输入if假值。

    6、然后点击enter键,即可完成if函数设置。

    Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件。在1993年,作为Microsoft Office的组件发布了5.0版之后,Excel就开始成为所适用操作平台上的电子制表软件的霸主。

    5. vba中if函数的使用方法

    可以使用定义名称的方式来突破函数7层嵌套的限制,将7层嵌套复制,Ctrl+F3定义名称,将其赋值给一个名称,比如aa,然后再引用aa作为参数即可。但要做到33层嵌套,我感觉使用其他的方向是不是更好啊,比如自己写个VBA做 Select Case 等。

    6. vba if用法

    LEN函数是返回文本串的字符数。

    LENB返回文本串中所有字符的字节数。

    语法:LEN(text)或LENB(text)

    注意:此函数用于双字节字符,且空格也将作为字符进行统计。

    实例1:如果A1=我爱编程,则公式“=LEN(A1)”返回4。

    if len(a)=0 then ...

    用于判断a变量的长度是否为0。

    假设a是字符串变量,那么上述语句判断字符串变量是否是空串,即""。

    假设a是字符串变量,以上语句可以用if a="" then ...来替代。

    7. vba if函数

    If (expression1) (expression2) Then......

    End If

    注意两点:

    1)表达式要用括号括起来,以防运算顺序错误;

    2)两个表达式的结果类型要相容,否则无法互相比较。

    8. excel vba if

    Sub xx()

    c = [j1]

    n = Cells(4 ^ 8, c).End(3).Row

    a = Right([k2], 1)

    For i = 1 To n

    If Cells(i, c).Text = a And Cells(i + 1, c) <> "" And Cells(i + 1, c).Interior.ColorIndex = xlNone Then

    [l3].Offset(0, k) = Cells(i + 1, c)

    k = k + 1

    End If

    Next

    End Sub

    9. excel vba if语句

    一、增加模块

    1.增加一个模块,命名为“我的模块”

    ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule).Name = "我的模块"

    系统常量vbext_ct_StdModule=1

    2.增加一个类模块,命名为“我的类”

    ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_ClassModule).Name = "我的类"

    vbext_ct_ClassModule=2

    3.增加一个窗体,命名为“我的窗体”

    ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm).Name = "我的窗体"

    vbext_ct_MSForm=3

    二、删除模块

    1.删除“模块1”

    ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("模块1")

    2.删除窗体“UserForm1”

    ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("UserForm1")

    3.删除类模块“类1”

    ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("类1")

    4.删除所有的窗体

    Sub RmvForms()

    Dim vbCmp As VBComponent

    For Each vbCmp In ThisWorkbook.VBProject.VBComponents

    If vbCmp.Type = vbext_ct_MSForm Then ThisWorkbook.VBProject.VBComponents.Remove vbCmp

    Next vbCmp

    End Sub

    相关:

    工作表和ThisWorkbook的模块类型为vbext_ct_Document=100

    三、增加代码

    1.在“模块1”中插入代码

    如果需要在“Sheet1”、“Thisworkbook”、或“Userform1”中操作,用只需将下面的“模块1”换成相应的名称即可。

    方法1:

    在模块的开始增加代码,增加的代码放在公共声明option,全局变量等后面。

    Sub AddCode1()

    ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.AddFromString _

    "sub aTest()" & Chr(10) & _

    "msgbox ""Hello""" & Chr(10) & _

    "end sub"

    End Sub

    方法2:

    在模块指定行处增加代码,原代码后移。增加代码不理会和判断插入处代码的内容。当指定行大于最后一行行号时,在最后一行的后面插入。

    Sub AddCode2()

    With ThisWorkbook.VBProject.VBComponents("模块1").CodeModule

    .InsertLines 1, "sub aTest()"

    .InsertLines 2, "msgbox ""Hello"""

    .InsertLines 3, "end sub"

    End With

    End Sub

    相关语句:

    (1)“模块1”中代码总行数:

    ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.CountOfLines

    (2)“模块1”中代码公共声明部分的行数:

    ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.CountOfDeclarationLines

    (3)显示“模块1”中第1行起的3行代码内容:

    Sub ShowCodes()

    Dim s$

    s = ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.Lines(1, 3)

    Debug.Print s

    End Sub

    (4)过程aTest的起始行数:

    ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.ProcBodyLine("aTest", vbext_pk_Proc)

    ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.ProcStartLine("aTest", 0)

    系统常量vbext_pk_Proc=0

    二者的区别是ProcBodyLine返回sub aTest或Function aTest所在的行号,如果sub前面有空行,ProcStartLine返回空行的行号。

    (5)过程aTest的总行数:

    ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.ProcCountLines("aTest", vbext_pk_Proc)

    2.建立事件过程

    建立事件过程除了使用上面的代码如下面的AddEventsCode1外,还可以使用CreateEventProc方法,如AddEventsCode2所示。

    一般方法:

    Sub AddEventsCode1()

    ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule.AddFromString _

    "Private Sub Workbook_Open()" & Chr(13) & _

    "MsgBox ""Hello""" & Chr(13) & _

    "End Sub"

    End Sub

    'CreateEventProc方法:

    Sub AddEventsCode2()

    Dim i%

    With ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule

    i = .CreateEventProc("SelectionChange", "Worksheet") + 1

    .InsertLines i, "Msgbox ""Hello"""

    End With

    End Sub

    上面CreateEventProc的两个参数建立的事件过程为Worksheet_SelectionChange,分别是下划线两边的内容。

    相关:

    测试是否存在SelectionChange事件

    下面函数测试模块modulname是否存在过程subname,如果存在,则返回起始行号,否则返回0。

    debug.print HasSub("Worksheet_SelectionChange","Sheet1")

    Function HasSub(ByVal subname As String, ByVal modulname As String) As Long

    On Error Resume Next

    Dim i&

    i = ThisWorkbook.VBProject.VBComponents(modulname).CodeModule.ProcBodyLine(subname, 0)

    If Err.Number = 35 Then

    Err.Clear

    HasSub = 0

    Else

    HasSub = i

    End If

    End Function

    如果存在,则返回起始行号,否则返回0。

    四、删除代码

    1.删除Sheet1中第2行起的三行代码:

    如果只删除1行代码,第二个参数可省略。

    Sub DelCodes()

    ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule.DeleteLines 2, 3

    End Sub

    2.删除“模块1”的所有代码:

    Sub DelCodes()

    With ThisWorkbook.VBProject.VBComponents("模块1").CodeModule

    .DeleteLines 1, .CountOfLines

    End With

    End Sub

    3.删除过程aTest:

    Sub DelCodes()

    With ThisWorkbook.VBProject.VBComponents("模块1").CodeModule

    .DeleteLines .ProcStartLine("aTest", 0), .ProcCountLines("aTest", 0)

    End With

    End Sub

    4.将“模块1”的第5行代码替换为“x=3”

    ThisWorkbook.VBProject.VBComponents("模块1").CodeModule.ReplaceLine 5, "x=3"

    五、引用项目

    1.增加引用

    ThisWorkbook.VBProject.References.AddFromFile "C:\Windows\System32\asctrls.ocx"

    2.取消引用

    ThisWorkbook.VBProject.References.Remove ThisWorkbook.VBProject.References("ASControls")

    这里ASControls是引用的名字,即后面的rf.Name。

    3.显示当前所有引用

    Sub ShowRefs()

    Dim rf As VBIDE.Reference

    For Each rf In ThisWorkbook.VBProject.References

    Debug.Print rf.Name, rf.FullPath

    Next

    End Sub

    六、信任及密码

    上面所有操作都基于这样的前题:

    (1)EXCEL已设置:

    工具(T)-宏(M)-安全性(M)-可靠发行商(T)-勾选了“信任对于VB项目的访问(V)”

    (2)工程没有设置密码

    如果不能满足它们中的任何一个,代码运行就会出错。因为微软不希望我们对VBProject进行操作,我们无从知道这种操作的直接方法被藏到了什么地方。幸运的是,微软在关起正门的同时,还是为我们留了一道门:SendKeys。借助于这道后门和“错误陷阱”,我们仍可以完成我们所要做的事。

    下面给出绕开这两道门的示意代码,如果你要运行它们,请记得切回EXCEL主界面,而不是在VBE中直接运行。

    1.信任对于VB项目的访问

    Sub SetAllowableVbe()

    On Error Resume Next

    Dim Chgset As Boolean

    '陷阱测试,VBProject.Protection在这儿并无实际的意义

    Debug.Print ThisWorkbook.VBProject.Protection

    If Err.Number = 1004 Then

    Err.Clear

    Application.SendKeys "%TMS%T%V{ENTER}"

    Chgset = True

    DoEvents

    End If

    '要执行的操作....

    '.....

    '操作完成后还原操作前的状态

    If Chgset Then Application.SendKeys "%TMS%T%V{ENTER}"

    End Sub

    2.操作密码工程

    Sub AllowPass()

    Dim pw$

    pw = "Password"

    If ThisWorkbook.VBProject.Protection = vbext_pp_locked Then

    Application.VBEmandBars(1).Controls("工具(T)").Controls("VBAProject 属性(&E)...").Execute

    Application.SendKeys pw & "{ENTER}{ENTER}"

    DoEvents

    End If

    '要执行的操作….

    '.....

    End Sub

    Protection属性返回工程的受保护状态,vbext_pp_locked(1)为受保护,vbext_pp_none(0)表示没有保护。

    10. excel怎么调用vba函数

    你是指利用Excel内置的VBA进行编程还是指用VB编的程序来处理Excel文档或控制Excel?如果是前者,那么你按Alt+F11打开VB界面输入代码即可开始编程。后者则可以把Excel文档或Excel应用程序作为对象进行相应操作。至于具体如何做,那就不是这里一两句话能说清的,甚至一两本书的容量也不一定说得完。

    你可以自己查看Excel和VB的相关帮助文档或者到微软的MSDN网站寻求帮助。

  • 办公软件excel一点保存0没有了怎样办
  • 办公软件excel必须打开公式链接文件