8 excel vba 往多行写入数据

我们都知道, 一个表格里有很多个单元格. 由前面可知,我们要往一个单元格里写入数据,首先就要获得这个单元格的引用. 这样程序才知道在哪里写入数据. 

比如我们要往单元格 A1 写入数据, 可以用 range("A1") ,来表示单元格A1 . 那么如果我们要表示多个单元格该用什么语句呢?


1, 比如我们有如下的表格.我们要在每行的单元格里写上美元两个字


我们知道,range("A1")可以表示 A1 ,同理,range("A5")可以表示A5 ,在vba里, 我们可以把A1到A5理解为一个区域,

当我们知道一个区域的首尾两个单元格的引用的时候,  就可以用 range(首,尾)来表示这个区域.  

在这里

首是 range("A1")

尾是range("A5")

那么这个区域就是 range(首,尾), 即 range(range("A1"),range("A5"))

来,接下来我们复制如下代码来试试

Public Sub diandian8()

   For Each danyuan In Range(Range("A1"), Range("A5"))
   
        danyuan.Value = danyuan.Value & "美元"
   
   Next

End Sub





运行后你就会发现:


代码说明:

前面一节我们说过了 一个循环结构

for each 红包 in 红包集

next

表示出红包集里拿出一个一个红包. 

在这里我们可以理解为:

for each 单元格 in 单元格组成的区域

next


For Each danyuan In Range(Range("A1"), Range("A5"))
   
        danyuan.Value = danyuan.Value & "美元"
   
   Next


这三句可以理解为 从区域里拿出一个又一个的单元格. 然后再这个单元格里加上美元两个字.



2, 由前面我们可以知道,表示一个区域可以使用range(首,尾) 来表示. 在使用的过程中你会发现. 首往往是很好描述的,正常要吗是range("A1") 或者 range("A2"), 但是尾往往不好描述. 

比如今天我们的只有五行数据,可以用range("A5")来描述. 可是明天有10行数据你该怎么为? 你可以说我们可以用range("A10"), 这当然可以,可是有没有一种办法,可以让它自动随着你的行数变呢? 我们一直追求的是,能懒则懒

这里vba提供了一种方法:

Range("A1000").End(xlUp)

这里,range("A1000") 表示的是单元格A1000, 就是A列的第1000行的那个单元格.这个End(xlUp)就厉害了. 初中毕业的我们都知道, up是向上的意思, 比如我们耳熟能详的精典语名: good good study ,day day up. 所以这个可以理解为从A1000为起点,一直往上, 直到遇到一个不是空的单元格为止, 然后就返回这个不是空的单元格的引用.  

所以在我们这个表格中, 从A1000往上,不是空的单元格就是A5了, 即Range("A1000").End(xlUp) 就表示A5的引用了. 


  如何验证这点呢,来,复制下面的句话

Public Sub diandian8()


  Debug.Print Range("A1000").End(xlUp).Value
  
  
End Sub



运行后你会发现:




所以当我们的表格变成了 这样时,




你就可以用

Public Sub diandian8()


   For Each danyuan In Range(Range("A1"), Range("A1000").End(xlUp))
   
        danyuan.Value = danyuan.Value & "美元"
   
   Next


End Sub


这个时候不管你A列有多少行数据, 只要不超过1000行,不管怎么变,都可以再每行后面加美元两个字了. 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值