返回活动单元格的列索引,以便它可以被操纵以形成一个新的范围
我想有一个普通的单元格的计算总是开始,然后我想翻译的范围取决于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