引用工作表来绘制数据
我正在编写一个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
激活不需要设置范围。