使用命名单元格创建范围

时间:2016-09-02 16:42:04

标签: excel vba excel-vba named-scope

我需要在vba中使用命名单元格创建一个范围。

到目前为止,我有以下哪些无效;

Dim pasteRange As Range
Set pasteRange = Range(firstRow, 11)

pasteRange.Value(11) = slabTemplateSheet.Range("slabTemp").Value(11)

其中firstRow是整数。 slabTemplateSheet引用工作表,slabTemp是所述工作表中的命名范围。

我认为这很简单,因为我的粘贴范围只有1行11列(即连续11个单元格),但我无法使其工作。

在你的答案中,假设有一个,你能否请你给我贴上多行和列的能力,例如,如果slabTemp引用A1:F16

修改:我没有说明我要做的事情。

我在工作表slabTemplateSheet中有一个名为slabTemp的命名范围。在另一张表中,我想复制该范围,包括格式,然后粘贴它。我听说使用复制/粘贴功能很慢,所以我发现上面的属性据说可以做同样的事情,但更快(我还没有测试过它)。来源,Durgesh的回答:fast way to copy formatting in excel

在新表格中,我需要将其粘贴到要创建的范围内(这是我不知道该怎么做)

So Range(firstRow,11)是指保存为firstRow(行号)的整数,11是列号。但这不起作用。

我想我的问题是,我如何使用名称创建范围而不是说范围(" A1:G6")而是Range(firstRow1:secondRow:6)

再次感谢!

3 个答案:

答案 0 :(得分:0)

这是一个有效的例子。

Public Sub CopyRange()
    'Define the Copy Range
    Dim CopyRange As Range: Set CopyRange = Range("MyCustomRange")
    'Define the range to Paste Value to
    Dim PasteRange As Range: Set PasteRange = Range("MyOtherCustomRange")
    'Move the Copy Range into the Paste Range
    'You don't need to specify the sheet name, the Defined named holds that information
    'Important: The ranges should be the same size, otherwise you may get an error
    PasteRange.Value() = CopyRange.Value()
End Sub

答案 1 :(得分:0)

关于如何创建命名范围(工作表范围,而不是代码中的工作簿),请使用以下代码。不确定你想要在这一行中实现什么目标:

pasteRange.Value(11) = slabTemplateSheet.Range("slabTemp").Value(11)

无论如何,这是命名范围的代码:

Sub UseNamedRange()

Dim slabTemplateSheet       As Worksheet
Dim pasteRange              As Range

Set slabTemplateSheet = Sheets("Sheet1")

' create the Named Range "slabTemp" (Named Range for Worksheet)
' you can manualy (or with variables) modify the Range("A1:F16")
slabTemplateSheet.Names.Add "slabTemp", Sheets("Sheet1").Range("A1:F16")
Set pasteRange = slabTemplateSheet.Range("slabTemp")

End Sub

答案 2 :(得分:0)

您似乎没有尝试转移单元格的 xlRangeValueXMLSpreadsheet XlRangeValueDataType enumeration;相反,它听起来像你想要连续11个细胞。

with slabTemplateSheet.Range("slabTemp")
    pasteRange.Resize(1, 11) = .Cells.Resize(1, 11).Value
end with