我目前正在嘗試寫入基於表更改的宏,其中表列中的字母自動轉換爲大寫。因此,例如,如果我在單元格中輸入「abcde-12345-678」,它會自動更正爲「ABCDE-12345-678」。在做了一些挖掘之後,我發現了一些適用於某些人的代碼,但我無法對其進行調整以適應我的需求。自動文本大寫Excel VBA
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("E:E")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Target = UCase(Target)
Application.EnableEvents = True
End Sub
我想解決兩件事情。首先,這個代碼目前不適用於我。根據作者(位於Sheet1對象中),我將它放在正確的位置。有什麼想法,爲什麼這不工作?
第二個是我想修改代碼來引用表列而不是範圍。例如,我試圖改變上述代碼的第二行以下的(我的表的名稱是ReviewTracker,我感興趣的列是產品編號):
If Intersect(Target, Range(ReviewTracker[[@Headers],[Product Number]])) Is Nothing Then Exit Sub
這返回編譯錯誤「預期:列表分隔符或)」。所以顯然有些問題,但希望它可以幫助說明我正在努力完成什麼。
在此先感謝您對此問題的任何幫助。
-Sean
檢查它是否工作 - 在'If Intersect ...'之前添加以下行'Debug.Print Now'作爲第一行。在E:E列中添加一些值並返回到VBA編輯器。在即時窗口中,您應該輸入當前的日期和時間。有沒有什麼? –
代碼在E列中正常工作。如果您可以簡單地使用範圍(「A2:A10」),例如 – 2013-10-21 14:32:20