Excel 2016 UserForm [ditutup]

0

Oke, saya punya formulir pengguna. Pada formulir pengguna ini saya memiliki kotak kombo yang menarik datanya dari lembar kerja yang disebut "Daftar" (Rentang A2: A49). Saya memiliki tiga kotak teks lembar kerja Purchasing_Group "Daftar" (Rentang D2: D49), Plant_Number "Daftar" (Rentang B2: B49), dan kotak kombo "Daftar" (Rentang E2: E49) Profit_Center.

Saya memerlukan tiga kotak teks untuk diisi otomatis berdasarkan pilihan dari kotak kombo. masukkan deskripsi gambar di sini

R.Conklin
sumber
1
Harap dicatat bahwa superuser.com bukan layanan penulisan skrip / kode gratis. Jika Anda memberi tahu kami apa yang telah Anda coba sejauh ini (termasuk skrip / kode yang sudah Anda gunakan) dan di mana Anda macet maka kami dapat mencoba membantu dengan masalah tertentu. Anda juga harus membaca Bagaimana cara saya mengajukan pertanyaan yang bagus? .
DavidPostill

Jawaban:

0

Saya pikir ini harus bekerja, setidaknya di Excel 2011.

Dalam kode di bawah ini, "ComboResult" adalah output dari kotak Combo Anda ("tautan sel"). Itu harus dimasukkan sebagai referensi sel dalam tanda kutip ganda, yaitu "C7".

Demikian pula "LookupTable" adalah rentang sel dalam tabel pabrik Anda, yaitu "A1: E50". Sekali lagi, kutip ganda. Saya berasumsi tabel pencarian Anda ada di Sheet2. Anda dapat menggunakan sheet bernama dengan menggunakan Sheets ("sheet name"). Range ().

Karena kotak Kombo menghasilkan angka (posisi pilihan pengguna dalam daftar), tabel pencarian Anda harus memiliki kolom indeks sebagai kolom pertama. Itu hanya 1,2,3 dll hingga jumlah tanaman dalam daftar.

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

Setelah menambahkan kolom indeks, data yang Anda inginkan akan berada di kolom 3,4 dan 5 tabel, dan fungsi vlookup mengambil nilai-nilai tersebut, berdasarkan indeks yang dipilih dalam kotak Combo.

Bandersnatch
sumber
Apakah mungkin untuk melakukan apa yang saya butuhkan?
R.Conklin
Iya nih. Buat modul vba di atas dan kemudian tetapkan ke kotak Combo. Kapan saja kotak Combo berubah, kotak teks akan mendapatkan data baru.
Bandersnatch
Catatan: Saya menulis kode ini di Word dan kemudian mendapat kesalahan funky setelah menempelkannya ke Excel. Ternyata Excel tidak suka karakter kutipan yang digunakan Word. "Kutipan pintar" mereka, saya pikir. Saya harus menghapus semua tanda kutip dan mengetik ulang. Sheesh. Saya kira jika saya telah dikonversi ke teks biasa, itu akan baik-baik saja.
Bandersnatch
@ R.Conklin - Edit pertanyaan awal Anda. Tempel di beberapa cuplikan kode. Jika Anda meletakkan 4 spasi di awal setiap baris, situs akan secara otomatis memformatnya sebagai kode. Bisakah Anda melihat jawaban saya dengan subrutin? Karena pertanyaan ini ditunda, saya tidak yakin apakah jawaban saya berhasil.
Bandersnatch
Baik. Saya melihat Anda memiliki 3 kotak teks yang berbeda untuk diisi. Edit kode di atas dan tambahkan dua pernyataan ActiveSheet. Bentuk lain yang merujuk dua kotak teks lainnya.
Bandersnatch