为什么我的单元格值不显示?

我在这里有一个VBA代码,最后5行不会显示在我的Excel电子表格。 我究竟做错了什么?

Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet Set ws1 = ThisWorkbook.Worksheets("Count and Avg.") Set ws2 = ThisWorkbook.Worksheets("Individual Board Info") Set ws3 = ThisWorkbook.Worksheets("Graph Info") Dim i As Integer, ii As Integer Dim a As Integer, b As Integer a = ws2.UsedRange.Rows.Count b = ws1.UsedRange.Rows.Count For i = 2 To a ws2.Cells(i, 4) = Date - ws2.Cells(i, 3) Next i ws1.Cells(1, b + 1) = Date ws1.Cells(2, b + 1) = ws2.UsedRange.Rows.Count - 1 ws1.Cells(3, b + 1) = Application.WorksheetFunction.Max(ws2.Columns(4)) ws1.Cells(4, b + 1) = Application.WorksheetFunction.Min(ws2.Columns(4)) ws1.Cells(5, b + 1) = Application.WorksheetFunction.Average(ws2.Columns(4)) 

 b = ws1.UsedRange.Rows.Count 

这看起来像你正在试图获得最后使用的行在ws1,在这种情况下,我build议不要使用这种方法,因为使用的范围不一定是似乎使用的范围(即您可以看到的单元格)

尝试使用这样的东西,而不是:

 b = ws1.Cells.Find(What:="*", After:=ws1.Cells(1), Lookat:=xlPart, _ LookIn:=xlFormulas, SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, MatchCase:=False).Row 

我怀疑使用的范围可能会臃肿,因此您的数据实际上被写在表单中比预期更多。

正如@Axel Ritcher在注释中所提到的那样, Cells函数采用以下格式: Cells([row reference], [column reference])您只需要切换引用就可以了:

 ws1.Cells(b + 1, 1) = Date ws1.Cells(b + 1, 2) = ws2.UsedRange.Rows.Count - 1 ws1.Cells(b + 1, 3) = Application.WorksheetFunction.Max(ws2.Columns(4)) ws1.Cells(b + 1, 4) = Application.WorksheetFunction.Min(ws2.Columns(4)) ws1.Cells(b + 1, 5) = Application.WorksheetFunction.Average(ws2.Columns(4)) 

我没有足够的声望来添加评论,但你可以在即时窗口中做这个,并发布答案? Set ws1 = ThisWorkbook.Worksheets("Count and Avg.") [Press Enter] Set ws2 = ThisWorkbook.Worksheets("Individual Board Info") [Press Enter] ?ws1.UsedRange.Rows.Count [Press Enter] ?ws2.UsedRange.Rows.Count [Press Enter]