Есть ли способ выбрать таблицу на основе ввода пользовательской формы? - PullRequest
1 голос
/ 23 октября 2019

Я создал универсальную форму пользователя, в которой пользователь выбирает местоположение здания из выпадающего списка. Это связано с листом с тем же именем, что и местоположение. Я надеюсь, что когда они нажмут кнопку ввода, данные в форме будут введены в таблицу на соответствующей странице. Поскольку у таблиц должно быть уникальное имя, которое не повторяется ни на одном из листов, я борюсь с тем, как установить диапазон таблицы, используя строку. Я назвал все таблицы в следующем формате: TableSheetname. Есть ли способ установить строку, равную «Таблица» и имя листа?

Dim oNewRow As ListRow, rng As Range, tbl As String

Set tbl = "Table" & sht

Set rng = Worksheets(sht).Range(tbl)
rng.Select
Set oNewRow = Selection.ListObject.ListRows.Add(AlwaysInsert:=True)
With ws
        oNewRow.Range.Cells(1, 1).Value = Me.box1.Value
        oNewRow.Range.Cells(1, 2).Value = Me.box2.Value
        oNewRow.Range.Cells(1, 3).Value = Me.box3.Value
        oNewRow.Range.Cells(1, 4).Value = Me.box4.Value
        oNewRow.Range.Cells(1, 5).Value = Me.box5.Value
        oNewRow.Range.Cells(1, 6).Value = Me.box6.Value
End With

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Может быть, я неверно истолковываю это, но звучит так, будто вы хотите получить имя листа из выпадающего списка, чтобы выбрать правильную таблицу.

'updated as it looks like your logic is in the actual form

'Lets say your combobox name is ComboBox1 (since oyu did not supply that)

Dim oNewRow As ListRow, rng As Range, tbl As String
Dim sht As String
sht = Me.ComboBox1.Text
tbl = "Table" & sht

Set rng = Worksheets(sht).Range(tbl)
rng.Select
Set oNewRow = Selection.ListObject.ListRows.Add(AlwaysInsert:=True)
With ws
    oNewRow.Range.Cells(1, 1).Value = Me.box1.Value
    oNewRow.Range.Cells(1, 2).Value = Me.box2.Value
    oNewRow.Range.Cells(1, 3).Value = Me.box3.Value
    oNewRow.Range.Cells(1, 4).Value = Me.box4.Value
    oNewRow.Range.Cells(1, 5).Value = Me.box5.Value
    oNewRow.Range.Cells(1, 6).Value = Me.box6.Value

End With
0 голосов
/ 23 октября 2019

При этом будут выбраны 2 таблицы - table1 и table2, одна за другой:

Sub TableSelector()

    Dim tableName As String
    Dim i As Long

    For i = 1 To 2
        Worksheets(1).Range("table" & i).Select
        Stop
    Next i        

End Sub

Просто обязательно передайте i из пользовательской формы:

enter image description here

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