返回列表 上一主題 發帖

[發問] 如何撰寫兩欄位資料同時重複的跳窗提醒?(已解決,GBKEE大, oobird大)

[發問] 如何撰寫兩欄位資料同時重複的跳窗提醒?(已解決,GBKEE大, oobird大)

本帖最後由 av8d 於 2011-10-18 08:51 編輯

當輸入資料時,D欄和I欄位同時重複時,跳窗提醒!
舉例說明如下:
A  B  C  D  E  F  G  H  I  J  K
1            聖誕節          台南
2
3
4            聖誕節          台南
5

D欄出現"聖誕節"且I欄也出現相同的"台南",此時條件成立,跳窗提醒。

-----------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

不知道怎麼在裡面下指令!?

回復 1# av8d
若是想以儲存格部分內容來比對的話,
可能性範圍太大並且也不容易得出正確的比對結果,
例如 "中秋節活動" 就有底下這些可能的關鍵值需要作比對,
中秋節活動, 中秋節活, 中秋節, 中秋, 中
秋節活動, 秋節活, 秋節, 秋
節活動, 節活, 節
活動, 動

當然, 若是你的例子可以縮小範圍,(例如只需要比對固定的幾個如 活動與地點...等等關鍵字)
又或者能將 "端午節活動" 與 "中秋節活動" 這敘述文字串拆開放在兩個儲存格內,
變成 "端午節", "活動", "中秋節", "活動" 這樣就容易寫了.

暫時我能想到的就是利用 Dictionary 來實現,
方便的話是否可以先大致上縮小一下需要比對的範圍.

TOP

本帖最後由 av8d 於 2011-10-8 01:31 編輯

回復 2# luhpro


    A  B  C  D  E  F  G  H  I  J  K
1            聖誕節          台南
2
3
4            聖誕節          台南
5

D欄出現"聖誕節"且I欄也出現相同的"台南",此時條件成立,跳窗提醒。

TOP

本帖最後由 luhpro 於 2011-10-8 08:31 編輯

回復 3# av8d
兩欄資料重複時跳窗提醒-Ans.zip (15.15 KB)

註 :
1. 若單純修改已有資料的儲存格內容仍可正常抓取及比對重複資料
2. 異動(含新增)某儲存格內容後會抓取全部與之相同資料的儲存格, 並將其底色設為黃色以方便辨識.
3. 上述設定的底色於再次抓取(即該兩欄有異動)時, 會先清除底色後再比對資料.
4. 不限定兩欄皆須有資料, 只要任一欄有資料就可以抓取及比對內容.
5. Debug 時, 若有 Reset 動作(或發生錯誤導致終止程式時)必須先執行 Workbook_Open 後才能有正常的動作.

TOP

本帖最後由 GBKEE 於 2011-10-8 17:14 編輯

回復 3# av8d
試試看
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.   Dim Rng As Range, I As Integer
  3.   With Target
  4.     .Select
  5.     If .Column = 4 Or .Column = 9 Then
  6.         If Cells(.Row, 4) <> "" And Cells(.Row, 9) <> "" Then
  7.             For I = 1 To Cells(Rows.Count, .Column).End(xlUp).Row
  8.                 If Cells(I, 4) = Cells(.Row, 4) And Cells(I, 9) = Cells(.Row, 9) And I <> .Row Then
  9.                     If Rng Is Nothing Then
  10.                         Set Rng = Union(Cells(I, 4), Cells(I, 9))
  11.                     Else
  12.                         Set Rng = Union(Rng, Cells(I, 4), Cells(I, 9))
  13.                     End If
  14.                 End If
  15.             Next
  16.             If Not Rng Is Nothing Then
  17.                 Set Rng = Union(Rng, Cells(.Row, 4), Cells(.Row, 9))
  18.                 Rng.Select
  19.                 MsgBox Cells(.Row, 4) & "  " & Cells(.Row, 9) & "  有重複 ?"
  20.             End If
  21.         End If
  22.     End If
  23.   End With
  24. End Sub
複製代碼

TOP

本帖最後由 av8d 於 2011-10-11 13:05 編輯

回復 4# luhpro

luhpro 大大辛苦了~

          rTar.AddComment ""
應用程式或物件上定義的錯誤

我自行修改看看~謝謝!

TOP

回復 5# GBKEE


    請問大大~是否可以當我按下TAB鍵的時候直接向右一格或按下Enter鍵直接向下一格~不用按兩次呢?再次感謝!

TOP

回復 7# av8d
按下TAB鍵的時候直接向右一格或按下Enter鍵直接向下一格~不用按兩次呢
可再詳說清楚嗎?

TOP

回復 6# av8d
rTar.AddComment "" 時發生 "應用程式或物件上定義的錯誤"...
這應該是發生錯誤當時該 rTar 儲存格已經有註解了,
但這時卻要新增註解而造成的錯誤.

不過前面已經有 On Error GoTo ErrorHandler 了,
所以理論上應該會被 "錯誤處理程序" 順利處理掉才是,
不知你是怎麼樣的操作順序及輸入什麼資料而造成的錯誤.

你可試著單步執行看看程式有沒有跳到 ErrorHandler 區執行錯誤處理,
又執行到該區中時在 "即時運算" 視窗內打入 ?Err.Number 按 Enter 鍵,
看看 Err.Number 是否為 1004 又或者是其他的數字呢?

TOP

回復  av8d
按下TAB鍵的時候直接向右一格或按下Enter鍵直接向下一格~不用按兩次呢
可再詳說清楚嗎?
GBKEE 發表於 2011-10-11 14:46



    意思是說~一般我們在打資料打完後~輸入ENTER會向下一格~但是輸入您的判斷式後~變成要輸入兩次ENTER~是否有辦法變回只要輸入一次?謝謝!

TOP

        靜思自在 : 待人退一步,愛人寬一寸,就會活得很快樂。
返回列表 上一主題