2015-11-06 146 views
0

我使用Excel中的命名范围

Worksheets("Named_ranges").Range("A1").ListNames 

写在Named_ranges表命名范围的列表中,但结果是一样

is_pp4 = Checklist!$D$28 

所以显示的=Checklist!$D$28内容,我需要按F2然后回车。我试图搜索并替换其他答案中建议的= with =,它在从Excel界面执行时工作,但必须使用VBA脚本自动完成,并从那里搜索和替换方法不能解决问题。计算选项设置为自动。

+0

能否请您提供任何代码你到目前为止做了什么 - 特别是你将这些信息写入单元格。 – therak

+0

整个vba代码是'Sub named_ranges() 工作表(“Named_ranges”)。Range(“A1”).ListNames End Sub'这将从整个工作簿中取出命名范围并在表格的A列中输入名称Named_Ranges和B列中的值 – mutant

+0

对不起,那条线--Rorys解决方案应该可以为你工作 – therak

回答

0

这应该做你的描述:

With Worksheets("Named_ranges").Range("A1") 
    .ListNames 
    .CurrentRegion.Numberformat = "General" 
    .CurrentRegion.Replace "=", "=", xlPart 
End With 

编辑:我觉得有可能是ListNames一个时间问题,因此它可能是更好的循环:

Dim n As Long 
Dim arrData() 
With ActiveWorkbook.Names 
ReDim arrData(1 To .Count, 1 To 2) 
For n = 1 To .Count 
    arrData(n, 1) = .Item(n).Name 
    arrData(n, 2) = .Item(n).RefersTo 
Next n 
End With 
Worksheets("Named_ranges").Range("A1").Resize(UBound(arrData, 1), 2).Value = arrData 
+0

代码正在工作和替换完成,但结果仍然像is_pp4 =清单!$ D $ 28,我必须按f2并输入才能获得内容。 – mutant

+0

它为我工作,但也许你已经格式化单元格作为文本,所以尝试修订版本。 – Rory

+0

现在我已经测试了它的代码,它只适用于一个简单的测试文件,只有一个命名范围,但不适用于大约有150个命名范围(目标为7000命名范围)的大型22工作表文件,这些命名范围大多数是指其他单元格和公式。从Excel界面搜索和替换工作虽然 – mutant