會員 ![]() | 雞婆的Excel自動 儲存格格式...要如何解?! ...ㄟ...Excel很貼心的預設值... 當 儲存格 輸入數字100,000時,其格式會自動調為貨幣格式,惟其資料內容則為100000,可是這造成我所寫的一個VBA指令產生錯誤... for i=1 to 100 If ActiveCell.Characters(i, 1).Font.ColorIndex = 3 Then ActiveCell.Characters(i, 1).Text = "Ψ" End If (若儲存格內字元為紅色,則字元改為Ψ) 由於 儲存格 顯示的是100,000而實際資料是100000(我輸入時是打100,000,也希望實際是100,000 但Excel雞婆的變成貨幣格式,而內容變成100000),所以VBA在比對的時候產生 "無法設定種類Characters的Text屬性" (停在第3行指令) 在維持原 儲存格 預設狀態下(不事先調整 儲存格 為文字等格式)的話,有何好方法可解?! |
回覆 |
Take it easy~ | 似乎語法有問題..改正後-- For i = 1 To 100 If ActiveCell.Characters(i, 1).Font.ColorIndex = 3 Then ActiveCell.Characters(i, 1).Text = "Ψ" End If Next i 你不設成文字格式,它就會視為數字; 而數字是不能適用Characters.Text屬性的。 當然,也不能手動設定部分格式。 |
回覆 |
會員 ![]() | 引用:
語法有點筆誤啦...,由於是幫別人設計個小程式做自動執行,針對既有的多個檔案而每個檔案內均有多張工作表,而且已經有大量資料在內,所以不太可能再重設回文字模式(因為原先被EXCEL視為數字的儲存格再改回文字格式時,內容文字會變,我輸入10,000但Excel改為內容為10000格式為10,000,當改回文字格式,內容就變成10000). 所以...是不是就無解了?! | |
回覆 |
台灣水電工 ![]() | 我猜想您應該用錯物件了,以下是 VBA F1 的解說 Characters物件代表包含文字的物件內的字元。可用 Characters 物件修改包含在完整文字串內的任意字元序列。 Characters 物件用法 可用 Characters(start, length) 傳回 Characters 物件,其中 start 為起始字元數,而 length 為要傳回的字元數目。 另外,小弟請問你一下三個問題喔∼∼ 第一: 如果有一個儲存格內容是 ABC123ABC 然後只有 123 是紅色字元,其他是黑色字元; 你的巨集是要把 123 改成 ΨΨΨ 嗎?也就是該儲存格內容變成 ABCΨΨΨABC 然後一樣 ΨΨΨ 是紅色字元其他仍然是黑色字元嗎? 第二: 如果有一個儲存格內容是 123000,然後該儲存格內的所有數字都是紅色字元(註一),你的巨集是要把儲存格內容改成 ΨΨΨΨΨΨ 嗎?還是要改成 Ψ123000。 第三:(個人疑問) 請問這個字=>> Ψ 它的意思是什麼? (註一) 儲存格內容如果是數字,則不能對個別的數字設定格式,只能設定整個儲存格的格式。 |
回覆 |
會員 ![]() | 引用:
For a = 1 To Sheets.Count Sheets(a).Select For i = 1 To 50 '執行至第50列 For x = 1 To 15 '執行至第15欄位 ActiveSheet.Cells(i, x).Select '(依序由第一個工作表的第一欄第一列開始執行) For j = 1 To 150 If ActiveCell.Characters(j, 1).Font.ColorIndex = 3 Then '(若儲存格內為紅色字) ActiveCell.Characters(j, 1).Text = "Ψ" '(則標註為Ψ) End If If ActiveCell.Characters(j, 1).Font.ColorIndex = 5 Then '(若儲存格內為藍色字) ActiveCell.Characters(j, 1).Font.ColorIndex = 1 '(將藍色字改為黑色) End If Next j '(至下一字元) Next x '(至下一欄) Next i '(至下一列) ActiveSheet.Cells.Select '(將所有標註之Ψ字元刪除) Selection.Replace What:="Ψ", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByColumns, MatchCase:=False Next a '(至下一工作表) | |
回覆 |
台灣水電工 ![]() | 提供您一個建議 在做底下那一個迴圈之前,先引用工作表函數 istext 跟 isnumber(不要用VBA的isnumeric喔!) 確定一下儲存格的內容是數字還是文字 是文字才跑底下的迴圈;是數字的話就直接判斷 ActiveCell.Font.ColorIndex 是否等於 3,不要在用Characters物件了,因為數字不適用Characters物件。 For j = 1 To 150'建議150改為len(ActiveCell) . . . Next j '(至下一字元) 另外,為什麼引用工作表函數 Isnumber 而不要用 VBA 函數 Isnumeric ,你有興趣的話試一下就知道差異在哪裡了。 |
回覆 |
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。