2016-06-07 20 views
0

我有一個工作表,用於輸入數據,然後將其傳輸到第二張工作表上的日誌中。在VBA中使用AND

我想有一個是否到位語句從做重複更新停止的人。目前我有一個代碼可以阻止它更新,如果一個單元格與日誌中對應的最後一個單元格相同,但我想用1或2個單元格重複此操作,以防通常的「匹配」單元格對於任何單元格需要相同原因。

我是新來的VBA,我試圖約與else if否則,如果和and發揮,但沒有運氣,我想我可能與這些結構的掙扎,雖然。

我的And將需要去第一個if語句之後,所以如果第一個語句是假的第二個將是真正的停止日誌更新。

Dim WkBk As Workbook 
Dim WkSht As Worksheet 

Set WkBk = ThisWorkbook 


Set WkSht = WkBk.Worksheets("Log") 


    If (WkBk.Worksheets("Data").Range("I17") = WkSht.Range("N" & WkSht.Rows.Count).End(xlUp)) Then 


      MsgBox "This entry has already been logged" 

Set WkSht = Nothing 
Set WkBk = Nothing 
Exit Sub 
End If 
+0

您可能需要更清楚地說明一點。你的'和'去哪裏?在VBA中,它看起來像'如果myString =「單詞」和Len(myString)> 0和myString <>「如何」那麼...'。另外,你的'Then'需要和'If'語句在同一行。 – BruceWayne

+0

〜雖然我<= LASTROW 如果細胞(I, 「A」),如 「*巴黎*」 和細胞(I, 「d」),如 「*蘇黎世*」 然後 細胞(I, 「C」)。值=「CA」 結束如果〜 – skkakkar

+0

如果這是總是在相同的範圍內,爲什麼不使用'find',如果獲得匹配的位置,然後觸發'MsgBox' – Tom

回答

0

我會在這裏使用find函數,它可以爲你搜索整個列。

我已經再使用「如果不是」和「是沒有什麼」,所以如果發現得到的東西,然後你的消息框就會出現。這是在VBA編碼中尋找重複值的最佳方法:

Dim RngFound As Range 
Dim StrData As String 

StrData = Worksheets("Data").Range("I17") 
Worksheets("Log").Activate 
    Set RngFound = Columns("N").Find(StrData, Range("N1"), xlValues, xlPart) 
    If Not RngFound Is Nothing Then 
     MsgBox "This entry has already been logged" 
    End If 

    Set RngFound = Nothing 
    Set WkSht = Nothing 
    Set WkBk = Nothing 
+0

感謝您的幫助,但是,這是帶我去的最後一個單元格整個日誌。我需要檢查日誌最後一行中的特定單元格。 – Josie