Menjaga Daftar ComboBox Tetap Terisi

Saya telah membuat Sub Makro VBA Word 2010 dengan UserForm. Sub mencari ==Codes== dalam dokumen formulir, menempatkan ==code== yang ditemukan sebagai label ke dalam Formulir Pengguna dan kemudian memungkinkan pengguna untuk mengganti ==code== dengan inputnya di Combobox ( bagian dari UserForm yang sama).

Setiap string data yang dimasukkan kemudian disimpan ke daftar Combobox di UserForm untuk dipilih nanti jika diperlukan.

Ini berfungsi dengan baik hingga Makro/Formulir Pengguna ini habis masa berlakunya karena dokumen yang dicari telah selesai (atau dibatalkan).

Saya kemudian ingin membuka dokumen formulir berikutnya, dan dalam peluncuran baru Makro/Sub yang sama ini mempertahankan daftar data kotak kombo sebelumnya (sebagai opsi untuk mengisi dokumen yang dibuka berikutnya ini - misalnya, kode ==Nama Klien== akan sering muncul, dan saya lebih suka memilih entri daftar kombo daripada harus mengetikkan nama klien berulang kali)

Namun sepertinya saya tidak dapat menyimpan daftar kotak kombo di peluncuran baru Sub Makro ini yang diisi dengan data kotak kombo sebelumnya - bahkan jika saya mengisolasi rutinitas ini sebagai modul terpisah dan menentukan terlebih dahulu variabel dengan dimensi "Publik".

Jadi, sebelum saya berusaha keras untuk mencari tahu ... hanya sebuah pertanyaan sederhana:

Setelah Makro dihentikan, apakah semua variabel Publik "dihapus"? Ketika saya biasa memprogram di DOS WP.51 Macro Anda dapat menyimpan string data di RAM tanpa henti (sampai Anda "membunuhnya", atau menutup WP)

Jika variabel Publik tidak "dihilangkan", dapatkah seseorang memberi saya contoh kode yang dapat digunakan untuk mempertahankan variabel Publik dan diisi ke dalam formulir pengguna kotak kombo yang diluncurkan secara duplikat.

Ide apa pun, betapapun singkatnya, akan membantu

Terima kasih banyak sebelumnya. . .

Mike


person Mike28    schedule 18.01.2016    source sumber
comment
Hanya untuk mendapatkan ide yang benar. Saya berasumsi Anda menyimpan UserForm Makro ini ke dalam Normal Templat? dan kemudian ketika Anda membuka dokumen formulir berikutnya, Anda akan menutup Word dan kemudian membukanya lagi?   -  person Jean-Pierre Oosthuizen    schedule 19.01.2016


Jawaban (1)


Tidak sepenuhnya yakin dengan apa yang Anda coba lakukan, tetapi yang saya rekomendasikan adalah yang berikut (Dengan asumsi formulir tersebut diberi nama, "UserForm1" dan kemudian "UserForm2":

1) Buat Modul yang Anda gunakan untuk membuka formulir menggunakan:

Sub test()
    UserForm1.Show
    'Rest of things that you want to do...you will be able to access the values in your combobox in userform1
    UserForm2.Show
End Sub

2) Di UserForm1 Anda, sertakan tombol yang akan menutup formulir dan menyertakan kode berikut:

Sub btn_Exit_Click()
    Me.Hide
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    If CloseMode = 0 Then
        Cancel = True
        MsgBox "The X is disabled, please use a button on the form.", vbCritical
    End If

End Sub

Ini akan memungkinkan Anda untuk mempertahankan kendali atas UserForm dan memastikan bahwa Anda dapat mempertahankan nilainya. Dimungkinkan untuk menonaktifkan tombol Penutupan, tetapi saya tidak dapat mengetahuinya (pengalaman saya dengan formulir sebagian besar ada di Access dan formulir tersebut memiliki properti berbeda).

Menyembunyikan formulir akan menyimpan nilai-nilai sehingga Anda dapat melihatnya sedangkan ketika pengguna menutup formulir, Anda akan kehilangan nilai-nilai yang ada di dalamnya.

*Catatan: Kode untuk menonaktifkan tombol X diambil dari VBA Express

person OpiesDad    schedule 19.01.2016
comment
Terima kasih, OpieDad. Tidak, bukan ini masalahnya; tapi menurut saya sangat berguna cara Anda menonaktifkan tombol X. Terima kasih. Mike - person Mike28; 19.01.2016
comment
Saya seharusnya mengujinya. Metode yang saya berikan sebenarnya tidak berhasil; Saya akan mengedit untuk memasukkan yang bisa. - person OpiesDad; 19.01.2016