Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在具有不同行数的所有图纸上运行VBA格式代码_Vba_Loops_Excel - Fatal编程技术网

在具有不同行数的所有图纸上运行VBA格式代码

在具有不同行数的所有图纸上运行VBA格式代码,vba,loops,excel,Vba,Loops,Excel,这里的VBA noob需要一点帮助。我似乎找不到解决办法,也找不到工作 我尽可能地简化它,以得到概念证明 基本思想是用所有边框格式化一个单元格(比如A1),在第一个工作表(例如A1:C10)中的所有数据中向下复制该格式,然后对后续工作表中的数据执行相同的操作。我正在努力解决的是,后续的工作表都有不同的行数,我尝试的任何操作都只是将附加工作表格式化为原始工作表的(A1:C10),即使没有数据 非常感谢您的帮助。您可以使用以下VBA代码查找列中的最后一行: lastrow = Sheets("She

这里的VBA noob需要一点帮助。我似乎找不到解决办法,也找不到工作

我尽可能地简化它,以得到概念证明

基本思想是用所有边框格式化一个单元格(比如A1),在第一个工作表(例如A1:C10)中的所有数据中向下复制该格式,然后对后续工作表中的数据执行相同的操作。我正在努力解决的是,后续的工作表都有不同的行数,我尝试的任何操作都只是将附加工作表格式化为原始工作表的(A1:C10),即使没有数据


非常感谢您的帮助。

您可以使用以下VBA代码查找列中的最后一行:

lastrow = Sheets("SheetName").Cells(rows.count,columnnumber).end(xlup).row

将columnnumber更改为正在查找的列的编号,例如A列=1。

您需要的是一个变量,用于标识任何给定工作表的最后一行。比如说

LastRow = Worksheets("Sheet1").cells(65000,1).end(xlup).row
现在你可以在你的细胞中循环

for i = 1 to LastRow
  for j = 1 to 3
    Worksheets("Sheet1").cells(i, j)  (apply your formatting)
  next j
next i

65000是一种安全的方式,因为excel 2003只有那么多行,如果你再高一点,它就会断开,但是你可以使用rows.Count方法-
工作表(“Sheet1”)。单元格(rows.Count,1)。End(xlUp)。Row
但是这个获取最后一行的技巧就是解决这个确切问题的方法。是的,我犯了使用1M行的错误,但正如你所说,这在Excel2003中是行不通的。另外,如果您需要识别最后一列(比如C列并不总是最后一列),我会使用类似于
LastColumn=Worksheets(“Sheet1”).cells(1250).end(xltoleft).column
的方法,希望能有所帮助。感谢您的评论,但是如果工作表名称也是动态的呢?您可以只使用
ActiveSheet
,或者如果您在运行它时处于特定的工作表中,只需不引用特定的工作表(例如,
单元格(i,j)