雞婆的Excel自動 儲存格格式...要如何解?!

顯示結果從第 1 筆 到 6 筆,共計 6 筆
  1. #1
    會員 wowhsieh 的大頭照
    註冊日期
    2001-05-27
    討論區文章
    247

    雞婆的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行指令)

    在維持原 儲存格 預設狀態下(不事先調整 儲存格 為文字等格式)的話,有何好方法可解?!



  2. #2
    Take it easy~ leonchou 的大頭照
    註冊日期
    2001-05-03
    討論區文章
    3,244
    似乎語法有問題..改正後--
    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屬性的。
    當然,也不能手動設定部分格式。

  3. #3
    會員 wowhsieh 的大頭照
    註冊日期
    2001-05-27
    討論區文章
    247
    最初由 Leon Chou 發表
    似乎語法有問題..改正後--
    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).

    所以...是不是就無解了?!

  4. #4
    台灣水電工 沙拉油 的大頭照
    註冊日期
    2002-01-20
    討論區文章
    128
    我猜想您應該用錯物件了,以下是 VBA F1 的解說

    Characters物件代表包含文字的物件內的字元。可用 Characters 物件修改包含在完整文字串內的任意字元序列。
    Characters 物件用法
    可用 Characters(start, length) 傳回 Characters 物件,其中 start 為起始字元數,而 length 為要傳回的字元數目。

    另外,小弟請問你一下三個問題喔∼∼

    第一:
    如果有一個儲存格內容是 ABC123ABC 然後只有 123 是紅色字元,其他是黑色字元;
    你的巨集是要把 123 改成 ΨΨΨ 嗎?也就是該儲存格內容變成 ABCΨΨΨABC 然後一樣 ΨΨΨ 是紅色字元其他仍然是黑色字元嗎?

    第二:
    如果有一個儲存格內容是 123000,然後該儲存格內的所有數字都是紅色字元(註一),你的巨集是要把儲存格內容改成 ΨΨΨΨΨΨ 嗎?還是要改成 Ψ123000。

    第三:(個人疑問)
    請問這個字=>> Ψ 它的意思是什麼?

    (註一)
    儲存格內容如果是數字,則不能對個別的數字設定格式,只能設定整個儲存格的格式。

  5. #5
    會員 wowhsieh 的大頭照
    註冊日期
    2001-05-27
    討論區文章
    247
    最初由 沙拉油 發表
    我猜想您應該用錯物件了,以下是 VBA F1 的解說
    我也是這麼覺得!

    Characters物件代表包含文字的物件內的字元。可用 Characters 物件修改包含在完整文字串內的任意字元序列。
    Characters 物件用法
    可用 Characters(start, length) 傳回 Characters 物件,其中 start 為起始字元數,而 length 為要傳回的字元數目。

    另外,小弟請問你一下三個問題喔∼∼

    第一:
    如果有一個儲存格內容是 ABC123ABC 然後只有 123 是紅色字元,其他是黑色字元;
    你的巨集是要把 123 改成 ΨΨΨ 嗎?也就是該儲存格內容變成 ABCΨΨΨABC 然後一樣 ΨΨΨ 是紅色字元其他仍然是黑色字元嗎?
    沒錯!

    第二:
    如果有一個儲存格內容是 123000,然後該儲存格內的所有數字都是紅色字元(註一),你的巨集是要把儲存格內容改成 ΨΨΨΨΨΨ 嗎?還是要改成 Ψ123000。
    全部是Ψ!

    第三:(個人疑問)
    請問這個字=>> Ψ 它的意思是什麼?
    沒什麼,只是做個記號!

    (註一)
    儲存格內容如果是數字,則不能對個別的數字設定格式,只能設定整個儲存格的格式。
    我的用意是,針對一個已被校正過的工作表資料(凡是任一儲存格內的任一字元,更動過的會被標成藍色,而不要的字元則被標成紅色),我要負責將藍色改為黑色,而紅色則刪除之.我先將儲存格內凡是有藍色字元則改為黑色,紅色則先標示為Ψ,到最後再一次將Ψ全部刪除,VBA如下,不知有無更好的寫法?!因為Characters不可對純數字格式做...

    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 '(至下一工作表)



  6. #6
    台灣水電工 沙拉油 的大頭照
    註冊日期
    2002-01-20
    討論區文章
    128
    提供您一個建議
    在做底下那一個迴圈之前,先引用工作表函數 istext 跟 isnumber(不要用VBA的isnumeric喔!) 確定一下儲存格的內容是數字還是文字
    是文字才跑底下的迴圈;是數字的話就直接判斷 ActiveCell.Font.ColorIndex 是否等於 3,不要在用Characters物件了,因為數字不適用Characters物件。

    For j = 1 To 150'建議150改為len(ActiveCell)
    .
    .
    .
    Next j '(至下一字元)


    另外,為什麼引用工作表函數 Isnumber 而不要用 VBA 函數 Isnumeric ,你有興趣的話試一下就知道差異在哪裡了。

類似的主題

  1. 【問題】Excel儲存格格式移除的問題
    作者:shung0116 所在討論版:-- OFFICE 相 關 軟 體 討 論 版
    回覆: 1
    最後發表: 2008-02-02, 09:23 AM
  2. 在Excel的VBA中如何輸入儲存格內容有強迫換行的字串格式
    作者:ellery 所在討論版:-- OFFICE 相 關 軟 體 討 論 版
    回覆: 4
    最後發表: 2007-09-30, 10:34 AM
  3. 【求助】Excel儲存格格式控制的問題
    作者:shung0116 所在討論版:-- OFFICE 相 關 軟 體 討 論 版
    回覆: 1
    最後發表: 2006-01-24, 02:36 PM
  4. 【求助】excel儲存格格式控制的問題
    作者:shung0116 所在討論版:-- OFFICE 相 關 軟 體 討 論 版
    回覆: 2
    最後發表: 2005-11-27, 07:32 PM
  5. 【求助】關於EXCEL 要如何引用不同的儲存格的註解
    作者:cisco 所在討論版:-- OFFICE 相 關 軟 體 討 論 版
    回覆: 3
    最後發表: 2005-04-02, 02:00 AM

 

excel vba Characters(*).Font.ColorIndex = *

發表文章規則

  • 不可以發表新主題
  • 不可以回覆文章
  • 不可以上傳附加檔案
  • 不可以編輯自己的文章
  •