返回列表 上一主題 發帖

[發問] 請問VBA 的程式有沒有可以辨認某個儲存格內的字元有無包含某幾個字串?

[發問] 請問VBA 的程式有沒有可以辨認某個儲存格內的字元有無包含某幾個字串?

請問VBA 的程式有沒有可以辨認某個儲存格內的字元有無包含某幾個字串?
例如
另外無論是大寫或小寫都辨認到
in   A1  A3  A4 包含 in
A1   window   
A2  office
A3  tina
A4  WINNIE   

另外可否找尋字串的位置
例如
in   
A1   window                       3
A2  office   
A3  tina                                2
A4  WINNIE                       2

like 會比較好用。
借錢不還,才是王道

TOP

回復 32# 198188


    應該這句錯誤
Worksheets("OHC").Range("G" & i).Font.ColorIndex = RGB(217, 24, 9)
ColorIndex 應該是數值不可使用RGB
可改成
Worksheets("OHC").Range("G" & i).Font.Color = RGB(217, 24, 9)
學海無涯_不恥下問

TOP

回復 35# 198188
typing mistake 的翻譯是輸入錯誤
請檢查 Range("g?")是否是數字,或傳上檔案看看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 34# GBKEE


    兩個都是日期,但是電腦說typing mistake, 所以我想問是不是我的語法有錯?

TOP

回復 32# 198188
If Worksheets("OHC").Range("G" & i) - Date <= 2 Then 這句哪裡出現問題了?
條件式:  Range("G?")(<- 必需是日期) - Date(當天日期)<=2(天)
你說出現問題了 ,請說明白!!
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復  GBKEE

If Worksheets("OHC").Range("G" & i) - Date
198188 發表於 2013-3-13 11:31



    If Worksheets("OHC").Range("G" & i) - Date   
  把兩段分開
If Worksheets("OHC").Range("G" & i)
-
Date

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

回復 28# GBKEE

If Worksheets("OHC").Range("G" & i) - Date <= 2 Then
    Worksheets("OHC").Range("G" & i).Interior.Color = RGB(255, 251, 45)
    Worksheets("OHC").Range("G" & i).Font.ColorIndex = RGB(217, 24, 9)
    End If

請問大大,If Worksheets("OHC").Range("G" & i) - Date <= 2 Then 這句哪裡出現問題了?

TOP

回復  GBKEE


With Sheet1                        (這句是否改With State sheet?)
With Sheet2      ...
198188 發表於 2013-3-9 23:00



    With Sheet1                        (這句是否改With State sheet?)  這種寫法應該會出現錯誤
除非有另外宣告

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

回復 28# GBKEE
  1. Sub Ex()
  2. Dim Sh As Worksheet, Rng As Range, C As Range, Ar()
  3.     Dim R As Range, E As Range
  4.     With Sheets("State")                         '*** 須改為: Test.xlsm的State Sheet
  5.         Set R = .Cells(1, "a")          'A1開始
  6.                         
  7.          fs = "C:\Documents and Settings\USER\桌面\DOCS RECEIVED N RELEASED RECORD.xlsx"
  8. With Workbooks.Open(fs)
  9.   Set Sh = .Sheets("收件記錄")
  10.   Do Until R = "" '離開迴圈的條件:  A欄的 儲存格=""
  11.       With Sh '*** 須改為: W:\Payment Daily Report\DOCS RECEIVED N RELEASED RECORD.xlsx"
  12.               
  13.                 Set Rng = .Columns("D").Find(R, lookat:=xlWhole)
  14.                  If Not Rng Is Nothing Then
  15.                     With .Columns("D")
  16.                         .Replace R, "=ABC", xlWhole                 '修改"尋找的字串" = 沒定義的名稱
  17.                         Set Rng = .SpecialCells(xlCellTypeFormulas, xlErrors) '儲存格有錯誤值的特定範圍
  18.                         Rng.Value = R                               '沒定義的名稱 改回 "尋找的字串"
  19.                         For Each E In Rng.Offset(0, 4)              'D欄位移4欄=H欄
  20.                             If InStr(UCase(E), "OBL") Then          'H欄的字元內包含"OBL"三個字
  21.                                                                     'UCase(E) 轉換為大寫
  22.                                 R.Offset(0, 9) = E.Value            'R.Offset(0, 9)-> A欄位移到 J欄
  23.                                 'Test.xlsm的State Sheet->J欄=DOCS RECEIVED N RELEASED RECORD.xlsx"->H欄的字元
  24.                                 Exit For    '有找到 "OBL" 離開迴圈                          '
  25.                             End If
  26.                        Next
  27.                     End With                '.Columns("D")
  28.                 End If
  29.             End With                        'Sheet2
  30.             Set R = R.Offset(1)             '下移到 A2
  31.      Loop
  32.     End With                                'Sheet1
  33. End With
  34. End Sub
複製代碼
這樣就可以了。
不過這個程式,如果DOCS RECEIVED N RELEASED RECORD.xlsx的H欄幾列是合併的話,就讀不了只有第一個才會有資料,第二列開始就無資料。

TOP

        靜思自在 : 能幹不幹,不如苦幹實幹。
返回列表 上一主題