2012-12-04 224 views
1

我目前有一個名爲「DataMap」的電子表格,它有一個鍵/值佈局。 關鍵是對另一個電子表格和單元格的引用,並且該值由用戶輸入。用VBA設置另一個單元格引用的excel單元格的值

例如,鍵列可能具有以下個體的引用:

  • = Sheet 1中B25
  • = '表2' B25
  • =表名[TableRowName]

此頁面上還有一個名爲「傳輸數據」的按鈕。

當按下「傳輸數據」時,會運行一個宏,將這些值複製到由鍵列引用的單元中。

這個頁面的要點是有一個單獨的位置,可以從第三方系統注入數據,但不知道其他Excel工作簿 - 除非存在「DataMap」表。

目前,我遍歷每個「數據地圖」鍵/值對行,並使用下面的代碼可以注入價值爲「= Sheet1中B25!」:

reference = Replace(Sheets("MAPPINGS").Range("A" & row).Formula, "=", "") 
refSplit = Split(reference, "!") 

Sheets(refSplit(0)).Range(refSplit(1)) = Sheets("MAPPINGS").Range("B" & row).Value 

如果我使用一個字符串替換,我也可以處理「='Sheet 2'!B25」的情況。

但是,我對指定的表格有很大的麻煩。

可能嗎? 或者,或者沒有人有建議更好的方法來專門處理將值複製到'key'列引用的單元格中(不管引用的格式如何)?

感謝

回答

0

見下文。

Dim sht As Worksheet 
Dim address As Range 

Set sht = Sheet2 

Set address = Range(Replace(sht.Range("A" & 5).Value, "=", vbNullString)) 
address.Value = sht.Range("B" & 5).Value 

夫婦的建議:

  1. 變動表(「映射」)片(在VBA窗口中找到)的內部名稱,所以如果工作表名稱在Excel中改變了它不會影響你的宏。
  2. 請勿在單元格引用中添加「=」,因此您不需要替換語法。
+0

謝謝菲利普。這是一種享受。 –

1
Dim sht As Worksheet 
Dim ref As Range 

Set sht = Sheets("MAPPINGS") 

Set ref = Application.Evaluate(Replace(sht.Range("A" & Row).Formula, "=", "")) 
ref.Value = sht.Range("B" & Row).Value 
+0

Tim, 這實際上非常有用,雖然我認爲Philip的Range()例子更清晰。 希望我可以將它們標記爲正確! 通過使用代碼,我能夠完全從兩個示例(Range或Application.Evaluate)中提取工作表(例如,在對偏移進行任何更改後): cellFormula =「'」&ref.Parent.Name& 「'!」 &ref.address(External:= False) 因此,Range和Application.Evaluate在面值上似乎在這種情況下是相同的。 –

相關問題