Board logo

標題: [發問] (已解決)有辦法依文字內容給予顏色嗎 [打印本頁]

作者: freeffly    時間: 2011-3-11 12:35     標題: (已解決)有辦法依文字內容給予顏色嗎

本帖最後由 freeffly 於 2012-2-22 17:05 編輯

[attach]4958[/attach]

我想要問依下有辦法經由vba設定判別有利的那幾各字為藍色不利的那幾各字為紅色
如附加檔的所顯示的那樣嗎
只判斷C12:D12 ,C13:D13,f12:G12,F13:G13這幾各區域
作者: Hsieh    時間: 2011-3-11 14:04

回復 1# freeffly
  1. Sub nn()
  2. Dim A As Range
  3. For Each A In Union([C12:C13], [F12:F13])
  4. A.Font.ColorIndex = 0
  5.   ar = Split(A, "萬")
  6.   For i = 0 To UBound(ar)
  7.      If InStr(ar(i), "~") > 0 Then
  8.         mystr = Split(ar(i), "~")(1)
  9.         k = InStr(A, mystr)
  10.         c = IIf(c = 3, 5, 3)
  11.         A.Characters(k, Len(mystr) + 1 + i * 2).Font.ColorIndex = c
  12.      End If
  13.   Next
  14. Next
  15. End Sub
複製代碼

作者: freeffly    時間: 2011-3-11 21:15

回復 2# Hsieh


    每次看到大大解答都相當佩服
  大大這次用的幾各含數還是第一次看到
  有幾句可以抽空幫忙解釋一下
  或是全部注解(我怕自己誤用)
   
   下面這句後面(1) 作用是什麼?

        mystr = Split(ar(i), "~")(1)

   下面這句裡面的括號代表顏色嗎?
         c = IIf(c = 3, 5, 3)

  下面這句看不太懂
     Characters(k, Len(mystr) + 1 + i * 2)

=c是指套用c=IIF(c=3,5,3)的顏色嗎?
   .Font.ColorIndex = c
作者: Hsieh    時間: 2011-3-11 21:35

回復 3# freeffly


    下面這句後面(1) 作用是什麼?

        mystr = Split(ar(i), "~")(1)
Split會將字串以指定字元分割成一個以0開始的陣列,後面(1)就表示指定到該陣列的第2個元素
   下面這句裡面的括號代表顏色嗎?
         c = IIf(c = 3, 5, 3)
c變數用來運算字串要給的顏色,3是紅,5是藍
  下面這句看不太懂
     Characters(k, Len(mystr) + 1 + i * 2)
儲存格內指定字元k是指從第k個字元開始,擷取Len(mystr) + 1 + i * 2的字數

=c是指套用c=IIF(c=3,5,3)的顏色嗎?
   .Font.ColorIndex = c
Font:字型
ColorIndex:顏色號碼
作者: freeffly    時間: 2011-3-12 23:40

回復 4# Hsieh


    謝謝解說
作者: freeffly    時間: 2012-9-14 10:51

回復 4# Hsieh

請問如果是如附件我要依"-"去做判斷
-的左邊字要紅色且粗體要怎麼改?
因為-的左邊跟右邊的字數不是固定
一般函數可以用mid去做不過在vba中就不太知道如何改
   



[attach]12486[/attach]
作者: Hsieh    時間: 2012-9-14 15:28

回復 6# freeffly
這樣就應該清楚流程了
  1. Sub ex()
  2. Dim A As Range
  3. For Each A In Range([A1], [A65536].End(xlUp))
  4. x = InStr(A, "-") '分格符號位置
  5.    If x > 0 Then
  6.       k = Len(Split(A, "-")(0)) '左側字元數
  7.       i = Len(Split(A, "-")(1)) '右側字元數
  8.       With A.Characters(1, k).Font '左側字型
  9.       .Bold = True
  10.       .ColorIndex = 3 '紅色
  11.       End With
  12.       With A.Characters(x + 1, i).Font '右側字型
  13.       .Bold = True '粗體
  14.       .Italic = True '斜體
  15.       .ColorIndex = 5 '藍色
  16.       End With
  17.     End If
  18. Next
  19. End Sub
複製代碼

作者: freeffly    時間: 2012-9-14 17:13

回復 7# Hsieh


    感覺多這一個例子
   有比較清楚相關運用
   真是感謝




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