2015-11-06 178 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