Viết code thế nào để userform hiện đúng ý

Liên hệ QC

concogia

Gội rồi mới Cạo
Tham gia
17/9/09
Bài viết
3,412
Được thích
6,876
Tôi có một vài câu hỏi nhờ thày cô anh em trợ giúp. Các yêu cầu nằm trong sheet1
Xin cám ơn
 

File đính kèm

Bạn thử xem có dùng được không
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
*Để 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
Sau đó bạn về excel, nhấn alt+f8
chọn goibang, vào thẻ option, gõ thêm ký tự mà bạn mong muốn, rồi ok. Sau đó bạn chỉ việc nhấn tổ hợp ctrl + ký tự bạn đã gõ mà thôi.
**Để 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!!!
 
Upvote 0
*Để 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!!!

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
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
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]
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.
 
Lần chỉnh sửa cuối:
Upvote 0
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
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
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]
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.
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- 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
2- 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
Cái này hỏi chủ yếu để học thêm thôi vì bài của bạn đã quá đạt yêu cầu rồi, số textox là cố định (không tăng, giảm) Mà đã học thì phải đóng học phí (cái này tự nguyện), nếu bạn ở Saigon, hay có dịp ghé Saigon mình xin mời bạn 5 ve ken (vì mình chỉ "xơi" được 5 ve là "tèo") và 1 dĩa mỳ gói xào thịt bò
Thân
 
Upvote 0
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

Trong sự kiện đoạn code sau lệnh màu đỏ giải quyết việc đó cho bạn

Mã:
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
2- 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
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 if
Mã:
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
Đó là điểm trái nhất của ô ,nếu trái nhất của form bằng điểm này trừ đi chiều rộng của form thì có phải cạnh phải của Form ở bên trái ô không
Chúc bạn thành công.
Rất cám ơn bạn, nghe bạn nói mà muốn ghê. Mấy khi có dịp offline hàn huyên vậy. Nhưng tiếc là mình ở tận Hải Phòng cơ.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom