引用工作表来绘制数据

我正在编写一个vbamacros,允许我从工作表中引用数据,并总结一些数据,而不是使用大量的公式来做到这一点。

我在引用工作表时遇到了困难,并且已经恢复为激活工作表。 我不确定我做错了什么。 例如:

Sheets("Rainfall").Activate Set x = Range(Range("C2"), Range("C2").End(xlDown)) 

而不是

  Set x = Sheets("Rainfall").Range(Range("C2"), Range("C2").End(xlDown)) 

当我尝试引用代码如

  Cells(2 + j, 3) = Application.WorksheetFunction.VLookup(Cells(2 + j, 2), Worksheets("Raw Data").Range(Range("C4"), Range("H4").End(xlDown)), 6, False) 

我得到一个1004错误。 下面是我的代码,如果有人有任何关于简化代码的build议,那也是很棒的。

  Sub selectall() Dim x, y As Range Dim nv, rd As Long Set Wkb = Workbooks("DWH Calculations V1.xlsm") Sheets("Rainfall").Activate Set x = Range(Range("C2"), Range("C2").End(xlDown)) nv = x.Rows.Count 'MsgBox (nv) Sheets("Raw Data").Activate Set y = Range(Range("E4"), Range("E4").End(xlDown)) rd = y.Rows.Count 'MsgBox (rd) MinD = Round(Application.WorksheetFunction.Min(y), 0) MaxD = Round(Application.WorksheetFunction.Max(y), 0) Ndays = MaxD - MinD 'MsgBox (Ndays) Sheets("Rainfall").Activate Cells(2, 2) = MinD For j = 1 To Ndays - 1 Cells(2 + j, 2) = Cells(1 + j, 2) + 1 Cells(2 + j, 3) = Application.WorksheetFunction.VLookup(Cells(2 + j, 2), Worksheets("Raw Data").Range(Range("C4"), Range("H4").End(xlDown)), 6, False) Next j End Sub 

感谢大家的帮助

这已经被问过很多次了 – 你需要用工作表对象限定所有Range调用,所以:

 Set x = Sheets("Rainfall").Range(Sheets("Rainfall").Range("C2"), Sheets("Rainfall").Range("C2").End(xlDown)) 

或者使用With...End With块:

 With Sheets("Rainfall") Set x = .Range(.Range("C2"), .Range("C2").End(xlDown)) End With 

并注意所有三个Range调用之前的时间段。 您也可以使用Worksheetvariables:

 Dim ws as Worksheet Set ws = Sheets("Rainfall") Set x = ws.Range(ws.Range("C2"), ws.Range("C2").End(xlDown)) 

问题是范围内的范围:

更换:

 Set x = Range(Range("C2"), Range("C2").End(xlDown)) 

有:

 With Sheets("Rainfall") Set x = .Range(.Range("C2"), .Range("C2").End(xlDown)) End With 

激活不需要设置范围。