ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ggsmart

菜鸟谈VBA最最基础入门《原创》

    [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-9 09:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:开发帮助和教程
嘿嘿,我的国庆长假也结束了。
今天第一天上班,来看到大家还是那么热情,嘿嘿。。。。心里面暖暖的。
新的生活又开始了,希望大家开心工作,快乐生活。还有,让我们一起高高兴兴地学习!

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-10-9 11:06 | 显示全部楼层
哈哈,楼主辛苦了~~

TA的精华主题

TA的得分主题

发表于 2009-10-9 12:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
假期结束,第一次报道.

TA的精华主题

TA的得分主题

发表于 2009-10-9 17:25 | 显示全部楼层
感谢楼主 写出这样易读的教材

TA的精华主题

TA的得分主题

发表于 2009-10-10 08:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-10-10 08:32 | 显示全部楼层

回复 663楼 ggsmart 的帖子

楼主好,前面的SelectionChange事件还没留作业呢,同学们经过了一个长假都玩的调皮、不好管了!

TA的精华主题

TA的得分主题

发表于 2009-10-10 09:17 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-10-10 09:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
赫赫(喘个大气先),虽然不是一口气读完,但也只用了几口气而已,
由于初次接触VB一下子赶不上来,加上时间的关系没能一一的仔细研究、做作业。
做个标记,顺便问几个笨笨的问题:
1,对于For—Next语句的理解:
Sub mysum()
Dim Lsum As Long, i As Long(在这里Lsum和i只是一个名字而已,不一定非得用这两个词可以用其他的如AA,BB之类的表示,这样理解对吗?)For i = 1 To 1000
    Lsum = Lsum(这个Lsum是不是可以理解成原值是0的意思,即第一次循环的结果是0+1=1,这样对吗?) + i
Next
MsgBox "1到1000的自然数和为:" & Lsum
End Sub
2,关于数组:
Sub ggsmart()
    Dim arr(1 To 100) As Integer '声明数组名称及数据类型(arr也只是一个名字而已,数组名称不一定非得用arr表示 对吧?)    For i = 1 To 100 '循环,为数组的元素赋值
      arr(i) = i
    Next
  End Sub
单单就上面这段代码按F5后是没看到什么结果显示出来的,可否解释一下为什么?
因为没有结果显示,所以我在Next后面加了一段:[a1].Resize(100, 1) = arr变成如下:
Sub ggsmart()
      Dim arr(1 To 100) As Integer '声明数组名称及数据类型
      For i = 1 To 100 '循环,为数组的元素赋值
        arr(i) = i
      Next
      [a1].Resize(100, 1) = arr
    End Sub
运行后结果是A1到A100的单元格都是1,这里我就不明白了, arr不是表示1到100的意思吗?那运行后A1到A100的单元格不应该是1,2,3,4,......100的意思吗?而怎么A1到A100都是1呢?
如果要执行A1至A100的单元格依次为1,2,3......100该怎么修改?

刚刚接触VB两三天,而且是看着你这贴子学的,所以麻烦老师解释一下上面几个愚笨的问题,非常感谢!

[ 本帖最后由 阿龙168 于 2009-10-10 09:52 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-10-10 10:03 | 显示全部楼层

谢谢谢谢

感谢楼主大人的无私奉献的伟大精神~~~
楼主大人的幽默风趣也是让我有兴趣学下去的理由之一哦,哈哈哈~~

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-10 11:51 | 显示全部楼层

回复 670楼 阿龙168 的帖子

1、Dim Lsum As Long, i As Long(在这里Lsum和i只是一个名字而已,不一定非得用这两个词可以用其他的如AA,BB之类的表示,这样理解对吗?)————是的,变量的名字可以根据自己的需要使用不同的名字,只要起的变量名称符号命名规则,且不是VBA已有的关键字,比如函数名称等即可。

2、 Lsum = Lsum(这个Lsum是不是可以理解成原值是0的意思,即第一次循环的结果是0+1=1,这样对吗?) + i
Next——————Lsum是变量名,这是在对Lsum重新赋值。Lsum的值等于原来的值加上1,第一次循环的时候是0+1,第二次的时候是1+1,第三次的时候是2+1,依次类推,直到循环结束。

3、 Dim arr(1 To 100) As Integer(arr也只是一个名字而已,数组名称不一定非得用arr表示 对吧?)————是的,数组也是变量的一种,既然变量可以用不同的名字,数组同样可以。

4、
  1. Sub ggsmart()
  2.     Dim arr(1 To 100) As Integer '声明数组名称及数据类型
  3.     For i = 1 To 100 '循环,为数组的元素赋值
  4.        arr(i) = i
  5.     Next
  6.  End Sub
复制代码

单单就上面这段代码按F5后是没看到什么结果显示出来的,可否解释一下为什么?————这个程序只是给数组arr赋值,并没有对其进行其他任何可视化的操作,如果要显示,需要加上显示的语句。


5、

  1. Sub ggsmart()
  2.       Dim arr(1 To 100) As Integer '声明数组名称及数据类型
  3.       For i = 1 To 100 '循环,为数组的元素赋值
  4.         arr(i) = i
  5.       Next
  6.       [a1].Resize(100, 1) = arr
  7.     End Sub
复制代码

运行后结果是A1到A100的单元格都是1,这里我就不明白了, arr不是表示1到100的意思吗?那运行后A1到A100的单元格不应该是1,2,3,4,......100的意思吗?而怎么A1到A100都是1呢?
如果要执行A1至A100的单元格依次为1,2,3......100该怎么修改?
——————因为arr是一维数组,而[a1].resize(100,1) 是一A1:A100单元格,是纵向的。一维数组写入单元格时单元格必须是水平的方向。所以你会在每个单元格都看到1。代码改成这样即可:

  1. [a1].Resize(100, 1) = WorksheetFunction.Transpose(arr)
复制代码


关于这个问题,我在前面数组的贴子里也讲到了,建议回去看一看(http://club.excelhome.net/viewthread.php?tid=470603&page=27#pid3123923)。
这是前面的内容截图:

1.jpg



您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 00:09 , Processed in 0.054618 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表