Excel VBA代码无法将数据正确输出至单个单元格问题求助
问题原因
你当前的代码嵌套逻辑错误,外循环每执行1次,内层都会完整遍历所有可见且名称不为「Log」的工作表,每次遍历都会直接覆盖当前目标单元格的取值,最终每个单元格只会保留最后一个工作表的统计值,和你预期的每个单元格对应一个工作表统计结果的逻辑不符。
修改后代码
Sub Totals() Dim wrksheet As Worksheet Dim Ttls As Long Dim x As Long ' 初始化列计数器,从G列(第1位)开始写入 x = 1 For Each wrksheet In ActiveWorkbook.Worksheets If wrksheet.Visible And wrksheet.Name <> "Log" Then With wrksheet Ttls = .Range("B2", .Range("B" & .Rows.Count).End(xlUp)).Rows.Count Worksheets("Log").Range("G17").Offset(0, x - 1).Value = Ttls End With ' 完成一个工作表的写入,计数器+1切换到右侧下一个单元格 x = x + 1 ' 如果你明确要求最多只输出4个结果,可放开下面的注释 ' If x > 4 Then Exit For End If Next wrksheet End Sub
修改说明
- 移除了外层冗余的固定x循环,改用动态计数器标记写入位置,可自动适配符合条件的工作表数量
- 修正了
Ttls的变量类型,行数统计直接用Long类型即可,无需使用Variant也不需要调用Transpose转置 - 遍历工作表的过程中完成一个统计就写入对应单元格,不会出现内容覆盖的问题
内容的提问来源于stack exchange,提问作者Drawleeh
相关产品推荐
相关产品推荐

