多个暗影lastrow vba

时间:2019-12-15 18:16:25

标签: excel vba

我对VBA不太熟悉,因此下面的代码大部分只是复制,粘贴和研究,无法找到多次使用Dim的方法来将其用于不同的列。我可以在“ lastrow”前面添加一些内容以使其与众不同,而不会出现“编译错误:当前作用域中的重复声明”。

   Dim lastrow As Long
        lastrow = Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
   Dim pointer As Integer
        pointer = 1
   Do Until pointer > lastrow - 1
        Range("D1").Select
        Sheet1.Range("D" & pointer).NumberFormat = "mm/dd/yyyy"
        pointer = pointer + 1
   Loop

2 个答案:

答案 0 :(得分:2)

您可以删除其中不需要SELECT code, SUM(CASE WHEN delivery = 'OK' THEN 1 ELSE 0 END ) AS delivered, SUM(type) all_type FROM sample_table GROUP BY code 的行,也可以根据需要设置循环中多个单元格的.Select

但是有一种更简单的方法,您可以使用一行代码并且不使用循环来设置整个列的.NumberFormat属性:

.NumberFormat

为此,您也可以一次完成多列...

WorkSheets("Sheet1").Range("D:D").NumberFormat = "mm/dd/yyyy"

答案 1 :(得分:0)

不能在一个函数或子函数中多次变暗变量(因此会出现语法错误)。有一些编程语言(例如Java)具有块级范围的概念,在其中可以进行此类重新声明。 VBA不是这些语言之一。

也许这是一个XY problem,而您真正想做的是在每次通过外部循环的过程中重新初始化变量。没问题,只要您想重新声明,就lastrow = 0

也就是说,对于这个特定问题,请遵循braX的建议。在VBA中,通常可以将范围作为一个整体来处理,而不是逐个单元地循环。