*Để tiện lợi bạn nên viết đoạn code để tự động gọi userform1 của bạn bằng cách:
Public Sub goibang()
UserForm1.Show (0)
End Sub
...............................
**Để nhận các giá trị theo vùng bạn mong muốn thì càng đơn giản hơn. Theo cách sau:
Bạn click vào mỗi textbox bạn mong muốn, nhìn qua phía trái màn hình có thẻ properties - textbox 72(hoặc một số nào đó). Sau đó tìm thẻ controlsource bạn điền địa chỉ thích hợp mà bạn mong muốn ví dụ: sheet1!b12 và tiếp tục làm cho các textbox khác không cần đoạn mã nào đâu bạn.
*** Khi đã chọn trạng thái cho userform của phương thức show là 0 thì bạn có quyền di chuyển bảng đến một vị trí bất kỳ trên màn hình mà không sợ bị che. bạn tải file về và nhấn ctrl + D sau đó di chuyển là biết liền nhờ vào đoạn code mà tôi đã viết.
Chúc bạn thành công!!!
Private Sub Nap()
Dim i As Integer
Dim rng As Range
Set rng = Sheet1.[b9:k15]
For i = 1 To rng.Cells.Count
Me.Controls("TextBox" & 71 + i) = rng.Cells(i)
Next
End Sub
Rất cám ơn bạn đã giúp đỡ, hoàn toàn trúng ý của mình. Nhân tiện đây xin hỏi thêm:1/Trước dòng UserForm1.Show (0) phải có Cancel=True để xoá bỏ động tác nháy đúp chuyển sang chế độ Edit (Nếu không ta phải bấm vào đâu đó trên bảng tính để thoát chế độ Edit mới làm việc khác được
2/Với vài dòng lệnh tại sao không làm mà lại ngồi gán gần 80 textbox
Chưa nói sau này điều chỉnh dễ dàng hơn (Ví dụ thay đổi cấu trúc Sheet1 chẳng hạn thay vì sửa gần 80 cái Textbox bằng sửa mỗi câu Set rng = Sheet1.[b9:k15]Mã:Private Sub Nap() Dim i As Integer Dim rng As Range Set rng = Sheet1.[b9:k15] For i = 1 To rng.Cells.Count Me.Controls("TextBox" & 71 + i) = rng.Cells(i) Next End Sub
3/Nếu dùng phím sao ta không dùng lệnh OnKey để gán cho 1 phím Fn nào đó ít dùng. Khi gọi nhấn 1 phím thay vì nhấn tổ hợp phím.
1- Sau khi mình đóng cái thằng userform trên bảng tính thì cái cell mình đã doubleclick ở chế độ edit vậy muốn nó thành ( theo như kiểu nói của film Hồng Kông) như chưa hề doubleclick đứa nào hết thì ta phải thêm vào code như thế nào
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
[SIZE=3][B][COLOR=Red]Cancel = True[/COLOR][/B][/SIZE]
Worksheets("sheet1").Range("a9") = ActiveCell.Value
Trai = Target.Left
Tren = Target.Top
Rong = Target.Width
UserForm1.Show 0
End Sub
Bạn "mò" 1 chút cho nó quen, bạn sửa code trên 1 chút để tìm target quá 2/3 màn hình là bao nhiêu và lấy đó làm mốc điều khiển if2- Nếu chọn cái Cell ở sát màn hình bên phải thì thằng userform nó chạy mất tiêu, có cách nào khi ta chọn cell sát màn hình bên phải thì userform xuất hiện bên trái
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
[SIZE=3][B][COLOR=Red]Cancel = True[/COLOR][/B][/SIZE]
Msgbox "Goc trai nhat cua o vua nhan la " & Target.Left
End Sub