返回活动单元格的列索引,以便它可以被操纵以形成一个新的范围

我想有一个普通的单元格的计算总是开始,然后我想翻译的范围取决于date和电子表格上次更新后已经过了多less个星期。

例如Active Cell列索引是4和12周已经过去了。 所以活动单元现在需要列16.然后,我想select12列和右侧的所有使用的行。

$ Sub DataUpdate() Dim WeekCom As Double Dim WeekUpd As Double Dim DatSt As Range Dim DifWks As Double WeekCom = Int("WeekCommencing") WeekUpd = Int("Lastupdate") DifWks = WeekCom - WeekUpd Set DatSt = Range("DataStart") If WeekCom > WeekUpd + 7 Then With ActiveSheet .Range(Cells(row(DatSt), = Column(DatSt)+ DifWks), Cells (Cells.Rowindex.SpecialCells(xlCellTypeLastCell), = Column(DatSt)+ DifWks+12)) End With End If End Sub $ 

这是我到目前为止,我不知道是否因为我是新的VBA的使用。

问候

格雷格

 Sub DataUpdate() Dim WeekCom As Long Dim WeekUpd As Long Dim DifWks As Long Dim DatSt As Range Dim newRange As Range **WeekCom = CInt(Range("WeekCommencing").Value)** **WeekUpd = CInt(Range("Lastupdate").Value)** DifWks = WeekCom - WeekUpd Set DatSt = Range("DataStart") If WeekCom > WeekUpd + 7 Then Set newRange = Intersect(DatSt.Offset(0, DifWks).Resize(1, DifWks).EntireColumn, ActiveSheet.UsedRange) End If MsgBox newRange.Address End Sub 

这个代码似乎仍然提供了一个“溢出”的错误。 目前唯一使用的数据是date格式化为一般数据,在4万个数据库中。 @MacroMan_抱歉打扰你,但我希望你能帮上忙。 我把星号放在显示错误的地方。 干杯格雷格

尝试使用Intersect()Offset()Resize() – 我已经假设DatSt是这种情况下的一个单元格:

 Sub DataUpdate() Dim WeekCom As Integer Dim WeekUpd As Integer Dim DifWks As Integer Dim DatSt As Range Dim newRange As Range WeekCom = CInt(Range("WeekCommencing").Value) WeekUpd = CInt(Range("Lastupdate").Value) DifWks = WeekCom - WeekUpd Set DatSt = Range("DataStart") If WeekCom > WeekUpd + 7 Then Set newRange = Intersect(DatSt.Offset(0, DifWks).Resize(1, DifWks).EntireColumn, ActiveSheet.UsedRange) End If MsgBox newRange.Address End Sub