首页 > 其他分享 >VBA中的基础知识:类型判别及定义

VBA中的基础知识:类型判别及定义

时间:2024-10-22 12:47:15浏览次数:3  
标签:VBA 判别 arr 基础知识 redim 参数 数组 字符串 变量

变量类型 
用TypeName()函数可以判断变量类型。
TypeName(i)="Single" 就是单精度浮点数
TypeName(i)="String" 就是字符串
 
另外
IsNumeric
判断变量的值是否为数值
isdate
判断变量的值是否为日期
isnull
判断变量的值是否包含任何有效数据
isempty
判断变量的值是否为空
IsArray       
 判断出变量是否为一个数组。
IsError
判断变量是否返回的是一个错误值
IsObject
判断变量是否表示对象变量
 


【变量的类型指定格式】
private 或 public 或 Dim 变量名 as 数据类型
例子
Dim var12 as String
Dim var as Integer
Dim old as Integer, name as Object
常量的类型指定格式 
(private 或 public 或无)Const 常量名 as 数据类型 = 値
【快速声明】 
变量符号
例子:n%,表示n变量为整型数据。

字符串处理

len()==>一个参数,用 len() 函数获得一个字符串长度

使用 instr() ==>两个参数,第一个参数为需要判断的字符串,第二个参数为需要查找的字符串,判断是不是含某个字符,如果有,就会返回该字符出现的位置

使用 left()  mid() ,right() 截取字符串. 用法同Excel函数

使用 replace() ==>三个参数,第一个参数为要处理的字符串,第二个参数为需要查找的旧字符串,第三个参数为需要替换为的新字符串。把字符串中的某个字符替换成其它字符. 接下来把字符串中的an 替换成love

使用 split() ==>三个参数,第一个参数为需要处理的字符串,第二个参数为需要分割的字符串标识(即需要按照什么分割),第三个一半为-1或者省略,把字符串按某个字符分割

常用函数的话还有 trim()  ==>一个参数,可以把字符串前后的空字符串去掉,用法同Excel

StrReverse==>一个参数将字符串倒序排列。源:如果不能从右向左查找,那么先把字符串反过来,在从左向右查找不就行了,可是,怎么把字符串反过来呢?  就可以用这个

但是如果不想反过来,就可以从右向左取值,则可以使用Split + UBound即可,如下代码

Sub test()
Arr = Split("C:\Users\Bocheng\Desktop\1-200.txt", "\")
str1 = Arr(UBound(Arr))
MsgBox (str1)
End Sub
数组

动态数组中用REDIM改变数组最后一维的大小,但是如果数组中已经有了数据,如果只用redim的形式的话,数组中原有的数组就会丢失,为了保留数据,就需要加preserve关键字。
dim 我们见过,它在vba中可以声明变量
   redim呢?是重新声明动态数组,以确定动态数组的大小,如
   dim arr() '声明arr为一动态数组
   声明后是不能直接用的,如 arr(1)=100 这样是错的,必须要声明arr数组的大小和维数才可以装入值,即
   redim arr(1 to x)
   这里x即可以是一个变量,也可以是一个数字,但变量必须是已确定值大小的,如:
   x=range("a").end(xldown).row  '先计算出a列的非值单元格的行数
   redim arr(1 to x)   '把行数作为动态数组的下标
   说了这么多,主人公还没登场,别急,马上就来了
     redim可以声明数组大小,但声明后数组大小是固定的,但如果数组的大小是变动的,我们不知道数组要填入多少值,如果我们还用redim 声明,是可以改变数组的大小,但原来输入的值全部都没有了。如果我们即要保留原来的值,又可以不断扩展数组的大小,该怎么办呢?于是preserve关键字就闪亮登场了。
    一般情况下,我们常用下面的结构
   dim arr()
   for .......设置一个for循环
      If .........IF条件判断符合条件的
         k=k+1  变量k这里是一个计数器,统计符合条件的个数
         redim  preserve arr(1 to k)  重新定义数组的大小,又可以保留数组内现有的值
     end if
  next
   注意:redim  preserve 只能对数组的最后一维进行扩充,
      千万不要这样 redim preserve arr(1 to k,1 to 2)
      应该这样:     redim preserve arr(1 to 2,1 to K)
      如果需要扩充的是第一维怎么办,那就先如扩充第2维,最后用application.transpose转置一下就OK了
   最后给大家提供一个示例吧,希望大家对动态数组的扩充有一个初步的理解。如果有哪里说的不对,请大家多多批评改正。
   Sub test()  ‘把A列大于50的数字装入数组中’
Dim arr(), x, k
For x = 1 To 34
   If Cells(x, 1) > 50 Then
      k = k + 1
      ReDim Preserve arr(1 To k)
      arr(k) = Cells(x, 1)
   End If
Next x
End Sub

标签:VBA,判别,arr,基础知识,redim,参数,数组,字符串,变量
From: https://blog.csdn.net/weixin_43213909/article/details/143114456

相关文章

  • 汇编语言学习笔记(一)基础知识
    指令和数据指令和数据是应用上的概念,在内存或磁盘上,两者没有任何区别,都是二进制信息。如同围棋中的棋子,在棋盒里没有任何区别,在对弈的时候才有不同的意义存储单元计算机最小信息单位为Bit,也就是一个二进制位。8个bit组成一个Byte.通常称之为字节1B=8Bit,1KB=1024B,1M=1024......
  • 用 (Excel) VBA 读取 OneNote!
    本文记录,用VBA读取OneNote的方法,这块似乎一直是空白,研究了好久才找到解决方案!小白贡献,语失莫怪!问题背景:我在OneNote里有上百篇笔记,可OneNote自己,却无法导出全部的标题。于是我千方百计,想要读取OneNote的文件,来获取标题和日志信息。尝试了各种方案,都没能读出OneNot......
  • 校招基础知识详解——计算机操作系统(内存管理)
    文章目录虚拟内存分页系统地址映射页面置换算法最佳页面置换算法(OPT,Optimalreplacementalgorithm)先进先出置换算法(FIFO,FirstInFirstOut)最近最久未使用的置换算法(LRU,LeastRecentlyUsed)最不常用算法最近未使用(NRU,NotRecentlyUsed)第二次机会算法时钟页面......
  • LLM学习-基础知识
    NLPNLP代表自然语言处理,是关于计算机和人类语言之间交互的领域。NLP涵盖了一系列任务,包括文本处理、语音识别、语言翻译、信息检索等。NLP技术的发展使得计算机能够理解、解释和生成人类语言,促进了许多领域的发展,包括智能助手、文本分析、情感分析等。LLMLLM指的是大型语言模型......
  • Java中的基础知识点---Object
    Object类的常见方法有哪些?Object类是一个特殊的类,是所有类的父类,主要提供了以下11个方法:/** *native方法,用于返回当前运行时对象的Class对象,使用了final关键字修饰,故不允许子类重写。 */publicfinalnativeClass<?>getClass()/** *native方法,用于返回......
  • 批量修改文件夹内各种格式文件名(与文件夹名保持一致)——EXCEL VBA 实现
     如下图:加入我们有3个文件夹,需要将3个文件夹内所有文件名改为与所在文件夹名一致,可用excelvba实现。方法如下: 一、打开此xlsm文件打开excel,  alt+F11快捷键打开代码编辑窗口。二、将文件夹路径修改为你的文件夹路径,如下图:需要重命名的文件夹全部放入一个总文件......
  • 15章2节:线性判别分析预测模型构建评估和可视化演示
    线性判别分析(LDA)作为一种经典的分类方法,通过最大化类间差异与最小化类内差异来实现样本的有效分类。LDA在理论上建立了坚实的数学基础,并且在多个领域具有广泛的应用。然而,在应用时需要注意其假设条件,并根据数据的实际情况选择合适的分类方法。在本篇文章中,我们通过Iris数据集......
  • 【基础知识】
    位运算位运算(\(BitwiseOperations\))是一种直接对二进制位进行操作的运算方式。在\(C++\)中,位运算符包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)。这些运算符在处理二进制数据时非常有用,尤其是在需要高效处理数据或进行底层操作时。1.左移运算符(<<)逻辑:左移......
  • k8s基础知识概览
    [top]k8s基础知识概览什么是k8s?Kubernetes|Kubernetes,alsoknownasK8s,isanopensourcesystemforautomatingdeployment,scaling,andmanagementofcontainerizedapplications.|Kubernetes也称为K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统......
  • Python基础知识总结
    变量#变量定义name="name"age=18height=1.75#多个变量赋值a=b=c=1print(a,b,c)字符串#字符串定义及输出str1="hello"str2='world'print(str1,str2)#字符串格式化输出print("name:%s,age:%d,height:%.2f"%(name,age,height))#字符串拼接str3=str1+str2pri......