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行,不管怎么变,都可以再每行后面加美元两个字了. 


————————————————
版权声明:本文为CSDN博主「点点didi」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/keepiss/java/article/details/79270178

posted @ 2020-04-05 14:22  天涯海角路  阅读(1014)  评论(0)    收藏  举报