Сравнить данные ячейки с различными данными рабочей книги? - PullRequest
0 голосов
/ 10 января 2020

Есть ли способ в VBA проверить, содержит ли внешняя рабочая книга значение из другой рабочей книги? По сути, у меня есть книга с кнопкой «Макро». В котором после нажатия кнопки он будет принимать адрес электронной почты из определенной ячейки, A2. Что мне нужно, так это макрос, чтобы можно было принимать данные из ячейки A2 и определять, содержит ли эта электронная почта также другую книгу. Я не хочу жестко кодировать электронную почту в VBA, потому что эта книга с макросами является шаблоном и будет постоянно вводить разные электронные письма. Таким образом, эта функция макроса должна будет проверить эту внешнюю книгу, чтобы увидеть, содержится ли введенное электронное письмо в этой книге. Я пытался найти ресурсы в Интернете, но я продолжаю получать ошибки компилятора. Поэтому я понятия не имею, что я делаю не так. Код, который у меня сейчас есть, чрезвычайно базовый c, но я подумал, что с самого начала это, по сути, первые шаги:

Dim workbookExternal As Workbook
Dim cellValue As Integer
Set workbookExternal = Workbooks.Open(path name to excel wb)
Dim worksheetExternal As Worksheet
Set worksheetExternal = workbookExternal.Worksheets("Client_Data")
Dim strEmailRecipient As String
Dim emailValue As String
emailValue = Range("A2") ' Cell where the email is being placed


 If InStr(worksheetExternal.Range("A1:AA100"), emailValue) = emailValue Then ' determining if external 
 ' workbook range contains the email value thats equal to the data stored in A2 of this workbook
 MsgBox ("Success")
 Else
 MsgBox ("Error")
 End If

На данный момент это просто базовый c структура, чтобы определить, правильно ли выполняется код.

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 11 января 2020

Это хороший случай для Range.Find.

Dim foundRng as Range
Set foundRng = worksheetExternal.Range("A1:AA100").Find(What:=emailValue, _
                   LookIn:=xlValues, LookAt:=xlPart)

If Not foundRng Is Nothing Then ' test if the Find was successful
     MsgBox "Email is at location: " & foundRng.Address(False, False)
Else
     MsgBox "Email not found."
End If
0 голосов
/ 10 января 2020

Есть много способов проверить

Пример:

If application.worksheetfunction.countif(worksheetExternal.Range("A1:AA100"), emailValue) >0 then 
'your code here

end if
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...