Board logo

標題: [發問] 文字跟數字混在一起,如何只讓數字變成紅色? [打印本頁]

作者: t8899    時間: 2014-12-15 19:48     標題: 文字跟數字混在一起,如何只讓數字變成紅色?

文字跟數字混在一起,如何只讓數字變成紅色?
Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1) = "最高" & Sheets("Sheet3").Range("Q10").value
Sheets("Sheet3").Range("Q10").value 小於 0 則變成紅色(數字)
作者: jackdream    時間: 2014-12-15 23:12

文字跟數字混在一起,如何只讓數字變成紅色?
  1. Sub test()

  2.     '假設要判斷的文字+數字放在A1儲存格
  3.    
  4.     i = Len(Range("A1"))

  5.     For j = 1 To i  '對A1逐字判斷,數字則改為紅字
  6.         If Asc(Mid(Range("A1"), j, 1)) > 47 And Asc(Mid(Range("A1"), j, 1)) < 58 Then
  7.             With Range("A1").Characters(Start:=j, Length:=1).Font
  8.                 .ColorIndex = 3
  9.             End With
  10.         End If
  11.     Next j
  12.    
  13.     'asc 的結果如果是落在48-57,代表數字,其餘可參考 asc 語法
  14.    
  15. End Sub
複製代碼

作者: t8899    時間: 2014-12-16 06:56

jackdream 發表於 2014-12-15 23:12


謝謝指導
作者: GBKEE    時間: 2014-12-17 11:22

回復 2# jackdream
可用 Like 運算子
  1. Option Explicit
  2. Sub Ex()
  3.     '假設要判斷的文字+數字放在A1儲存格
  4.     Dim j
  5.     For j = 1 To Len(Range("A1"))
  6.         With Range("A1").Characters(Start:=j, Length:=1).Font
  7.             .ColorIndex = IIf(Mid(Range("A1"), j, 1) Like "[0-9]", 3, 0)  '是數字
  8.             '.ColorIndex = IIf(Mid(Range("A1"), j, 1) Like "[A-z]", 3, 0)  '是英文字母
  9.             '.ColorIndex = IIf(Mid(Range("A1"), j, 1) Like "[A-Z]", 3, 0)  '是大寫英文字母
  10.             '.ColorIndex = IIf(Mid(Range("A1"), j, 1) Like "[!A-z]", 3, 0) '不是英文字母
  11.         End With
  12.     Next   
  13. End Sub
複製代碼

作者: t8899    時間: 2014-12-17 11:47

本帖最後由 t8899 於 2014-12-17 11:54 編輯
回復  jackdream
可用 Like 運算子
GBKEE 發表於 2014-12-17 11:22


Like "[0-9]", 3, 0)
1. 3跟0 是??
2. like 可以判斷中文字嗎?
作者: hugh0620    時間: 2014-12-17 11:59

本帖最後由 hugh0620 於 2014-12-17 12:14 編輯

回復 5# t8899


   1.  3,0 -> 表示顏色的數字

   2. GBKEE  大大  在他的程式碼第10列已經,寫好了呀~ 不是英文字的時候是甚麼顏色
       依GBKEE大大的寫法修改, 這樣就可以應用到各種字的型態顏色變換。
  1. [code]Sub Ex()
  2.     '假設要判斷的文字+數字放在A1儲存格
  3.     Dim j
  4.     For j = 1 To Len(Range("A1"))
  5.         With Range("A1").Characters(Start:=j, Length:=1).Font
  6.             If Mid(Range("A1"), j, 1) Like "[0-9]" Then       '是數字
  7.                .ColorIndex = 3
  8.             ElseIf Mid(Range("A1"), j, 1) Like "[A-Z]" Then   '是大寫英文字母
  9.                .ColorIndex = 8
  10.             ElseIf Mid(Range("A1"), j, 1) Like "[A-z]" Then   '是英文字母
  11.                .ColorIndex = 4
  12.             ElseIf Mid(Range("A1"), j, 1) Like "[!A-z]" Then  '不是英文字母
  13.                .ColorIndex = 6
  14.             End If
  15.         End With
  16.     Next
  17. End Sub
複製代碼
[/code]
作者: t8899    時間: 2014-12-17 12:51

回復  t8899


   1.  3,0 -> 表示顏色的數字

   2. GBKEE  大大  在他的程式碼第10列已經,寫好了呀 ...
hugh0620 發表於 2014-12-17 11:59


那抓中文應該是   Like "[!A-z]" and Like "[!0-9]"     ? (不是數字,不是英文)
作者: chingmac    時間: 2014-12-22 01:26

本帖最後由 chingmac 於 2014-12-22 01:27 編輯

回復 7# t8899

不是這樣喔!除了英文、數字、中文以外,還有符號喔!(例如!@#$....,甚至空白鍵、Esc之類的),可用ASCII碼去區別
  1. Sub Ex()
  2.     '假設要判斷的文字+數字放在A1儲存格
  3.     Dim j
  4.     For j = 1 To Len(Sheets("sheet1").Range("A1"))
  5.         With Range("A1").Characters(Start:=j, Length:=1).Font
  6.             If Mid(Range("A1"), j, 1) Like "[0-9]" Then       '是數字
  7.                .ColorIndex = 3
  8.             ElseIf Mid(Range("A1"), j, 1) Like "[A-Z]" Then   '是大寫英文字母
  9.                .ColorIndex = 8
  10.             ElseIf Mid(Range("A1"), j, 1) Like "[a-z]" Then   '是小寫英文字母
  11.                .ColorIndex = 4
  12.             ElseIf Asc(Mid(Range("A1"), j, 1)) > 0 Then       '不是數字也不是英文也不是中文的其他符號
  13.                .ColorIndex = 1
  14.             ElseIf Asc(Mid(Range("A1"), j, 1)) < 0 Then       '是中文
  15.                .ColorIndex = 5
  16.             End If
  17.         End With
  18.     Next
  19. End Sub
複製代碼

作者: t8899    時間: 2014-12-22 07:05

回復  t8899

不是這樣喔!除了英文、數字、中文以外,還有符號喔!(例如!@#$....,甚至空白鍵、Esc之類 ...
chingmac 發表於 2014-12-22 01:26

謝謝指導
作者: freeffly    時間: 2014-12-23 14:33

原來可以這樣做判斷
雖然沒有這種需求
但還是學習了




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)