精华内容
下载资源
问答
  • 解决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了

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

    展开全文
  • 下文是源代码,运行时报错误13 ,求指导,谢谢。 百度了一圈也没有解决。 Private Sub Worksheet_Change(ByVal Target As Range) Dim i, j As Integer If Target.Column = 4 Then For i = 2 To ActiveSheet....
  • 先来说一下解决方案:使用 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 家庭学生版

    展开全文
  • 昨天领导开会,谈论关于运营支撑系统的报表... 会议期间领导提出可以使用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]》
    展开全文
  • vb中定义如下: 类模块Class1中代码如下: Dim aa() As String Public Sub setName(ByRef str() As String) ...运行时怎么总是提示“类型不匹配,缺少数组或用户定义类型”啊?实在知道错在哪里了??
  • ![图片说明](https://img-ask.csdn.net/upload/201905/16/1557975315_284521.png) 一直提醒类型不匹配 求解
  • 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
  • VBA:SumProduct函数在使用过程中,发现通过*的形式是无法添加条件的,这个时候除了通过Evaluate转化成单元格公式之外还有一个非常简单的处理方式:就是把基础数据,也就是你要算相乘的列的数据,先把他们算好,然后...

    VBA:SumProduct函数在使用过程中,发现通过*的形式是无法添加条件的,有一个非常简单的处理方式:就是把数据单独相乘作为一列,然后用Sumifs函数直接取就好了。

     

    展开全文
  • Sub 分厂家统计() Set cnn = CreateObject("adodb.Connection") Set rs = CreateObject("adodb.Recordset") cnn.Open "Provider = Microsoft.ace.Oledb.12.0;Extended Properties =TEXT;Data Source =" &...
  • VBA中子函数调用时出现如下错误:"ByRef Argument Type Mismatch",(参数类型不匹配)代码如下: Function MainFunc() Dim a, b, c As Integer a = 111 b = 222 Call AddFunc(a, b, c) MsgBox c End ...
  • VBA代码做匹配处理

    千次阅读 2014-11-30 13:49:45
    ' 按照发票号码做匹配,重新生成一个明细的表格,本例子的模板是Sheet9 和 Sheet13 'Sheet9 是明细,Sheet13 是汇总的, 需要从这个两个Sheet里重新提取数据到一个新的Sheet14里  'If Workbooks(1).Worksheets...
  • 1 EXCEL可以用 百分数来直接运算,但是VBA允许 2VBA里无法用%这种数据类型来计算 VBA里没有 %百分数这种数据类型 VBA里无法用%这种数据类型,来计算 如果在VBE里输入 5% 会自动变成 5 VBA里最多可以...
  • 标准表达式中数据类型不匹配。 两边的单引号去掉就好了,否则是在使用文本型. 改为:去掉两个单引号 ok,成功! 转载于:https://www.cnblogs.com/wxl845235800/p/7568934.html...
  • 原因: 第一行记录为空或者为数字,将第一行记录的这个列改为字符串. 比如第一行是数字的 ...那么下面要增加的记录(2,3,4...),就必须是数字的,如果是字符串,它将会报错,所以需要在第一行填充一些字符串
  • 这次要做的就是,如果这个单元格数据类型是字符串,我们就去进行子字符串的匹配,说的简单点就是判断指定单元格有没有我们需要找的字符串。 例如:判断单元格J6有没有‘√’,代码如下: Sub aa() Set a = Range...
  • VBA里的编译错误,就是写在VBE里,还没运行就报错的那类错误 1.2 运行错误(和数据关系较大): 运行时才会出错的错误 比如一个语句运行时发现此操作会无法进行,卡住,或者返回值报错等等 这...
  • Access 标准表达式中数据类型不匹配

    千次阅读 2014-05-08 10:08:02
    Access标准表达式中数据类型不匹配 今天在做一个小程序时,要求用到Access数据库,在调试运行一个SELECT语句时,老是提示标准表达式中数据类型不匹配,弄了好久,原来发现是数据类型不匹配的问题.如:select * from table1...
  • 大神请指导下,自定义函数运行显示“类型不匹配”? 跟着网上视频走的,视频里运行没问题,代码如下: Function test(sht As worksheet) Application.displayalerts=false sht. delete Application....
  • sql=“update news set title=@title where id=@id” //sql语句尽量不要这样写,由于在Access中要求参数必须一一对应 ...sql=“update news set title=@title where ...sql=“update news set title=@tit
  • VBA研究】VBA数据类型定义与效果

    千次阅读 2015-08-07 11:55:27
    作者:iamlaosong 数据类型是对同一类数据的统称,如文本、日期、数值等。VBA里的数据类型有:字节... VBA对数据类型定义的管控并强,比如定义成整数型的变量同样可以赋值字符串,但是如果注意,就会导致逻辑错误。
  • @VBA GetOpenFilename文件类型筛选规则,返回选择的文件完整路径和文件名 一、概述基本语法 'GetOpenFilename相当于Excel打开窗口,通过该窗口选择要打开的文件,并可以返回选择的文件完整路径和文件名。 '注: 1、此...
  • 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 rnd 介绍 VBA Rnd()函数通常用于生成“随机”数字。 当然,您无法使用任何编程算法生成真正的随机数。 但是某些伪随机数生成器算法要比其他算法好。 本文讨论了为什么本机PRNG不好的原因,以及在真正需要...
  • 编程中发现一个问题,系统总是提示编译错误,ByRef 参数类型不符, 可实际上参数定义没问题,原因在哪儿呢? 2、问题环境 假定函数定义如下: Function get_kind(addr As String) As Integer ...... End Function ...
  • 运行到最后一步的时候,提示错误 13 求高手解答 是数据库里面的一个时间字段,这个程序是access2.0升级到2000的, 好像是这个UPD_CNT 字段原先是16位 ,现在变成32位,所以报错, 求高手帮忙修改
  • 1 DIR基本功能 1.1Dir函数 ... 返回一个String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。 pathname 可选参数。用来指定文件名的字符串表达式,...
  • 每次打开Excel就自动打开VBA小窗口,显示类型不匹配,请问该怎么办呀~救救孩子吧呜呜! [img=https://img-bbs.csdn.net/upload/202101/07/1610029481_883150.png][/img]

空空如也

空空如也

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

vba类型不匹配13