返回列表 上一主題 發帖

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

回復 17# GBKEE


With Sheet1                        (這句是否改With State sheet?)
With Sheet2                 (這句是否改With W:\Payment Daily Report\DOCS RECEIVED N RELEASED RECORD.xlsx ?)但是好像不對??

TOP

回復 21# Hsieh


        感謝解釋,雖然不太明白,但會多嘗試。
另外我想問
如果H 欄如附件那樣合併,是否無法讀取?
只有214110 有資料
下面幾個是不是等於空格沒資料?
210695
214162
213924
212340
212341
211914
211915
212857

TOP

回復 23# Hsieh


    原理明白,只是語法用法末清晰如何用,謝!
如果合併幾個儲存格是否讀不了?如上圖?

TOP

回復 25# Hsieh


    合併一問,之前已試過,只有第一個可讀取,其余是空格。我問題寫得不清楚,抱歉。
應該是不是有方法做到?

TOP

回復 27# Hsieh


    現在可以了,可能是excel有點衝突。
不知道為什麼有時候excel的程式本身一直沒問題,但是有時候會突然出現問題,但是重新啟動excel 後或者重新啟動電腦後,就沒有問題了。

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

回復 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

回復 34# GBKEE


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

TOP

        靜思自在 : 布施如播種,以歡喜心滋潤種子,才會發芽。
返回列表 上一主題