VBA 部分实用函数

今天的学习课程一共是两个,一个是把昨天提到的常用的函数写一遍,另一个是学习一些新函数

 

一、昨天提到的相关函数

https://blog.csdn.net/Di77HaoWenMing/article/details/107886745

1.判断文件是否存在的函数 FileExists

文件是否存在主要是用Dir(path)进行判断,不为空留存在啦

Private Function FileExistx(path As String) As Boolean
    FileExistx = False
    If Dir(path) <> "" Then
        FileExistx = True
    End If
End Function

2.根据路径只获取文件名称 FileNameOnly

主要思路是根据文件的路径地址,截取最右边的小数点 . 到最右边的斜杠 \ 之间的内容,即为文件名。需要用到split函数

如果截取文件名+后缀的话,以下语句即可

Private Function FileNameOnly(filePath As String)
    If Dir(filePath) <> "" Then
        FileNameOnly = Dir(filePath)
    End If
End Function

如果不需要后缀的话,可以用以下方式

Private Function FileNameOnly(filPath As String)
    If Dir(filPath) <> "" Then
        FileNameOnly = Split(Dir(filPath), ".")(0)
    End If
End Function

但是这个会有个问题,就是文件名本身带有小数点的话,截取文件名会出错,比如文件地址是"E:\VBA\常用函数2.0.00002.000版本.xlsm",提取文件名时只会获取到”\常用函数2“为止,所以还需要改一下。

Private Function FileNameOnly(filePath As String) As String
    Dim temp As Integer
    If Dir(filePath) <> "" Then
        '用InStrRev判断最右边的点 . 出现的位置
        temp = InStrRev(Dir(filePath), ".")
        FileNameOnly = Left(Dir(filePath), temp - 1)
    End If
End Function

3.判断路径是否存在 PathExists

主要思路也是用Dir(path,vbDirectory)判断

Private Function PathExists(path) As Boolean
    PathExists = False
    If Dir(path, vbDirectory) <> "" Then
        PathExists = True
    End If
End Function

4.判断活动工作簿是否存在单元格区域名称

RangeNameExists

主要思路:一是用工作簿名称和Range区域名称进行比对;另一种是直接将Range进行赋值,看是否回出现错误。

Private Function RangeNameExists(rname) As Boolean
    Dim wb As WorkBook
    RangeNameExists = False
    For Each wb In Workbooks
        If wb.Name = rname Then
            RangeNameExists = True
            Exit Function
        End If
    Next
End Function

5.判断工作表是否存在SheetExists。

思路和上面一样,根据sheet.Name进行判断

 

6.判断工作簿是否打开WorkbookIsOpen

思路是将工作簿名称进行赋值,没报错误就说明打开了。

Private Function WorkbookIsOpen(wbname As String) As Boolean
    WorkbookIsOpen = False
    On Error Resume Next
    Dim x As WorkBook
    Set x = Workbooks(wbname)
    If Err.Number = 0 Then WorkbookIsOpen = True
End Function

7.判断一个成员在集合中是否存在IsInCollection。

感觉这个很通用,什么都可以放进去测试一下

Private Function IsIncollection(obj As Object, str As String) As Boolean
    IsIncollection = False
    On Error Resume Next
    Dim x As Object
    Set x = obj(str)
    If Err.Number = 0 Then IsIncollection = True
End Function

8.从关闭的工作表获取值

主要通过调用XML宏,用ExecuteExcel4Macro()实现。

我们先在A表的单元格内输入=B表的某个单元格的值,再关掉B表。就会发现原来写的=B表的值链接会发生变化:

='E:\VBA呀呀呀\[单元格操作.xlsm]Sheet1'!$A$2

所以咱们要引用关闭的表格中的值,传入到ExecuteExcel4Macro中的参数也大概长这样,主要是引号、感叹号、中括号需要加进去

Private Function GetValue(path As String, file As String, sh As String, ref As String) As String
    If (Dir(path, vbDirectory)) = "" Then
        GetValue = "找不到路径"
        Exit Function
    End If
    If (Dir(path & "\" & file)) = "" Then
        GetValue = "找不到文件"
        Exit Function
    End If

    Dim x As String
    x = "'" & path & "\" & "[" & file & "]" & sh & "'!" & Range(ref).Range("A1").Address(, , xlR1C1)
    GetValue = ExecuteExcel4Macro(x)
End Function

 

咱们用以下方式调用一下

Sub runF()
    Dim path As String, file As String, sh As String, rng As String
    path = "E:\VBA呀呀呀"
    file = "单元格操作.xlsm"
    sh = "Sheet1"
    rng = "A1"
    MsgBox GetValue(path, file, sh, rng)
End Sub

当然为了防止报错,也可以先把x输出一下,看看要传入到ExecuteExcel4Macro()中的参数是不是和之前提到的

='E:\VBA呀呀呀\[单元格操作.xlsm]Sheet1'!$A$2

经过实际测试,调用成功!输出结果如下:

 

二、今天学习的相关函数

1.返回单元格格式信息。

判断是否加粗(条件格式设置的加粗无法判断)

Function ISBOLD(cell) As Boolean
    ISBOLD = cell.Font.Bold = True
End Function

判断是否是斜体

Function ISITLIC(cell) As Boolean
    ISITLIC = cell.Font.Italic = True
End Function

需要注意:如果一个单元格内有多种格式,会出错哟

输出单元格底色信息,我们可以看到红色的底色是3

Function FILLCOLOR(cell) As Integer
    FILLCOLOR = cell.Interior.ColorIndex
End Function

为毛红色是3呢?咱们写个循环,看看各个colorindex对应什么颜色,颜色最多到56哟,再大会报错

2.输出语音。看起来还比较炫酷,其实也就系统函数一句话的事儿~

Function SAYIT(txt) Application.Speech.Speak (txt) End Function

经过测试,中英文都能够输出语音哟

 

今天就到这啦,明天继续~

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VBA高级开发指南PDF是一本非常实用VBA编程指南书籍,它主要针对VBA编程从入门到精通的学习者。本书主要讲解VBA编程中的高阶概念和技巧,包括如何处理VBA引用、如何处理VBA错误、如何使用类模块、如何使用窗体控件、如何处理XML和ADO数据访问等内容。 此外,本书还详细介绍了VBA中的各种习惯用法和技巧,如如何优化VBA代码、如何优化程序性能、如何调试程序、如何进行版本控制等。除此之外,本书还讨论了数据清理、数据导入和导出、通信和交互等方面的高级应用,为初学者提供了极具参考价值的实例和案例。 总之,VBA高级开发指南PDF是一本非常实用VBA编程书籍,它不仅涵盖了VBA编程的各个方面,还提供了丰富的实例和案例,非常适合那些希望在VBA编程领域得到更深入的学习和实践的人们。如果你是一位VBA编程的爱好者或者想要在VBA编程方面有所突破的人,那么这本书绝对是一本值得购买和阅读的学习资料。 ### 回答2: 《VBA高级开发指南》是一本介绍VBA高级编程技巧的书籍,主要分为三个部分VBA概述、VBA高级编程技巧和VBA应用案例。 在VBA概述部分,介绍了VBA的基础知识、VBA开发环境和VBA编程规范等内容,为后续高级编程技巧的学习奠定了基础。 在VBA高级编程技巧部分,作者从数据类型、数组、函数、对象、类模块、事件处理等多个方面深入剖析了VBA的高级编程技巧,帮助读者更好地掌握VBA的各种编程技巧,达到熟练运用VBA进行高级编程的目的。 在VBA应用案例部分,作者通过实例讲解了如何使用VBA进行常用应用程序的开发工作。例如,如何使用VBA开发Excel报表、Access数据库和Word文档等应用程序。这部分主要是通过实例帮助读者了解VBA的实际应用效果,提高其开发应用程序的能力。 总体来说,《VBA高级开发指南》适合已经掌握VBA基础知识、具备一定编程经验的读者进行学习,它突破了VBA基础编程的界限,帮助读者更深入、更全面地掌握VBA高级编程技巧,为读者在日常工作中使用VBA解决实际问题提供了有力支持。 ### 回答3: 《VBA高级开发指南》是一本关于VBA编程的书籍,主要针对那些想要深入学习VBA的人群。本书共分为20章,涵盖了VBA编程的各个方面,从基础知识到高级应用都有所讲解。 本书的第一章主要介绍了VBA的基础知识,包括VBA的概念、VBA编辑器的结构、如何编写基本的VBA程序等。第二到第七章主要讲解了VBA编程的语言基础,包括变量、数组、循环语句、条件语句、函数和子程序等。 第八到第十章主要介绍了VBA编程中的对象模型,包括Excel对象模型、Outlook对象模型和Word对象模型等。这些章节介绍了如何使用VBA编写与这些对象模型相关的程序,例如如何操作Excel文档中的单元格、如何发送邮件等。 第十一到十三章介绍了VBA编程中的高级技巧,包括错误处理、调试技巧和自定义控件等。这些技巧可以帮助程序员更好地管理程序并提高程序的质量。 第十四到十六章介绍了VBA的数据库相关技术,包括连接数据库和使用SQL语言查询数据等。 第十七到十九章主要介绍了如何使用VBA编写自定义的Add-ins和COM组件。这些章节包括了与COM相关的知识,如何创建和使用COM组件等。 最后一章则介绍了如何使用VBA与其他编程语言进行交互,例如使用VBA调用C#编写的程序等。本书内容丰富全面,适合VBA初学者和有一定编程基础的人群阅读。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值