这是我的代码和表格,希望能将表格中第六行导入vb的数组中但是显示类型不匹配,大佬帮忙看看哪里出了问题
解决方案 »
- 用Winsock1.SendData的加密解密问题
- 无闪烁画图?在线
- 如何解决数据库连接问题
- 为VB -- COM+ 苦苦煎熬的朋友看一看这里,你会茅塞顿开!
- F1Book6.14、VsFlexGrid7、ActiveBar2(Sp)下载。顺便散分
- 如何用vb读取局域网的D盘路径下的一个test.jpg文件,需要动态获取完整路径?
- VB 报表 The CopyRight String has.........
- Listview 请各位高手看一看
- 我用wininet.dll的API,怎样知道我的数据已经发送完毕?
- 请问如何用VB读取sql sever7.0中类型为binary的字段的数据?
- 如何用VBA将Txt档转EXCEL相应的单元格里面
- 谁能给我点C币啊啊啊
应该是:
for i= 1 to 15: Print a(i): Next
应该是“第6列”吧!
另外,在使用动态数组之前,应该先“分配数组元素的数据空间”。
在你的 For循环之前,就要写上: Redim a(15)
这儿因为你最多用到a(15),当然你用Redim a(20)或Redim a(500)都可以,只是浪费了一些内存空间而已。
如果你要用到多少个数组元素是“确定”的,就可以声明固定数组,这样就不需要(也不能用)Redim分配空间了。
比如你这个,把 Dim a() As String ,改成 Dim a(15) As String就行了。
另外,在使用动态数组之前,应该先“分配数组元素的数据空间”。
在你的 For循环之前,就要写上: Redim a(15)
这儿因为你最多用到a(15),当然你用Redim a(20)或Redim a(500)都可以,只是浪费了一些内存空间而已。
如果你要用到多少个数组元素是“确定”的,就可以声明固定数组,这样就不需要(也不能用)Redim分配空间了。
比如你这个,把 Dim a() As String ,改成 Dim a(15) As String就行了。
应该是“第6列”吧!
另外,在使用动态数组之前,应该先“分配数组元素的数据空间”。
在你的 For循环之前,就要写上: Redim a(15)
这儿因为你最多用到a(15),当然你用Redim a(20)或Redim a(500)都可以,只是浪费了一些内存空间而已。
如果你要用到多少个数组元素是“确定”的,就可以声明固定数组,这样就不需要(也不能用)Redim分配空间了。
比如你这个,把 Dim a() As String ,改成 Dim a(15) As String就行了。
我按照您的修改了,但是在调试过程中运行到a(i - 1) = xlsheet.Cells(i, 6)这一部时就会显示报错,以及要求对象,这是哪里出了问题呢
另外,在使用动态数组之前,应该先“分配数组元素的数据空间”。
在你的 For循环之前,就要写上: Redim a(15)
这儿因为你最多用到a(15),当然你用Redim a(20)或Redim a(500)都可以,只是浪费了一些内存空间而已。
如果你要用到多少个数组元素是“确定”的,就可以声明固定数组,这样就不需要(也不能用)Redim分配空间了。
比如你这个,把 Dim a() As String ,改成 Dim a(15) As String就行了。
我按照您的修改了,但是在调试过程中运行到a(i - 1) = xlsheet.Cells(i, 6)这一部时就会显示报错,以及要求对象,这是哪里出了问题呢
你的“变量名”写错了!
在For 循环之前,你的代码写的: Set ExcelSheet = ExcelBook.Worksheets(SheetID)
但在循环体中,写的却是: xlsheet.cells(i, 6)
xlsheet是未定义、未赋值的变量,如果它作为“对象变量”使用,那么它就是“空引用”,
执行时自然会“运行时错误”,提示“要求对象”。
你更正成: a(i-1) = ExcelSheet.cells(i, 6) 应该就可以了。
不过最好应该写成: a(i-1) = ExcelSheet.cells(i, 6).Value
a(i-1)是 String类型,而ExcelSheet.cells(i, 6)则是“对象类型”。
不可能把“对象”赋值给 String变量,这个赋值操作只能是把“对象的属性值”赋值给 a(i-1)。
代码没有具体指定哪个属性,那么只能是它的“默认属性值”来赋值。
然而:谁能肯定它的“默认属性”是什么呢!万一它的“默认属性”不是你预期的呢!
用“隐含使用默认属性”的方式,不便于代码的“阅读理解”,更严重的是可能造成不可预料的结果!
何苦去节省那几个字符、而带来一些“潜在危险”呢!!!当然你这儿“不写”也会正确达到效果,不过那也只是“凑巧”罢了。
关键是:我认为“隐含使用默认属性”,不是良好的代码风格(或说“编程习惯)。
这回,你需要的是它的”值“,你不写,正好是”取值“了;
下一回,你要的是单元格的宽度(或高度、位置坐标等),你也”习惯不指定具体属性“,那不是差得十万八千里了???