0

我的目标是有一个宏,它需要一周的数据,将摘要/总计粘贴到另一个工作表中,然后隐藏/删除我刚刚复制的那一周(或将其移动到不同的工作表,我不在乎)。到年底,你基本上应该每周从Sheet1复制到Sheet2

目前我已经命名了周一到周五捕获的单元格 - 我希望在宏运行后移动它。

我目前所拥有的...

Worksheets("Paste Stuff Here").Range("A1").Value = Worksheets("YearlyDaily").Range(" oneweek incl total column " ).Value

Worksheets("YearlyDaily").Range(" Mon-Fri ").Select Selection.Delete Shift:=xlToLeft

4

3 回答 3

1

我知道这是一种很好的做法,但是您是否有理由在周一至周五使用命名范围?如果您使用单元格引用,它们将始终指向同一区域,即使在删除之后也是如此。除非我错过了什么。很难看到没有看到你的列。

于 2011-11-16T02:20:20.283 回答
1

您可以以与定义它们相同的方式更改命名范围:

Option Explicit 

Sub NamedRange() 

    Dim Rng1            As Range 

     'Change the range of cells (A1:B15) to be the range of cells you want to define
    Set Rng1 = Sheets("Sheet1").Range("A1:B15") 
    ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng1 

End Sub 

[来源]

然而,正如其他答案所指出的那样,可能还有其他(更好的)方法来处理这个问题。请告诉我们更多信息或提出一个包含更多信息的新问题,以便我们为您提供帮助。

于 2011-11-16T07:46:51.607 回答
0

我在这里假设您所说的“我希望在宏运行后移动它”的意思。是您希望命名范围移动。

我有一个按周跟踪时间的电子表格,“第一个”工作表是活动工作表。一周结束后,我将整个活动表复制到新表中。我想要从前一周结转的总数,所以我保留了这些数据。我通过 3 列来做到这一点:当前周总计、旧(前几周)总计、新总计。我将值从新总计粘贴到旧总计。然后我清除用于输入的单元格。

我的每一个直觉都是(是)使用命名单元格,但在这种情况下,我认为这不是正确的做法。我只是使用了单元格范围(A1、K2:K0 等)。问题是名称不是每张表的本地名称,因此您必须将名称从旧表移动到新表,而这不是值得努力。此外,在这种情况下,为每张工作表创建唯一的相似名称(例如,Mon-FriWeek1、Mon-FriWeek2 等)的替代方法在 Week1!A1:A10 等期间不会为您提供任何实用的东西。-除了你使用“应该”这样的名字的自我满足感。反正这是我的意见!

也许这可能会有所帮助:在我的电子表格中,可以从一周到下一周添加/删除行。为了允许这样做并且仍然避免命名范围,我模拟转到每行中都有一个公式的列,然后按 Shift + End 然后按向下箭头。选择将在最后一个输入内容的单元格处停止。这是代码(第一行是标题/标签):

    'Copy New Total Hours as PasteValues to Old Total
    Dim lastRow As Long
    Range("K1").Select
    Range(Selection, Selection.End(xlDown)).Select
    lastRow = Selection.Rows(Selection.Rows.Count).Row + 1
    Range("K2:K" & CStr(lastRow)).Select
    Selection.Copy
    Range("J2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

您确实需要在那里至少保留一排,否则它(以及我的许多其他事情)不起作用。但这很适合我的需要。

我希望这有帮助。

于 2011-11-16T03:48:34.563 回答