Hỏi Về Code Trong USer Form

Liên hệ QC

khamha

Không có việc gì khó...
Tham gia
4/6/10
Bài viết
662
Được thích
844
Nghề nghiệp
CNVC Laos
Mình Gặp Vấn Đề Trong Khi Tạo USer Form Nhờ Các Bạn Giúp Như Sau:
1. Mình Có Tạo Một USer Form Có Kích Thước Bằng Một Trang A4 ,Nhưng Khi Form Hiện Lên Màn Hình Để Nhập Dữ Liệu Thì Chỉ Có Khoảng
Hai Phần Ba, Nên Đoạn Cuối Không Thể Nhập Dữ Liệu Được,Không Biết Có Cách Nào Để Di Chuyển Form Lên Xuống Không ?
2. Có Cách Nào Để In Được USer Form Không?
Các Bạn Cố Gắng Giúp Mình Với. Cảm Ơn Các Bạn Nhiều...
 
Ui cha! Mình đâu có biết tiếng Lào, vậy nên nhìn Form mình chả biết cộng ô nào và trừ ô nào cả? Mình lượt Danh sách không thấy báo lỗi!
 
Upvote 0
Ui cha! Mình đâu có biết tiếng Lào, vậy nên nhìn Form mình chả biết cộng ô nào và trừ ô nào cả? Mình lượt Danh sách không thấy báo lỗi!

Xin lỗi đã làm Phiền bạn,Nó bị lỗi khi mình nhập Form mới.
+ Từ Ctr 19 - 26 là:số tiền thuế tất cả,Ctr 27 là tổng của Ctr 19 +...26
+ Từ Ctr 28 - 35 là:số tiền thuế được miễn hoặc trừ,Ctr 36 là tổng của Ctr 28 +...35
+ Từ Ctr 37 - 44 là:số tiền thuế nộp,Ctr 45 là tổng của Ctr 37 +...44
+ Ctr 45 = Ctr27 - Ctr36,Nó giống như cái Form bạn đã sửa cho mình đợt trước,nó khác chỗ mình bớt phần nhập vào khâu tính toán thôi"vì nó lên đến hơn 100 trường"
Cảm ơn bạn
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn chép và thay Sub cong() sau vào

Mã:
Sub Cong()
Dim i As Integer, Cg1 As Long, Cg2 As Long, Cg3 As Long
For i = 1 To 7
Me.Controls("Ctr" & 36 + i) = Format(Val(Format(Me.Controls("Ctr" & 18 + i), "0")) _
- Val(Format(Me.Controls("Ctr" & 27 + i), "0")), "#,##0")
Cg1 = Cg1 + Val(Format(Me.Controls("Ctr" & 18 + i), "0"))
Cg2 = Cg2 + Val(Format(Me.Controls("Ctr" & 27 + i), "0"))
Cg3 = Cg3 + Val(Format(Me.Controls("Ctr" & 36 + i), "0"))
Next
Ctr27 = Format(Cg1, "#,##0")
Ctr36 = Format(Cg2, "#,##0")
Ctr45 = Format(Cg3, "#,##0")
End Sub
 
Upvote 0
Bạn SeaLand Cho mình hỏi,không biết tại sao cái Form bạn giúp mình làm nó chỉ cho phép có 99 trường (Cả TextBox + CombBox) Cái này là do
hệ thống hay là bạn quy định như vậy?Có sửa lại cho nó lên khoảng 110 trường không,Nếu được bạn hướng dẫn cho mình với.
Cảm ơn bạn.
 
Upvote 0
Mình chưa đọc hay nghe ở đâu thông tin đó cả. Bạn nói rõ cái lỗi không cho thêm điều khiển rao sao?
 
Upvote 0
Ví dụ: 1 form có 107 trường,và mình chỉnh Code như sau:
Dim i, ch, Rg As Range
ch = "11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73"
For i = 1 To 107
If InStr(1, ch, Right("00" & i, 2)) = 0 Then
HS.Cells(Me.Ctr_dg, i) = Me.Controls("Ctr" & Right("00" & i, 2))
Else
HS.Cells(Me.Ctr_dg, i) = Val(Format(Me.Controls("Ctr" & Right("00" & i, 2)), "0"))
End If
Next
HS.Cells(Me.Ctr_dg, 108) = HS.Cells(Me.Ctr_dg, 108).Value & User & "~" & Format(Now(), "dd/mm/yy hh:mm") & ";"
xem
Naplist
End Sub

Sub Naptde()
Dim i, j
j = 4 - Me.CLang.ListIndex
For i = 1 To 30
Me.Controls("L" & Right("00" & i, 2)).Caption = HS.Cells(j, i) & " :"
Next
For i = 74 To 107
Me.Controls("L" & Right("00" & i, 2)).Caption = HS.Cells(j, i) & " :"
Next
End Sub

Sub Napdl()
Dim i, j, mg()
j = Me.Ctr_dg
On Error Resume Next
For i = 1 To 107
Me.Controls("Ctr" & Right("00" & i, 2)) = HS.Cells(j, i)
Next
For i = 11 To 30
Me.Controls("Ctr" & Right("00" & i, 2)) = Format(Me.Controls("Ctr" & Right("00" & i, 2)), "#,##0")
Next
For i = 32 To 51
Me.Controls("Ctr" & Right("00" & i, 2)) = Format(Me.Controls("Ctr" & Right("00" & i, 2)), "#,##0")
Next
For i = 53 To 72
Me.Controls("Ctr" & Right("00" & i, 2)) = Format(Me.Controls("Ctr" & Right("00" & i, 2)), "#,##0")
Next
Ctr31 = Format(Ctr31, "#,##0")
Ctr52 = Format(Ctr52, "#,##0")
Ctr73 = Format(Ctr73, "#,##0")
End Sub

Bạn xem mình chỉnh như trên thì nó không chạy,nếu sửa lại thành 107 = 99 và 108 = 100 thì OK.
 
Upvote 0
Bạn không thấy tại sao mỗi nhóm số có 2 chữ số sao. Code của bạn cũng vậy, bạn xem:


Me.Controls("L" & Right("00" & i, 2)).Caption = HS.Cells(j, i) & " :"

Vậy giả sử i=103 chẳng hạn
Câu lệnh trên thành

Me.Controls("L" & Right("00" & 103, 2)).Caption = HS.Cells(j, i) & " :"<--->Me.Controls("L02").Caption = HS.Cells(j, i) & " :"

Vậy bạn chỉ giùm Label L02 ở đâu.
Khi viết cấu trúc điều khiển khối phải thật chủ động trong câu lệnh và ý tưởng.Với trường hợp của bạn chỉ hơn 100 1 chút thì nên điều chỉnh xuất phát từ 01 thay vì 11 là được. Đồng thời kiểm tra các dãy ch và i.
Mặt khác, nếu số lượng điều khiển lớn thì nên lấy 1 sheet làm Form nhập sẽ nhẹ nhàng hơn nhiều, thậm chí hàng ngàn điều khiển, trong khi các trường tối đa phụ thuộc số cột của sheet tùy theo phiên bản Excel
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn SeaLand,Cho mình hỏi:1 file gồm 2 UserForm Và 14 Sheet (Không có ảnh) Có dung lượng 5,144 kb Là bình thường không?
Cảm ơn bạn.
 
Upvote 0
Bạn SeaLand,Cho mình hỏi:1 file gồm 2 UserForm Và 14 Sheet (Không có ảnh) Có dung lượng 5,144 kb Là bình thường không?
Cảm ơn bạn.

Bình thường thôi. Nhưng tùy thuộc vào các sheet có nhiều dữ liệu và công thức không nữa. Nếu các sheet trắng bóc mới bất bình thường.
 
Upvote 0
Bạn SeaLand ơi,Có cách nào không cho sửa dữ liệu từ Ctr01 đến Ctr06,Tức là khi bấm nút "SửaDữLiệu" thì nó chỉ cho
sửa từ Ctr07 trở đi"
Ctr01 đến Ctr06 vẫn hiện thị trên Form.Cảm ơn bạn
 
Upvote 0
Banj vào Properties của tùng ô thiết lập thuộc tính Locked của nó thành True (Hoặc Enable=false) là được
 
Upvote 0
Bạn SeaLand ơi,Bạn xem có cách nào làm cho nó mất cái dấu tam giác màu xanh ở trong ô,trong bảng Data được không,vì nếu trong dòng mà có
Ô nào bị như vậy thì khi lọc dữ liếu nó sẽ bỏ qua dòng đấy,nó thường bị trong các ô nhập số (mình đã thử bằng cách vào nhập lại trực tiếp trong
các ô như vậy thì nó mất cái dấu tam giác màu xanh Và lọc được) Bạn xem ảnh.Cảm ơn bạn.
Loi.jpg
 
Upvote 0
Không phải lỗi ở cái dấu tam giác, vì cái dấu đó thể hiện số lưu trong ô dưới dạng Text. Chứng tỏ bạn lọc theo giá trị số . Để như vậy khi nhập vào ô đó (ví dụ B3 chẳng hạn) ta dùng cú pháp:

-B3=TextBoxxxx*1 hoặc B3=Val(TextBoxxxxx)
 
Upvote 0
Không phải lỗi ở cái dấu tam giác, vì cái dấu đó thể hiện số lưu trong ô dưới dạng Text. Chứng tỏ bạn lọc theo giá trị số . Để như vậy khi nhập vào ô đó (ví dụ B3 chẳng hạn) ta dùng cú pháp:

-B3=TextBoxxxx*1 hoặc B3=Val(TextBoxxxxx)

Chào bạn sealand,bạn giúp hướng dẫn cho mình cách sửa lỗi như ở trên với,mình đọc mà chả
hiểu gì cả.
Thứ hai là khi mình đưa dữ liệu vào lần đầu tiên thì OK,sau đó nếu bấm NewFrom để nhập dữ liệu
mới thì bị lỗi như sau:
loikhinhannewfrom.jpg
loikhinhannewfrom.jpg
LoiKhiNhanNewFrom2.jpg

Cảm ơn bạn.
 
Lần chỉnh sửa cuối:
Upvote 0
Vấn đề của bạn là như thế này:
Bạn nhập dữ liệu từ TextBox của UserForm, mà dữ liệu trên TextBox thuộc dạng Text nên khi nhập vào Cell nó có dạng Text. Chức năng cảnh báo lỗi hiện dấu Tam giác báo lưu Number dưới dạng Text. Khi lọc hay công thức rất dễ bị lỗi nếu không đồng nhất dạng so sánh. Để sử lý có 2 việc phải làm là:

1/Điều chỉnh code nhập của Form để dữ liệu sau này luôn là dạng Number: Làm như mình hướng dẫn bài trước, nhớ tìm cho ra code nhạp ở đâu để điều chỉnh.

2/Số đã nhập vào bảng tính rồi: Ta làm động tác chuyển hết sang Number
-Mượn tạm 1 ô trống nào đó gõ số 1 rồi copy ô đó.
-Chọn toàn bộ vùng cần chuyển Text sang Number.
-Vào Menu Edit---Paste Speacial---Đánh dấu ô Multiply---OK
-Xoá số 1 tạm gửi bước đầu.
 
Upvote 0
Không phải lỗi ở cái dấu tam giác, vì cái dấu đó thể hiện số lưu trong ô dưới dạng Text. Chứng tỏ bạn lọc theo giá trị số . Để như vậy khi nhập vào ô đó (ví dụ B3 chẳng hạn) ta dùng cú pháp:

-B3=TextBoxxxx*1 hoặc B3=Val(TextBoxxxxx)

Cảm ơn bạn đã giúp,nhưng mình vào tìm trong Code rồi mà không biết phải sửa như thế nào nữa,bạn
làm ơn hướng dẫn chi tiết cho mình với.
 
Upvote 0
Bạn phải đưa file cụ thể lên thì mới biết sửa ra sao chứ?
 
Upvote 0
Bạn sửa giúp mình nha,cảm ơn bạn.
 

File đính kèm

  • New folder.7z
    281.8 KB · Đọc: 33
Upvote 0
Số liệu trên file của bạn nếu nhập ổn định từ Form chắc là không có vấn đề gì, mình thấy không cần thiết phải hiệu chỉnh gì thêm mà chỉ xoá các dấu báo lỗi cho sạch sẽ thôi. Bạn làm như file hướng dẫn nha.
 

File đính kèm

  • Xoadau.rar
    134.8 KB · Đọc: 37
Upvote 0
Mình đã sửa như bạn hướng dẫn và hiện nay cái vụ dấu chấm xanh đã được giải quyết,mình rất cảm
ơn bạn.
Tuy vậy bây giờ nó lại phát sinh ra một vấn đề khác là:
Khi mở Form ra lần đầu và sau khi nhập dữ liệu xong Save lại thì OK, Nhưng Khi nhấp tiếp vào nút
NewForm để nhập dữ liệu mới thì bị báo lỗi là:bạn xem ảnh

Loi.jpg

(Tức là khi mở Form mới chỉ nhập dữ liệu được một lần )
Bạn cố gắng xem giúp mình với,cảm ơn bạn
 
Upvote 0
Web KT
Back
Top Bottom