Excel 2016 UserForm [zamknięty]

0

Ok, mam formularz użytkownika. W tym formularzu użytkownika mam pole kombi, które pobiera dane z arkusza roboczego o nazwie „Listy” (zakres A2: A49). Mam trzy pola tekstowe Arkusz roboczy „Listy” (Zakres D2: D49), Numer_produktu „Listy” (Zakres B2: B49) i Pole kombi „Listy” Profit_Center (Zakres E2: E49).

Potrzebuję trzech pól tekstowych do automatycznego wypełniania na podstawie wyboru z pola kombi. wprowadź opis zdjęcia tutaj

R.Conklin
źródło
1
Uwaga: superuser.com nie jest darmową usługą pisania skryptów / kodów. Jeśli powiesz nam, co próbujesz do tej pory (dołącz skrypty / kod, którego już używasz) i gdzie utknąłeś, możemy spróbować pomóc w rozwiązaniu określonych problemów. Powinieneś także przeczytać Jak zadać dobre pytanie? .
DavidPostill

Odpowiedzi:

0

Myślę, że to powinno działać, przynajmniej w Excelu 2011.

W poniższym kodzie „ComboResult” jest wyjściem twojego pola kombi („link do komórki”). Należy wprowadzić jako odwołanie do komórki w podwójnych cudzysłowach, tj. „C7”.

Podobnie „LookupTable” to zakres komórek w tabeli roślin, tj. „A1: E50”. Ponownie, podwójne cudzysłowy. Zakładam, że twoja tabela odnośników znajduje się na arkuszu 2. Można użyć nazwanego arkusza za pomocą Arkuszy („nazwa arkusza”). Range ().

Ponieważ pole kombi wyświetla liczbę (pozycję wybraną przez użytkownika na liście), twoja tabela odnośników musi mieć kolumnę indeksu jako pierwszą kolumnę. Będzie to tylko 1,2,3 itd. Do liczby roślin na liście.

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

Po dodaniu kolumny indeksu potrzebne dane znajdą się w kolumnach 3, 4 i 5 tabeli, a funkcje vlookup przechwytują te wartości na podstawie indeksu wybranego w polu Combo.

Bandersnatch
źródło
Czy można zrobić to, czego potrzebuję?
R.Conklin
Tak. Utwórz moduł vba powyżej, a następnie przypisz go do pola Combo. Za każdym razem, gdy zmienia się pole kombi, pole tekstowe otrzymuje nowe dane.
Bandersnatch
Uwaga: Napisałem ten kod w programie Word, a po wklejeniu go do programu Excel wystąpiły błędy. Okazało się, że Excel nie lubi znaków cudzysłowu, których używa Word. Myślę, że ich „inteligentne cytaty”. Musiałem usunąć wszystkie cytaty, a następnie wpisać ponownie. Do licha. Myślę, że gdybym przekonwertował na zwykły tekst, byłoby OK.
Bandersnatch
@ R.Conklin - Edytuj swoje oryginalne pytanie. Wklej kilka fragmentów kodu. Jeśli umieścisz 4 spacje na początku każdego wiersza, witryna automatycznie sformatuje go jako kod. Czy widzisz moją odpowiedź dotyczącą podprogramu? Ponieważ pytanie zostało zawieszone, nie jestem pewien, czy moja odpowiedź się spełniła.
Bandersnatch
Dobrze. Widzę, że masz 3 różne pola tekstowe do wypełnienia. Edytuj powyższy kod i dodaj jeszcze dwie instrukcje ActiveSheet.Shapes, które odwołują się do pozostałych dwóch pól tekstowych.
Bandersnatch