如何将活动单元格重置为宏开始所在的单元格?

时间:2019-06-24 20:03:29

标签: excel vba

我试图创建一个宏,该宏从我更新的另一张工作表中的固定单元格中获取数据并将数据输入到另一张工作表中。每天我都会将新数据放入源工作表,并将其作为当天的数据(一行)传输到第二个工作表中。这要求运行宏的原始单元格是固定的参考点。如何重设我从中按下宏按键的单元格?

我尝试过Startcell = activecell或该类型的东西,但是它们没有产生结果。我对VBA不太满意,因此可能是导致其无法正常工作的格式化错误。

on_epoch_end

如果有人可以帮助我,只需将活动单元格返回到“ Range(“ O10:Y10”)。Select”和“ Selection.Copy”之后的起始单元格,那就太好了。

1 个答案:

答案 0 :(得分:0)

类似的东西,未经测试。请注意,在首次分配copyRange之后,尚不清楚您需要在何处粘贴/传输数据。您需要更新destSheet.Range(" ??? ")来引用正确的地址,而不是" ??? "

请注意,我们不会选择或激活任何内容。我们利用以下事实:只需执行rng2.Value = rng1.Value之类的操作,就可以将一个范围内的 Values 直接分配给另一个大小相等的范围。有关在工作簿/工作表之间复制值的更多信息:here

我已经声明了相关的变量,这些变量应该使代码更易于维护(例如,现在只有一个地方需要在以后的几个月中更改工作表名称,等等)

Dim StartCell as Range
Dim copyRange as Range
Dim dataSheet as Worksheet   '## MACRO (insert data)
Dim destSheet as Worksheet   '## Jun-2019
Set dataSheet = Sheets("MACRO (insert data)")
Set destSheet = Sheets("Jun-2019")

Set StartCell = ActiveCell

'First, copy G4:Q4 values
Set copyRange = dataSheet.Range("G4:Q4")
' Update the ??? with the destination for this data from G4:Q4
destSheet.Range(" ??? ").Resize(copyRange.Rows.Count, copyRange.Columns.Count).Value = copyRange.Value

'Second, copy W4:AG5 values:
Set copyRange = dataSheet.Range("W4:AG5")
destSheet.Range("C42").Resize(copyRange.Rows.Count, copyRange.Columns.Count).Value = copyRange.Value

' ## Now set copy O10:Y10 from Jun-2019 worksheet
Set copyRange = destSheet.Range("O10:Y10")
' Finally put these values in the StartCell area
StartCell.Offset(0,11).Resize(copyRange.Rows.Count, copyRange.Columns.Count).Value = copyRange.Value
End With