返回列表 上一主題 發帖

字串中某幾個字元變色

字串中某幾個字元變色

請教各位如何可以做的到!

我頂多只能做到儲存格變色


譬如 :

   輸入 AAA
   符合的字串111AAA333
   顯示的時候,把111AAA333字串中的AAA變色

A1輸入AAA,B1輸入111AAA333
  1. Private Sub CommandButton1_Click()
  2.   On Error Resume Next
  3.     xx = Len([a1])
  4.     yy = Application.Search([a1], [b1])
  5.     Range("B1").Select
  6.     With ActiveCell.Characters(Start:=yy, Length:=xx).Font
  7.         .ColorIndex = 3
  8.     End With
  9. End Sub
複製代碼
YOYO

TOP

這是我之前寫的程式碼,語法如有使用錯誤,請多包涵(因為我是自學)
順便在此感謝yanto913 的協助!!我在DEBUG中,已了解你寫的方式
再請教一下!!
Application.Search([a1], [b1])在EXCEL VBA功能索引式參考手冊,我找不到用法!!
可否說明一下這句的語法及為何要用"[]"
Sub 按鈕4_Click()

   Dim A As String
   
    A = InputBox("字  串", "請 輸 入 字 串")
   
    MsgBox A
   
    Cells(1, 5) = A
   
    B = 2
   
    ActiveSheet.Range("I41000").Clear
   
    Do Until InStr(1, Cells(B, 2).Value, A, 1)
     
        B = B + 1
      
       If B >= 100 Then
      
       MsgBox "您輸入的姓名是:   " & A, vbOKOnly + vbCritical, Title:="查無此字串"
      
       A = InputBox("請重新輸入字串")
      
       B = 2
      
       End If
      
     Loop
   
    X = 4
   
    For B = 2 To 100
     
      If InStr(1, Cells(B, 2).Value, A, 1) Then
      
            
         Cells(X, 9) = Cells(B, 1)
         
         Cells(X, 10) = Cells(B, 2)
         
         Cells(X, 11) = Cells(B, 3)
         
         Cells(X, 12) = Cells(B, 4)
         
         XX = Len(Cells(1, 5).Value)

         yy = Application.Search(Cells(1, 5).Value, Cells(X, 10).Value)

         Cells(X, 10).Select

         With ActiveCell.Characters(Start:=yy, Length:=XX).Font
         
           .Bold = True
           
           .ColorIndex = 3

         End With
                              
         X = X + 1
         
      End If
      
    Next
   
End Sub

TOP

這問題要牽涉到搜尋字串的搜尋模式問題
以此例來說如果搜尋直指輸入A
那要3個A都變色還是第一個A變色?
學海無涯_不恥下問

TOP

本帖最後由 GBKEE 於 2011-4-13 15:19 編輯

回復 3# rph
加上   Application.Search  的函數 是使用工作表的函數   
正式的語法為  Application.WorksheetFunction.Search
可否說明一下這句的語法及為何要用"[]"

[ ] =Application.Evaluate方法
  1. Sub Ex()
  2. MsgBox Application.Evaluate("Sheet1!a1").Address
  3. MsgBox [Sheet1!a1].Address
  4. End Sub
複製代碼

TOP

1.先回應Hsieh版大
我的小程式就只認我輸入的字串,譬如輸入"A",那字串中"123AAA444",就第1個"A"變色
因為我的程式主要功能就是輸入KEY之後,就找出符合KEY之資料,並且列出

2.再請教一下GBKEE,我剛才RUN了你的程式碼,MSGBOX出現$A$1的絕對位址訊息,這樣是代表???

3.工作表函數在哪可查的到???我看EXCEL的函數裡有SEARCH這個函數

TOP

回復 6# rph
Address 的用法可看 VBA的說明
VBA 可用工作表函數說明尋找如圖

TOP

我剛才已去了解,也了解了[ ] =Application.Evaluate方法,感謝您的說明!

TOP

回復 6# rph
  1. Private Sub CommandButton1_Click()
  2. Dim A As Range
  3. fc = InputBox("輸入字串", , "A")
  4. s = Len(fc)
  5. For Each A In UsedRange
  6.    k = InStr(A, fc)
  7.    If k > 0 Then A.Characters(k, s).Font.ColorIndex = 3
  8. Next
  9. End Sub
複製代碼
學海無涯_不恥下問

TOP

本帖最後由 rph 於 2011-4-14 11:48 編輯

TO Hsieh
今天我已將版主的程式碼貼到EXCEL測試,測試OK(我有把第5行的USEDRANGE改成RANGE("A1:A6"),要不然會有錯誤)
DIM A AS RANGE 就是宣告A為RANGE物件  P.S我剛有測試,沒宣告程式一樣可以跑,可否說明差異??
For Each A In Range("A1:B6") 這行程式碼是否代表將"A1儲存格的值"放入"A",再去作判斷,再來就變成"A2儲存格的值"放入"A",以此類推

感謝!!

TOP

        靜思自在 : 是非當教育,讚美作警惕。
返回列表 上一主題