Есть 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 написал: ... ссылку на значение ... из 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