如何将单个值分配给整个命名范围VBA

时间:2017-05-23 05:55:06

标签: excel excel-vba excel-formula excel-2010 excel-2013 vba

我正在尝试将单个值分配给整个命名范围。

我知道这可以通过

来完成
 swal({
            title: '',
            text: "Are you sure you want to delete selected record(s) ?",
            type: 'question',
            showCancelButton: true,
            confirmButtonColor: '#3085d6',
            cancelButtonColor: '#d33',
            cancelButtonText: '<i class="fa fa-times"></i> @Resources.No',
            confirmButtonText: '<i class="fa fa-check"></i> @Resources.Yes'
        }).then(function () {
            //  loop on selected rows and remove them using jquery datatable method.

            //  display sweet alert
            swal(
        {
            title: "",
            text: "Record Deleted",
            type: "success",
            allowOutsideClick: "true"
        });

        })

但有没有办法可以在一行代码中完成?这样我就可以节省运行时间。

2 个答案:

答案 0 :(得分:0)

您可以使用

派生命名范围的地址
application.Names("NameOfRange").RefersToRange.Address

您可以将其传递给变量或直接将它们用作单行代码,例如

ActiveSheet.Range(Application.names("NameOfRange").RefersToRange.Address).value = "test"

答案 1 :(得分:0)

在您的问题中,您说明了以下'可以做':

For Each a In Range("Named Range")
    a.Value = "Value"
Next a

但是,这不起作用,因为“命名范围”是一个字符串,而不是范围。

要使它成为范围,它应显示为:

Range("Named Range") = "Value"

如果可行,则可以将其替换为:

Range("A1:C3") = "Value"

但是,这不应该有效,因为“命名范围”不是范围的有效名称,因为它包含空格。

因此,如果在您的工作表中正确输入了相关的命名范围您修改了提供的代码以匹配范围名称,那么您已经获得了可行的答案。

简而言之,答案可能是:

Range("XXXXX") = "Value"

如果要按地址指定范围,或者使用命名范围:

XXXXX

Sheets("ZZZZZ").Range("XXXXX") = "Value" 替换为名称​​ 命名范围。

您可以(并且应该)同时确定工作表名称的完整性;

ZZZZZ

XXXXX替换为工作表/标签的名称,{{1}}替换为范围名称。