精华内容
下载资源
问答
  • ![图片说明](https://img-ask.csdn.net/upload/201905/16/1557975315_284521.png) 一直提醒类型不匹配 求解
  • 解决VBA运行时错误13 类型不匹配问题 先说解决方法:找到出错的语句以后给里面的参数改类型,使其互相兼容。 比如:给单元格Cells()外面套个马甲 Val() 比如:给数字外面套个马甲Int() 详细的排查过程后面会慢慢讲...

    解决VBA运行时错误13 类型不匹配问题

    先说解决方法:找到出错的语句以后给里面的参数改类型,使其互相兼容。

    • 比如:给单元格Cells()外面套个马甲 Val()
    • 比如:给数字外面套个马甲Int()
      详细的排查过程后面会慢慢讲……这是一个翻转灵异的奇怪问题。

    我这边出问题的例子参见杨洋老师的书《深入浅出Excel VBA》第3章,3.2.1节,我原样敲仅VBE里面运行就报错了:

    Sub Scores()
    	   Dim i
    	   For i = 3 To 5
    	   		Cells(i, 6) = Cells(i, 3) + Cells(i, 4) + Cells(i, 5)
    	   		Cells(i, 7) = Cells(i, 6) / 3 '报错就在这一行
    	   Next i
     End Sub
    

    我试了下,解决方案有二:

    1. Val(Cells(i, 6)) 也就是给Cells(i, 6) 穿马甲
    2. 或者, In(3)—— 强调下3不是字符串是整数()

    解决归解决,但是要搞清楚之前死在哪里才行,于是我在代码里加了一句显示数据类型的代码

    Sub Scores()
          Dim i
          For i = 3 To 5
          		Cells(i, 6) = Cells(i, 3) + Cells(i, 4) + Cells(i, 5)
          		MsgBox MsgBox TypeName(Cells(i, 6))
          		 '让EXCEL给我跳个弹窗看看这单元格里面到底什么数据格式
          		MsgBox MsgBox TypeName(3)
          		'再看看一个数字3还能是什么形式……
          		Cells(i, 7) = Cells(i, 6) / 3 
          Next i
    End Sub
    

    果然,Cells(i,6)的数据类型不是正常的变量或者整数,而是range
    在这里插入图片描述
    而3就是平平无奇的integer
    在这里插入图片描述
    那么问题来了,Range不能被integer除可以理解,给range套上Val()完全可以理解,variant和一切都搭嘛……但为什么给本来就是integer的3外面套上一层Int()也可以解决问题不再报错呢???

    看到这里只是一般奇怪哈,更奇怪的是

    当我把两条MsgBox代码删掉,想再看看报错效果

    然后,竟然不再报错说什么 运行时错误13了

    只能风中凌乱………………

    展开全文
  • 昨天领导开会,谈论关于运营支撑系统的报表... 会议期间领导提出可以使用VBA来实现,而领导对VBA也是了解多,而Ricki则是一点具体的概念也没有,只听说过VB,呵呵!领导说了,这份功能由他来实现,而且必须当天...
    昨天领导开会,谈论关于运营支撑系统的报表数据处理的需求问题,也就是把一张excel表中的数据复制到另外一张excel表中,人工也可以操作,为了解放这份劳动力,运营支撑部门的领导要求用程序来实现这个功能。
    

    会议期间领导提出可以使用VBA来实现,而领导对VBA也是了解不多,而Ricki则是一点具体的概念也没有,只听说过VB,呵呵!领导说了,这份功能由他来实现,而且必须当天内实现从一张表中取数据并复制到另外一张表中,并保存的。

    说实在,听后压力蛮大,不过领导也把他所知道的如何在excel中录制宏、执行宏、生成启动宏的工作薄一一的告诉了Ricki,听后感觉也真如领导说的那样,“so easy”,呵呵,天底下的领导都是这样的!

    话说了这么多,还是切入正题吧!

    因为没有使用过VBA,录制过程中,虽然代码是自动产生的,但也要做相应的修改。如当前需要“广州”炫铃的信息费数据,那么到另外一张表中,必须去查找“广州”这个地市在哪行,并定位到该地市的信息费在哪行哪列。

    由于有多个地市,所以必须遍历比较,使用了for和if。如:
    For Row = 9 To 29 Step 1
    If Range("B" + Row).Value = "广州" Then
    Range("AH" + Row).Select
    Exit For
    End If
    Next Row

    执行的时候,在Range("B" + Row).Value报类型不匹配。后在网上查找,发现不能用+号(虽然帮助文档说+号是连接运算符),数字和字符串连接的话只能使用&,改后如下:
    For Row = 9 To 29 Step 1
    If Range("B" & Row).Value = "广州" Then
    Range("AH" & Row).Select
    Exit For
    End If
    Next Row

    使用+号,会包“B”转为数字,然后相加。这跟Javascript不一样,如:
    <script>
    var i = 1;
    var j = "AH";
    document.write(j+i);
    document.write("<br/>");
    document.write(i+j);
    </script>
    结果:AH1
    1AH

    今天看到一篇很搞笑的文章,在此也跟大家分享一下《[url=http://hongfanshu.blogbus.com/logs/78875298.html]令人喷饭的程序注释[/url]》
    展开全文
  • VBA数据类型

    2020-05-18 00:50:52
    布尔数据类型 (–1或0) 使用布尔数值数据类型来存储仅包含两个值的逻辑数据:打开和关闭,true和false,yes和no,等等。...此数据类型不包含任何负值。 如果您尝试分配一个,VBA将返回错误。 货币数据类型 使用“...

    布尔数据类型 (–1或0)

    使用布尔数值数据类型来存储仅包含两个值的逻辑数据:打开和关闭,true和false,yes和no,等等。 关键字True和False是预定义的常量,可以分别与值–1和0互换。


    字节数据类型 (0到255)

    字节是VBA最小的数字数据类型,并具有0到255之间的数字值。此数据类型不包含任何负值。 如果您尝试分配一个,VBA将返回错误。


    货币数据类型

    使用“货币”数字数据类型存储从–922,337,203,477.5808到922,337,203,685,477.5807的货币值。


    日期数据类型

    Date数据类型存储特殊格式的

    代表日期和时间的数值 。 您不必同时存储日期和时间值。 Date数据类型接受日期或时间,或两者都接受。 可能的值范围是100年1月1日到9999 12月31日。小数数据类型

    Decimal数据类型是Variant的子类型,并不是一个真正独立的数据类型,如果该值不包含小数位,则可容纳从–79,228,162,514,264,337,593,543,950,335到79,228,162,514,264,337,593,543,950,335,335的值。 数据类型的精度最高可保留28个小数位,其值从–7.9228162514264337593543950335到7.9228162514264337593543950950335。

    双重数据类型

    使用Double数据类型存储从–1.79769313486232E308到–4.94065645841247E-324或1.79769313486232E308到4.94065645841247E-324的精确浮点数。


    整数数据类型

    除了字符串之外,这可能是最常用的数据类型。 使用此数据类型仅存储范围为–32,768至32,767的整数。

    长数据类型

    Long数据类型也是仅存储整数的Integer数据类型,但是范围比传统的Integer数据类型大得多。 使用Long存储从–2,147,483,648到2,147,483,647的值。

    对象数据类型

    Object变量实际上是对Access对象(例如表单,报表或控件)的引用。 或者,数据类型可以引用ActiveX组件或在类模块中创建的类对象。

    单一数据类型

    单一数据类型存储精度数字,即带小数位或小数的数字。 数据类型类似于Double,但是范围较小。 使用此数据类型存储从–3402823E38到–1.401298E–45或从1.401298E–45到3.402823E38的值。

    字符串数据类型

    字符串是另一种非常常见的数据类型。 它存储值或数字,但将其视为文本。 有两种:固定的和可变的。 固定字符串可以处理1到65,400个字符。 声明一个

    固定字符串,请使用Dim变量名形式的Dim语句As String * stringlength

    相反,

    变量 String数据类型根据需要增加和缩小以适合其存储值。 默认情况下,所有String变量都是此类型。 要声明此类型,请使用以下形式的Dim语句
    Dim变量名As字符串 变量数据类型

    Variant数据类型存储数字和非数字值。 此数据类型是最灵活的,因为它存储几乎任何类型的非常大的值(与Double数值数据类型匹配)。 仅在不确定数据类型或容纳外部数据并且不确定数据类型的规格时才使用它。

    Variant数据类型是VBA的默认值,因此以下代码将varValue解释为Variant:

    昏暗的varValue

    尽管Variant数据类型很灵活,但是VBA处理这些数据类型的速度要慢一些,因为它必须为分配的值确定最准确的数据类型。 但是,很可能您永远不会注意到性能下降。

    最大的缺点是数据类型缺乏可读性。 那样的话,我们意味着您无法通过查看代码轻松确定合适的数据类型,这可能是一个问题。

    注意:

    请参阅

    Matthew的帖子 ,提供有关VBA7中64位算术和指针兼容性的更新信息

    From: https://bytes.com/topic/access/insights/601315-vba-data-types

    展开全文
  • 先来说一下解决方案:使用 CurrentRegion.Value 即可。 -------- 今天需要在 Excel 里放一个小程序,于是在网上边搜 VBA 边写程序。 其中一步要获取“单元格所在列的最后一行的...类型不匹配? 于是我想调一下监视.

    先来说一下解决方案:使用 CurrentRegion.Value 即可。

    --------

    今天需要在 Excel 里放一个小程序,于是在网上边搜 VBA 边写程序。

    其中一步要获取“单元格所在列的最后一行的行数”,网上给了很多方法,其中一个是用求上限函数:Ubound(数组位置)

    按照文章的方法,我可以写:

    rowMax = UBound(Worksheets(1).Range("b2").CurrentRegion, 1)

    但是运行的时候系统提示:

    类型不匹配?

    于是我想调一下监视窗口,结果点了半天屏幕没反应……后来才发现是在窗口的最下面的那一小条,拉起来……(感觉好傻哈哈)

    经过查询发现,如果只写到“CurrentRegion”,那么类型是variant/object/range,但是如果后面再写上".value"的话,类型则是variant/variant(1 to 40, 1 to 4),就解决了。仔细查了一下函数里的内容,发现竟然没有 value 属性,但是有 value2,而且在后面写“.value2”也是可以的。Hmm, interesting...

    我用的版本是买电脑送的Office 2019 家庭学生版

    展开全文
  • 标准表达式中数据类型不匹配。 两边的单引号去掉就好了,否则是在使用文本型. 改为:去掉两个单引号 ok,成功! 转载于:https://www.cnblogs.com/wxl845235800/p/7568934.html...
  • Sub c() Dim m$,i%,n$ a=Intputbox(“请输入”,“提示”,0) For i=1 to 50 n=Application.Mid(Cells("i",1),1,7) n=n&m i=i+1 sheet1.Cells("i",1)=n i=i-1 Next End sub
  • 原因: 第一行记录为空或者为数字,将第一行记录的这个列改为字符串. 比如第一行是数字的 ...那么下面要增加的记录(2,3,4...),就必须是数字的,如果是字符串,它将会报错,所以需要在第一行填充一些字符串
  • Excel VBA(07)数据类型和转换

    千次阅读 2020-04-29 12:27:28
    一、vba 数据类型 1、基本数据类型 整数类型:byte、integer、long、long long 小数类型:single、double 布尔类型:boolean 字符型:string 万能类型:variant 其他类型:date、object 2、...
  • 【VBA研究】VBA数据类型定义与效果

    千次阅读 2015-08-07 11:55:27
    作者:iamlaosong 数据类型是对同一类数据的统称,如文本、日期、数值等。VBA里的数据类型有:字节... VBA数据类型定义的管控并强,比如定义成整数型的变量同样可以赋值字符串,但是如果注意,就会导致逻辑错误。
  • Access 标准表达式中数据类型不匹配

    千次阅读 2014-05-08 10:08:02
    Access标准表达式中数据类型不匹配 今天在做一个小程序时,要求用到Access数据库,在调试运行一个SELECT语句时,老是提示标准表达式中数据类型不匹配,弄了好久,原来发现是数据类型不匹配的问题.如:select * from table1...
  • 2VBA里无法用%这种数据类型来计算 VBA里没有 %百分数这种数据类型 VBA里无法用%这种数据类型,来计算 如果在VBE里输入 5% 会自动变成 5 VBA里最多可以像文本一样显示百分数,比如 text(a,"0.00%") 3 %在VBA里...
  • Sheets("结果").Cells.ClearContents '清理保存数据的区域 For I = 0 To rs.Fields.Count - 1 Worksheets("结果").Cells(1, I + 1) = rs.Fields(I).Name Next Sheets("结果").Range("a2").CopyFromRecordset rs ...
  • sql=“update news set title=@title where id=@id” //sql语句尽量不要这样写,由于在Access中要求参数必须一一对应 ...sql=“update news set title=@title where ...sql=“update news set title=@tit
  • " End If Next i End If If Target.Column = 5 Then For j = 2 To ActiveSheet.UsedRange.Rows.Count If Cells(j, 5) = Target.Value Then \\该行报错 MsgBox "第" & j & "行和" & "数据 【" & Target.Value & "】...
  • 数据类型判断、转化,对话框(弹框输入、提示,返回文件路径、文件夹),空的一些情况,正则表达式语法,其他常用语句。
  • VBA:SumProduct函数在使用过程中,发现通过*的形式是无法添加条件的,这个时候除了通过Evaluate转化成单元格公式之外还有一个非常简单的处理方式:就是把基础数据,也就是你要算相乘的列的数据,先把他们算好,然后...
  • 这次要做的就是,如果这个单元格数据类型是字符串,我们就去进行子字符串的匹配,说的简单点就是判断指定单元格有没有我们需要找的字符串。 例如:判断单元格J6有没有‘√’,代码如下: Sub aa() Set a = Range...
  • 我用C#代码向Access2003的数据库中添加记录的时候,出现了这样的异常提示信息:标准表达式中数据类型不匹配。 类型的映射如下:数字-&gt;OleDbType.Integer文本-&gt;OleDbType.VarChar备注-&gt;...
  • VBA里的编译错误,就是写在VBE里,还没运行就报错的那类错误 1.2 运行错误(和数据关系较大): 运行时才会出错的错误 比如一个语句运行时发现此操作会无法进行,卡住,或者返回值报错等等 这...
  • VBA代码做匹配处理

    千次阅读 2014-11-30 13:49:45
    ' 按照发票号码做匹配,重新生成一个明细的表格,本例子的模板是Sheet9 和 Sheet13 'Sheet9 是明细,Sheet13 是汇总的, 需要从这个两个Sheet里重新提取数据到一个新的Sheet14里  'If Workbooks(1).Worksheets...
  • 今天在做一个小程序时,要求用到Access数据库,在调试运行一个SELECT语句时,老是提示标准表达式中数据类型不匹配,弄了好久,原来发现是数据类型不匹配的问题.如:select * from table1 where datetime='"+今天的日期....
  • 大家好,我是海林,今天跟大家分享的VBA小代码主题是数据精确查询与匹配。 我们用王者荣耀的数据来举例,如下图所示。根据A:C列的数据源信息,查询E列英雄名相应的职业类型,如果查询无结果,则返回空白。 此类问题...
  • 编程中发现一个问题,系统总是提示编译错误,ByRef 参数类型不符, 可实际上参数定义没问题,原因在哪儿呢? 2、问题环境 假定函数定义如下: Function get_kind(addr As String) As Integer ...... End Function ...
  • VBA 数据透视表的创建

    千次阅读 2021-01-21 15:21:37
    方法 读/写 值类别 默认值 说明 .ColumnGrand ...数据透视表在刷新或移动域时自动设置格式 ...如果数据透视表在有错误的单元格中显示用户自定义的错误字符串,则该值为 True。 .ErrorString 返回...
  • vba rnd 介绍 VBA Rnd()函数通常用于生成“随机”数字。 当然,您无法使用任何编程算法生成真正的随机数。 但是某些伪随机数生成器算法要比其他算法好。 本文讨论了为什么本机PRNG不好的原因,以及在真正需要...
  • 本文介绍了利用 Excel 中的 Power Query 与 VBA 实现 CSV 格式数据清洗的关键步骤及思路,对实操过程中的性能提升等具体问题给出了解决办法,最后对此类问题给出了通用的注意事项,具备一定的指导性。
  • VBA的DateDiff函数和工作表函数DateDif的区别 示例 如图所示,该表为某公司员工基本资料。如何使用VBA提取身份证号码中的出生日期,并计算每个员工的年龄? 姓名 身份证 出生日期 年龄 高勤艳 ...

空空如也

空空如也

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

vba数据类型不匹配