Nạp nội dung vào Textbox UserForm1 từ Textbox ở UserForm2

Liên hệ QC

linhcute2000

Thành viên mới
Tham gia
1/4/16
Bài viết
29
Được thích
10
Chào các bạn,
Xin các bạn trợ giúp mình.

File mình có 2 UserForm

1. UserForm1 chứa nhiều textBox và 1 nút Comandbutton để gọi UserForm2
=> Trước khi mình Click vào Cmd ở UserForm1 để gọi UserForm2 thì con trỏ chuột mình đưa vào (đang được SetFocus hay select gì đó) ở bất kỳTextbox (tên, hoặc địa chỉ, hoặc số điện thoại,…) ở UserForm1

2. Khi gọi UserForm2 từ Cmd ở UserForm1 -> UserForm2 sẽ mở lên
=> khi UserForm2 Show -> có 1 Text Box -> sẽ gõ nội dùng vào đây=> Mong muốn là nội dung mình gõ từ Textbox ở User2 sẽ được nạp vào TextBox ở UserForm1 mà trước khi Click Cmd gọi UserForm2 mình đang focus

Ví dụ: Mình muốn gõ vào ô Địa chỉ ở UserForm1: -> Đưa trỏ chuột vào Textbox Địa chỉ (UserForm1) -> Click Cmd (UserFomr1) show UserFrom2, gõ vào Textbox ở UserForm2: nộ dung gõ sẽ tự động nạp vào UserForm1.Textbox địa chỉ
Tương tự các Textbox khác cũng vậy

Như vậy: Làm sao để xác định Textbox nào đang Focus (Select gì đó) trước khi Click vào Cmd ở UserForm1

Trân trọng cảm ơn,
 

File đính kèm

Như vậy: Làm sao để xác định Textbox nào đang Focus (Select gì đó) trước khi Click vào Cmd ở UserForm1

Nếu Userform của bạn chỉ có vài Textbox thì làm cách đơn giản như sau:
- Mở một Module mới, khai báo một biến toàn cục để lưu tên (Name) của Textbox vừa mới Exit (LostFocus). Ví dụ:
Mã:
Public sCtlName As String

- Trong Userform 1 (ví dụ của bạn), mỗi Textbox bạn thiết lập ở event Textbox_Exit sẽ gán tên của textbox này vào biến toàn cục vừa tạo.
Ví dụ:
Mã:
Private Sub txtHoTen_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    sCtlName = Me.ActiveControl.Name
End Sub

- Ở Userform2, ở sự kiện Textbox1 Enter hoặc AfterUdate, ... thì sẽ gán giá trị vừa nhập cho Userform1.Controls có tên là tên biến toàn cục đã lưu.
Ví dụ:
Mã:
Private Sub TextBox1_Enter()
   UserForm1.Controls(sCtlName).Text = Me.TextBox1.Text
End Sub

Xong.

(Nếu Userform có nhiều Textbox quá, không thể code cho sự kiện Exit của từng textbox thì phải dùng Class cho các textbox này nhưng vụ class thì các bạn khác hỗ trợ giùm :) )
 
Upvote 0
Nếu Userform của bạn chỉ có vài Textbox thì làm cách đơn giản như sau:
- Mở một Module mới, khai báo một biến toàn cục để lưu tên (Name) của Textbox vừa mới Exit (LostFocus). Ví dụ:
Mã:
Public sCtlName As String

- Trong Userform 1 (ví dụ của bạn), mỗi Textbox bạn thiết lập ở event Textbox_Exit sẽ gán tên của textbox này vào biến toàn cục vừa tạo.
Ví dụ:
Mã:
Private Sub txtHoTen_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    sCtlName = Me.ActiveControl.Name
End Sub

- Ở Userform2, ở sự kiện Textbox1 Enter hoặc AfterUdate, ... thì sẽ gán giá trị vừa nhập cho Userform1.Controls có tên là tên biến toàn cục đã lưu.
Ví dụ:
Mã:
Private Sub TextBox1_Enter()
   UserForm1.Controls(sCtlName).Text = Me.TextBox1.Text
End Sub

Xong.

(Nếu Userform có nhiều Textbox quá, không thể code cho sự kiện Exit của từng textbox thì phải dùng Class cho các textbox này nhưng vụ class thì các bạn khác hỗ trợ giùm :) )

Cảm ơn anh. Làm theo cách của anh và đã thành công.
Trân trọng,
 
Upvote 0
Nếu Userform của bạn chỉ có vài Textbox thì làm cách đơn giản như sau:
...
Làm thì đơn giản nhưng trên thực tế, quản lý nó không đơn giản đâu.
Thớt chỉ có ý nghĩ chứ chưa chạm thực tế cho nên không biết là làm việc "link" tự động như thế này rất nguy hiểm. Nhảy qua nhảy lại vài lần, người dùng sẽ không còn kiểm soát được dữ liệu ấy do tự động nơi khác gán vào hay do mình chỉnh sửa.

Đương nhiên thớt đã có ý ấy rồi thì trong đầu cũng có hàng vạn cớ để bảo vệ ý của mình cho nên tôi chẳng tốn hơi cản trở. Tôi chỉ cảnh báo cho các bạn khác có ý muốn bắt chước.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom