Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1566|回复: 8

大家进来看看,一起学习一起进步。

[复制链接]
发表于 2010-4-7 21:33 | 显示全部楼层 |阅读模式

用实例讲解VBA语法,举一反三不断练习。扎扎实实打下基础,实实在在学以致用。

不会的多问问题,会的请多来指点指点,

有好例子的献出来大家学习,有好方法的写出来大家分享。

我不会VBA,但我很想学,苦于无处问师,不如集大智慧一起演练。

以下的附件中有一个很好用的程序,是兰色幻想编写的,将数据表中输入的

内容自动输入到另一个工作表中。代码如下:

 Sub 兰色幻想()
 Dim arr, arr1()
 Dim myrow
 myrow = Sheets("产品数据表").Range("a65536").End(xlUp).Row
 arr = Sheets("产品数据表").Range("b8:g" & myrow)
 ReDim arr1(1 To UBound(arr), 1 To 7)
 For X = 1 To UBound(arr)
    k = k + 1
    arr1(k, 1) = arr(X, 1)
    arr1(k, 2) = arr(X, 2)
    arr1(k, 3) = arr(X, 3)
    arr1(k, 4) = arr(X, 4)
    arr1(k, 5) = arr(X, 5)
    If arr(X + 1, 2) & arr(X + 1, 3) = arr(X, 2) & arr(X, 3) Then
     arr1(k, 6) = arr(X + 1, 5)
     X = X + 1
    End If
    arr1(k, 7) = arr(X, 6)
 Next X
 Sheets("SqlTest").Range("a2").Resize(k, 7) = arr1
End Sub

cemfreQs.rar (42.52 KB, 下载次数: 0)

 楼主| 发表于 2010-4-7 21:36 | 显示全部楼层

原来不知道arr是什么意思在字典中也查不到,在网上找了一下发现很多人都是写arr,

后来试着将arr改成其他的字母,竟然也能用,才知道原来只是一个代号,不知道我

这样的理解对吗?

UBound(arr)这个是什么意思?

K 没有设置成变量,也没有对其进行定义,为什么可以直接写 k = k + 1?

[此贴子已经被作者于2010-4-7 21:38:45编辑过]
回复

使用道具 举报

发表于 2010-4-7 21:48 | 显示全部楼层

Dim arr, arr1()
是定义一个任意变量arr 和一个未限定变量范围的动态数组变量arr1()

用arr只是个人习惯,统一变量名可以帮助自己容易明白各种变量都是代表什么类型。一般用arr标示数组,你用a,X,Y也行,就是个名字一个老手的习惯

用DIM定义的数组只能是死的,无法动态,用单元格取数组长和列数必须和单元格一致,

所以定义动态的列数和数据源不一致的数组变量就需要2次定义

用 arr = Sheets("产品数据表").Range("b8:g" & myrow) 把值赋予数组arr 

再通过2次定义,定义动态数组arr 1()的范围  ReDim arr1(1 To UBound(arr), 1 To 7)

UBound 是个VBA函数,作用是取得数组arr的最大下标,即 让arr1()和数组arr长度一致
 

变量的申明,有2个选项,选项在VBE编辑器的菜单——工具——选项里,“在要求变量申明”前打勾了,就必须事先申明变量;没有打勾,事先没有申明变量,就默认变量为任意变量,任意变量占内存较多

另变量的申请又分过程级别和模块级别

DIM语句在过程中,就是申明过程级别的变量,在过程外就是申明了模块级别的变量,即整个模块都能用。但DIM语句申明的变量生产周期随着过程的结束而结束,即每开始运行代码变量就归初始值了

所以说LZ贴的代码,不能说兰色没有申明变量。或许申明语句在你看不见的模块里,兰色没有粘出来罢了

另提一句申明变量不单单只有DIM一种方法,还有申明可跨表变量的语句、声明只能私有模块可用变量语句,和代码运行完还保持值一直存续,用于下一次运算的变量申明语句

[此贴子已经被作者于2010-4-7 23:01:37编辑过]
回复

使用道具 举报

发表于 2010-4-7 21:51 | 显示全部楼层

学习了,谢谢分享!
回复

使用道具 举报

 楼主| 发表于 2010-4-7 22:17 | 显示全部楼层

吸收能量,那么K是怎么回事呢?为什么可以直接用K=K+1,

前面并没有对K进行定义啊。

回复

使用道具 举报

 楼主| 发表于 2010-4-12 20:50 | 显示全部楼层

Range("b8:g" & myrow)
请问此句是什么意思?

3楼好厉害,什么时候才能学到这个水平啊?

[此贴子已经被作者于2010-4-12 20:55:31编辑过]
回复

使用道具 举报

发表于 2010-4-14 11:07 | 显示全部楼层

学习学习

回复

使用道具 举报

发表于 2010-4-14 11:26 | 显示全部楼层

大家进来看看,一起学习一起进步。

路过,一起学习学习

回复

使用道具 举报

发表于 2010-4-15 17:34 | 显示全部楼层

VBA怎么用啊
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-16 11:00 , Processed in 0.276868 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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