Страницы: 1
RSS
Ссылка на ячейку из ComboBox
 
Привет!

Гуглил-гуглил, так и не нашел ответа.

Есть UserForm с comboBox, и два листа sheet1 / sheet2
sheet2
Имя (данные для comboBox)
Вася
Петя
Саша
sheet1
пустые ячейки.

Нужно записать в ячейку (A1, A10, A22 и далее) ссылку на значение из (sheet2) выбранную из comboBox, а не само значение в текстовом формате для того, чтобы при изменении ячейки на листе (sheet2) со списком имен изменялось значение на другом (sheet1).

Как это сделать?
A1: Саша
A1: =sheet2!A3
Код
with sheet1
.Cells.Range("A1").Value = ???
end with

Спасибо.
Изменено: chotop - 15.05.2020 12:00:15
 
И зачем по столько раз жать на Enter?
 
Цитата
chotop написал:
... ссылку на значение ... из comboBox, а не само значение ...
?
Код
Option Explicit

Private skipthis As Boolean

Private Sub UserForm_Initialize()
    Const tblnme = "tab_A"
    Const col = "A"
    
    Dim r As Long, arr As Variant
    
    skipthis = True ' Chtoby opustit 'cmbBox_Change' (i drugiye) vo vremya initsializatsii 'UserForm1'
    
    With Sheet2.ListObjects.Item(tblnme).DataBodyRange.Columns(col)
        ReDim arr(1 To .Rows.Count, 1 To 2)
        For r = .Cells(1, 1).Row - 1 To .Rows.Count
            arr(r, 1) = .Cells(r, 1).Value
            '(0, 0)=>"=Sheet2!A2"/ (1, 0)=>"=Sheet2!A$2"/ (0, 1)=>"=Sheet2!$A2"/ ()=>"=Sheet2!$A$2"
            arr(r, 2) = "='" & .Parent.Name & "'!" & .Cells(r, 1).Address(1, 0)
        Next
    End With
    
    With UserForm1
        .Caption = "Okno"
        With .cmbBox
            .BoundColumn = 1 ' '.Value' in ComboBox
            '.TextColumn = 2 ' '.Text' in ComboBox => no ne tut !
            .ColumnCount = 1 ' Tolko pervaya kolonka
            .List() = arr: arr = Empty
            .ListIndex = -1
        End With
    End With
    
    skipthis = False
End Sub

Private Sub cmbBox_Change()
    If skipthis = True Then Exit Sub
    '...
End Sub

Private Sub btnSave_Click()
    With Sheet1
        With .Range("A1,A10,A22")
            'Application.EnableEvents = False ' ???
                .Formula = Me.cmbBox.Column(1, Me.cmbBox.ListIndex)
                '.Offset(0, 1).Value = Me.cmbBox.Value ' Tolko dlya testov => zakommentirovat
            'Application.EnableEvents = True ' ???
        End With
    End With
End Sub
?
 
вариант:
Код
.Cells.Range("A1").FormulaLocal = "=sheet2!" & sheet2.Cells(cmbBox.ListIndex + 2, 1).Address
 
Заиграло другими красками. Спасибо, мьсе)
Страницы: 1
Наверх