Excel 2016 UserForm [закрито]


0

Гаразд, у мене є форма користувача. У цій формі користувача у мене є комбо-поле, яке витягує його дані з робочого аркуша під назвою "Списки" (Діапазон А2: А49). У мене є три текстових поля "Лист" робочого листа "Списки" (діапазон D2: D49), заводський номер "Списки" (діапазон В2: В49) та "Спіски" (діапазон Е2: Е49).

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


1
Зверніть увагу, що superuser.com - це не безкоштовна послуга написання сценарію / коду. Якщо ви скажете нам, що ви намагалися до цього часу (включіть сценарії / код, який ви вже використовуєте) і де ви застрягли, то ми можемо спробувати допомогти у вирішенні конкретних проблем. Ви також повинні прочитати Як мені поставити гарне запитання? .
DavidPostill

Відповіді:


0

Я думаю, що це має спрацювати, принаймні, це робиться в Excel 2011.

У наведеному нижче коді "ComboResult" - це вихід вашого поля Combo ("посилання на комірки"). Його потрібно вводити як посилання на клітинку у подвійних лапках, тобто "C7".

Аналогічно "LookupTable" - це діапазон комірок у вашій рослинній таблиці, тобто "A1: E50". Знову подвійні цитати. Я припускаю, що ваша таблиця пошуку знаходиться на Sheet2. Ви можете використовувати названий аркуш, використовуючи таблиці ("назва аркуша"). Діапазон ().

Оскільки у вікні Combo виводиться число (позиція вибору користувача у списку), ваша таблиця пошуку повинна містити стовпчик індексу як перший стовпець. Це буде лише 1,2,3 і т.д. до кількості рослин у списку.

Sub FillTextbox()
  'Set up variables
    Dim TextboxName As String
    Dim TextboxText As String
    Dim Line1Text As String
    Dim Line2Text As String
    Dim Line3Text As String
  'Assemble the text
    Line1Text = "Plant Number: " &
       Sheet2.Application.WorksheetFunction.VLookup(Range("ComboResult"),
       Sheet2.Range("LookupTable"), 3, False)
    Line2Text = "Purchasing Group: " &
       Sheet2.Application.WorksheetFunction.VLookup(Range("ComboResult"),
       Sheet2.Range("LookupTable"), 4, False)
    Line3Text = "Profit Center: " &
       Sheet2.Application.WorksheetFunction.VLookup(Range("ComboResult"),
       Sheet2.Range("LookupTable"), 5, False)
    TextboxText = Line1Text & vbNewLine & Line2Text & vbNewLine & Line3Text
  'Fill the Textbox
    TextboxName = "TextBox 1"
    ActiveSheet.Shapes(TextboxName).DrawingObject.Text = TextboxText
End Sub

Після додавання стовпця індексу потрібні дані будуть знаходитись у стовпцях 3,4 та 5 таблиці, а функції vlookup захоплюють ці значення на основі індексу, обраного у полі Combo.


Чи можна робити те, що мені потрібно?
R.Conklin

Так. Створіть модуль vba вище, а потім призначте його у вікні Combo. Щоразу, коли поле змінено, текстове поле отримає нові дані.
Bandersnatch

Примітка. Я написав цей код у Word, а потім отримав неприємні помилки після вставки його в Excel. Виявилося, що Excel не любить символи цитати, якими користується Word. Їх "розумні цитати", я думаю. Мені довелося видалити всі лапки, а потім повторно ввести текст. Шиш. Я думаю, якби я перетворив на звичайний текст, було б добре.
Bandersnatch

@ R.Conklin - Відредагуйте своє початкове запитання. Вставте деякі фрагменти коду. Якщо ви покладете 4 пробіли на початку кожного рядка, сайт автоматично відформатує його як код. Чи можете ви бачити мою відповідь підпрограмою? Оскільки це запитання було призупинено, я не впевнений, чи вдала моя відповідь.
Bandersnatch

В порядку. Я бачу, що у вас є три різних текстових поля для заповнення. Відредагуйте код вище та додайте ще два твердження ActiveSheet.Shapes, які посилаються на інші два текстові поля.
Bandersnatch
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.