2015-11-05 41 views
2

我試圖編寫一個宏,因此當用戶選擇的組合框值有相同的值時,它應該在下面的單元格中輸出「Checked」。這裏工作正常的代碼:在單元格中匹配相同的名稱

Dim SrchRng As Range, cel As Range 

    Set SrchRng = Range("A3:G11") 
    For Each cel In SrchRng 
    If InStr(1, cel.Value, m1_day1.Value) > 0 Then 
    cel.Offset(1, 0).Value = "Checked" 
    End If 
    Next cel 

的問題是,當m1_day1.Value是「2」,那麼程序將輸出「經過」中的細胞下面下所有包含「2」的數字:12,20 ,22 24等

+0

Instr看着整個字符串......有沒有正常的只是一個2?如果是,那麼只需使用'如果cel.Value = m1_day1.Value然後' –

+0

@DirkReichel m1_day1.Values的值都是整數,我試圖爲它們找到匹配的整數。所以對於m1_day1.Values它可能1,2,3,4等我嘗試集成您的代碼,但它沒有奏效。對於每個cel In SrchRng 如果cel.Value = m1_day1.Value Then cel.Offset(1,0).Value =「Checked」 End If Next cel – Nicky

+0

哦......好的......這是一個小問題。 ..你可以使用'如果InStr(1,「」&cel.Value&「」,「」&替換(m1_day1.Value,「,」,「」)&「」)> 0然後' –

回答

0

正確顯示的那樣:(無取代)

If InStr(1, ","&cel.Value&",", ","&m1_day1.Value&",") > 0 Then 

讓asume所述細胞具有"3,6,14,26"它將被更改爲",3,6,14,26,"和尋找",6," => 26不會計數

+0

非常感謝! – Nicky

0

使用此。它只會取代您將從組合框中選擇的值。

Dim SrchRng As Range, cel As Range 
    Set SrchRng = Range("A3:G11") 
For Each cel In SrchRng 
    If cel.Value = Val(m1_day1.Value) Then 
    cel.Offset(1, 0).Value = "Checked" 
    End If 
Next cel 
+0

Quote:注意:_ VAL的功能將停止讀取字符串,一旦遇到第一個非數字字符。這不包括spaces._它根本不會工作......並且'1 3 17'會輸出'1317',而'3,8,16'會讓你只是'3' ...我建議這不會有幫助。 .. –

相關問題