Как получить адрес ячейки из переменной VBA

Я создал переменную oldPassword, которая заполняется с помощью VLookup.

Я пытаюсь получить адрес ячейки из этого результата, но ничего не работает.

Dim oldPassword As String 

oldPassword = Application.WorksheetFunction.VLookup(Me.ComboBox1.Value, Worksheets("Employees").Range("A:B"), 2, False)

Вместо этого используйте поиск. ВПР возвращает только значение. learn.microsoft.com/en-us/office/vba/api/excel.range.find

Andreas 12.12.2020 21:30

вам не хватает .Address в конце вашего утверждения, чтобы получить свойство Address найденного элемента

Fernando J. Rivera 12.12.2020 22:08
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
2
212
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы должны разбить задачу на шаги

  1. Получить ссылку на ячейку, содержащую искомое значение
  2. Используйте эту ссылку, чтобы получить требуемое значение и адрес
Sub Demo
    Din rSearch As Range
    Dim rUser as Range
    Dim rPassword As Range
    Dim idx As Variant 

    Set rSearch = Worksheets("Employees").Range("A:B")
    idx = Application.Match(Me.ComboBox1.Value, rSearch.Columns(1), 0)
    If Not IsError(idx) Then
        Set rUser = rSearch.Cells(idx, 1)
        Set rPassword = rUser.Cells(1, 2)
        ' get the result
        oldPassword = rPassword.Value2
        ' get the address
        Debug.Print rPassword.Address
    End If
End Sub

Я бы предпочел использовать .Find, как предложил @Andreas, но тогда это мое личное предпочтение.

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Employees")
    
    Dim aCell As Range
    Set aCell = ws.Columns(1).Find(What:=ComboBox1.Value, LookIn:=xlValues, _
                LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)
             
    Dim oldPassword As String
    
    If Not aCell Is Nothing Then
        With aCell.Offset(, 1)
            '~~> Do what you want with that cell
            oldPassword = .Value2
            
            MsgBox .Address
        End With
    Else '<~~ Optional
        MsgBox ComboBox1.Value & " not found!" 
    End If
End Sub

Другие вопросы по теме