Excel vba的问题

2025-04-08 18:58:23
推荐回答(5个)
回答1:

给你以下代码 删除工作簿所有表格内容 不管是10个也好 100个也好 通通删除掉

Sub test()

For i = 1 To Sheets.Count

    Sheets(i).Activate

    Cells.ClearContents

Next

End Sub

回答2:

如果你指的是 nm,并且100个工作表名就是1~100,那么可以用Split

Dim nm
Dim strnm As String, i As Integer
strnm = ""     '先组成 “1,2,3,4,……”这样的字符串
For i = 1 To 100
    strnm = strnm & i & ","   '也可以用其他分隔符
Next i
strnm = Left(strnm, Len(strnm) - 1) '删除最后一个分割逗号
nm = Split(strnm, ",")

这样就得到了一个1~100的数组

当然,工作表名前面还可以有Sheet或其他字母、文字【在组合时进行适当更改】,只要有一部分有规律,能循环就行。

如果100个名称没有规律,不能用循环,这个方法就没有用了。如果工作表是同一个工作簿(Workbook),可以Sheets(1)、Sheets(100)这样引用,不非得用字符串的Sheet名。

回答3:

dim语句中的integer都改为Long,因为Integer正数最大为32767

另外,大量循环应该考虑将表格读入数组,用数组参与循环,提高速度。

比如使用语句:A1=Worksheets("样本1").usedrange
则生成A1数组,A1(i,1)就相当于cells(i,1)

另外可以学习VBA的字典法,进一步提高匹配速度
这样可以么?

回答4:

你这个过程很容易看出问题来呀,你最开始定义了一个变量dim j 并且 j=0 那么 worksheets("第二部分").cells(j,9) 肯定报错,因为工作表当中的单元格最小的行数是1,不是0 所以你至少应该把j=1而不是j=0

回答5:

上图片,不懂你100个工作表有什么规律,你这按钮也就是清空工作表么,for each循环一下不就全搞定了。