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...
 
Đúng như Dom nói, nhưng trong trường hợp này, bạn khamha ví dụ: 45,000 - 132 = -87

Nhìn vào số là biết định dạng #,##0 rồi còn gì. Bệnh đâu thì sửa đó thôi mà!

À đây, một phần code định dạng trong Textbox trong Form đó đây:

PHP:
Private Sub Ctr06_AfterUpdate()
Ctr06 = Format(Val(Format(Ctr06, "0")), "#,##0")
cong
End Sub

Vậy bạn Khamha nên chỉnh cái đoạn trên dấu Phẩy sang chấm cho phù hợp định dạng máy của bạn là được.

Mã:
Ctr06 = Format(Val(Format(Ctr06, "0")), "#.##0")
 
Upvote 0
Vậy bạn Khamha nên chỉnh cái đoạn trên dấu Phẩy sang chấm cho phù hợp định dạng máy của bạn là được.

Mã:
Ctr06 = Format(Val(Format(Ctr06, "0")), "#.##0")


Trời, hỏng có được đâu à nha, nếu sửa lại như vậy là tiêu luôn đấy, bởi từ số 45000 mà chuyển thành 45.000 thì đương nhiên là ra 45 rồi đấy nhé! thà không định dạng gì hết thì OK
 
Upvote 0
Trời, hỏng có được đâu à nha, nếu sửa lại như vậy là tiêu luôn đấy, bởi từ số 45000 mà chuyển thành 45.000 thì đương nhiên là ra 45 rồi đấy nhé! thà không định dạng gì hết thì OK
Thì định dạng máy bạn ấy là #.###,## thì có gì đâu mà tiêu vậy bạn. Nó phù hợp chứ.
 
Upvote 0
Thì định dạng máy bạn ấy là #.###,## thì có gì đâu mà tiêu vậy bạn. Nó phù hợp chứ.

Nếu là vậy thì đâu nói gì, tại cái File đó được bác Sealand định dạng như thế để cho giao diện thấy rõ ràng. Nếu tính toán trên form đó luôn và tham chiếu giá trị tại những Textbox được định dạng đó, thì phải dùng hàm tách dấu phẩy (,) ra là được rồi mà. Không phải định dạng trong Control Panel lại đâu, bạn này hình như là người LÀO nên máy sẽ có định dạng chuẩn quốc tế, mình nghĩ là vậy.
 
Upvote 0
Mình thử chỉnh như các bạn hướng dẫn rồi sao vẫn không được,không biết các bạn đã thử sửa trên máy của các bạn chưa?
 
Upvote 0
Mình thử chỉnh như các bạn hướng dẫn rồi sao vẫn không được,không biết các bạn đã thử sửa trên máy của các bạn chưa?
Bạn không cần chỉnh gì cả, cứ để ngày giờ hệ thống chuẩn đi, vì code của Anh Sealand định dạng cho bạn như vậy thì bạn cứ chép Hàm TachSo của mình vào sử dụng là êm thôi.

http://www.giaiphapexcel.com/forum/...-Về-Code-Trong-USer-Form&p=274477#post274477

Sau khi làm chép Hàm đó vào Module, bạn sửa code trong Form lại như vầy:

PHP:
Sub cong()
Dim i, Tong As Double
For i = 10 To 26
Tong = Tong + Val(Format(Me.Controls("Ctr" & Right("00" & i, 2)), "0"))
Next
Ctr29 = Format(Tong, "#,##0")
Ctr30 = TachSo(Ctr06) - TachSo(Ctr29)
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Để File có tính tuỳ biến cao hơn, khi chép và xem trên các máy có sử dụng định dạng dấu thập phân khác nhau ta làm như sau:
1/ Thêm 1 hàm vào phần Code của Form hay trong Module đầu được:

Mã:
Function St_Num(n As Integer) As String
Dim Ch1 As String, Ch2 As String
Ch1 = Application.DecimalSeparator
Ch2 = Application.ThousandsSeparator
St_Num = "#" & Ch2 & "##0" & IIf(n > 0, Ch1 & String(n, "0"), "")
End Function

2/Dùng Find và Replace để thay các đoạn Style định dạng như "#,##0" bằng St_Num

Ví dụ:

Ctr06 = Format(Val(Format(Ctr06, "0")), "#,##0") <----> Ctr06 = Format(Val(Format(Ctr06, "0")), St_Num(0))
Ctr06 = Format(Val(Format(Ctr06, "0")), "#,##0.00") <----> Ctr06 = Format(Val(Format(Ctr06, "0")), St_Num(2))

Như vậy, sẽ vô tư trong các điều kiện thiết lập khác nhau của Control Parnel
 
Upvote 0
Nhờ chuyển từ ComboBox Sang ô trong bảng tính

Chào bạn SeaLand Và các bạn,Mình có thay cách lọc dữ liệu từ Form sang bảng tính (Bảng Báocáo) bằng cách tạo ComboBox
trực tiếp trên bảng,Vì lý do: để tiện cho việc theo dõi mình lọc những vẫn đề gì,mình thấy nó lọc rất tốt.
Sau khi làm xong mình mới phát hiện ra rằng Font Lào không hiện thị được trong ComboBox ,khi mình sử dụng nó trực tiếp trên
bảng tính " mình đã sử dụng Font Unicode" . trong Sheet"Báocáo" có ảnh minh họa lỗi.
Nên mình đưa file lên nhờ bạn sửa lại để cho nó hiện thị chữ lào được bằng cách:
Thay các ComboBox thành các ô trong bảng tính như sau:
+ Cb_tu = ô C2 trong Sheet"Báocáo"
+ Cb_den = ô C3 trong Sheet"Báocáo"
+ ComboBox1 = ô C4 trong Sheet"Báocáo"
+ Cb_F = ô D4 trong Sheet"Báocáo"
+ Cb_G = ô E4 trong Sheet"Báocáo"
+ Cb_H = ô F4 trong Sheet"Báocáo"
Cảm ơn bạn nhiều.
́* Còn một vấn đề nữa nhờ bạn sửa là: Không cho Chuyển Sheet (Khi bấm nút "Loc" tại Sheet"Báocáo" thì nó tự động chuyển sang Sheet"Tudaunam")
 

File đính kèm

  • 9999999999.7z
    109.7 KB · Đọc: 12
Lần chỉnh sửa cuối:
Upvote 0
Mình đã sửa lại theo ý bạn

Bạn Sealand ơi,Cái form lọc này lại có vấn đề rồi,Có vấn đề ở chỗ:
Khi ta chọn lọc tất cả các nội dung trong form lọc thì kết quả của nó ra như sau:
+ trong Sheet"Tudaunam" thì nó lọc đầy đủ theo nội dung đã chọn ở form "kể cả cột F,G và H"
+ trong Sheet"trongthang"thì nó chỉ lọc tháng và năm mà mình đã chọn,còn nội dung ở cột "F,G Và H" thì nó không lọc.
Nhờ bạn kiểm tra lại và sửa cho mình với,Còn về vấn đề chuyển ConboBox sang ô trong bảng tính thì mình đã tìm ra giải pháp rồi.
Cảm ơn bạn.
 
Upvote 0
Từ đầu đến giờ đã có rất nhiều file mẫu, vậy bạn phải gửi file lỗi đó lên hoặc chỉ dẫn đến bài nào thì mình mới kiểm tra được
Có phải bạn định nói tới file bài #72 không? Ban chép code sau vào nhé

Mã:
Private Sub CommandButton1_Click()
Dim tng, dng
  Dim Rng As Range
  Sheet3.[A7:BB65536].ClearContents
  Sheet4.[A7:BB65536].ClearContents
    With HS
      On Error GoTo thoat
  .Range("A3:BB" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=2, _
   Criteria1:=">=" & IIf(Me.Cb_tu = "", Cb_tu.List(0), Cb_tu), Operator:=xlAnd, _
   Criteria2:="<=" & IIf(Cb_den = "", Cb_den.List(Cb_den.ListCount - 1), Cb_den)
   If Cb_F <> "" Then .Range("A3:BB" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=6, Criteria1:=Cb_F
   If Cb_G <> "" Then .Range("A3:BB" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=7, Criteria1:=Cb_G
   If Cb_H <> "" Then .Range("A3:BB" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=8, Criteria1:=Cb_H
          Set Rng = .AutoFilter.Range.Offset(1, 0).Resize(.AutoFilter.Range.Rows. _
        Count - 1).SpecialCells(xlCellTypeVisible)
      Rng.Copy Destination:=Sheet3.[B7]
     .Range("A3:BB" & HS.[a65536].End(xlUp).Row).AutoFilter
  .Range("A3:BB" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=2, _
  Criteria1:="=" & IIf(Me.ComboBox1 = "", Me.ComboBox1.List(0), Me.ComboBox1)
  If Cb_F <> "" Then .Range("A3:BB" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=6, Criteria1:=Cb_F
  If Cb_G <> "" Then .Range("A3:BB" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=7, Criteria1:=Cb_G
  If Cb_H <> "" Then .Range("A3:BB" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=8, Criteria1:=Cb_H
          Set Rng = .AutoFilter.Range.Offset(1, 0).Resize(.AutoFilter.Range.Rows. _
        Count - 1).SpecialCells(xlCellTypeVisible)
      Rng.Copy Destination:=Sheet4.[B7]
thoat:
    .Range("A3:BB" & HS.[a65536].End(xlUp).Row).AutoFilter
  End With
  If WorksheetFunction.CountA(Sheet3.[D7:D8]) > 0 Then
  With Sheet3.[A7].Resize(Sheet3.[c65536].End(xlUp).Row - 6)
  .Formula = "=row()-6"
  .Value = .Value
    End With
  End If
    If WorksheetFunction.CountA(Sheet4.[D7:D8]) > 0 Then
  With Sheet4.[A7].Resize(Sheet4.[c65536].End(xlUp).Row - 6)
  .Formula = "=row()-6"
  .Value = .Value
    End With
  End If
  Sheet3.Activate
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn SeaLand ơi,bạn hướng dẫn cách sửa code trong bài #90 để nó lọc sang hàng 33 của Sheet3 và 4 với,mình sửa mãi
mà không được " vì từ hàng 1 đến 30 mình sẽ dùng hàm SUMIF để lọc chi tiết" bạn giúp mình nha.Cảm ơn bạn
* Ghichú:không biết bạn đã nhận được tin nhắn của mình gửi cho bạn trong ngày 24 / 10 / 2010 không.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn chú ý 1 số điểm:

...............
Sheet3.[A7:BB65536].ClearContents<--->Sheet3.[A33:BB65536].ClearContents
Sheet4.[A7:BB65536].ClearContents<--->Sheet4.[A33:BB65536].ClearContents
.........................
Rng.Copy Destination:=Sheet3.[B7]<---->Rng.Copy Destination:=Sheet3.[B33]
.........................
Rng.Copy Destination:=Sheet4.[B7]<---->Rng.Copy Destination:=Sheet4.[B33]
thoat:
.Range("A3:BB" & HS.[a65536].End(xlUp).Row).AutoFilter
End With
If WorksheetFunction.CountA(Sheet3.[D33:D34]) > 0 Then
With Sheet3.[A7].Resize(Sheet3.[c65536].End(xlUp).Row - 6)<--->With Sheet3.[A33].Resize(Sheet3.[c65536].End(xlUp).Row - 32)
.Formula = "=row()-6"<--->.Formula = "=row()-32"
.Value = .Value
End With
End If
If WorksheetFunction.CountA(Sheet4.[D33:D34]) > 0 Then
With Sheet4.[A33].Resize(Sheet4.[c65536].End(xlUp).Row - 32)
.Formula = "=row()-32"
.Value = .Value
End With
...............
 
Upvote 0
Mình sửa như bạn hướng dẫn rồi mà sao không được,bạn xem Code:
Private Sub CommandButton1_Click()
Dim tng, dng
Dim Rng As Range
Sheet3.[A33:CT65536].ClearContents
Sheet4.[A33:CT65536].ClearContents
With HS
On Error GoTo thoat
.Range("A3:CT" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=2, _
Criteria1:=">=" & IIf(Me.Cb_tu = "", Cb_tu.List(0), Cb_tu), Operator:=xlAnd, _
Criteria2:="<=" & IIf(Cb_den = "", Cb_den.List(Cb_den.ListCount - 1), Cb_den)
If Cb_F <> "" Then .Range("A3:BB" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=6, Criteria1:=Cb_F
If Cb_G <> "" Then .Range("A3:BB" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=7, Criteria1:=Cb_G
If Cb_H <> "" Then .Range("A3:BB" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=8, Criteria1:=Cb_H
Set Rng = .AutoFilter.Range.Offset(1, 0).Resize(.AutoFilter.Range.Rows. _
Count - 1).SpecialCells(xlCellTypeVisible)
Rng.Copy Destination:=Sheet3.[B33]
.Range("A3:CT" & HS.[a65536].End(xlUp).Row).AutoFilter
.Range("A3:CT" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=2, _
Criteria1:="=" & IIf(Me.ComboBox1 = "", Me.ComboBox1.List(0), Me.ComboBox1)
If Cb_F <> "" Then .Range("A3:CT" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=6, Criteria1:=Cb_F
If Cb_G <> "" Then .Range("A3:CT" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=7, Criteria1:=Cb_G
If Cb_H <> "" Then .Range("A3:CT" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=8, Criteria1:=Cb_H
Set Rng = .AutoFilter.Range.Offset(1, 0).Resize(.AutoFilter.Range.Rows. _
Count - 1).SpecialCells(xlCellTypeVisible)
Rng.Copy Destination:=Sheet4.[B33]
thoat:
.Range("A3:CT" & HS.[a65536].End(xlUp).Row).AutoFilter
End With
If WorksheetFunction.CountA(Sheet3.[D33:D34]) > 0 Then
With Sheet3.[A33].Resize(Sheet3.[c65536].End(xlUp).Row - 32)
.Formula = "=row()-32"
.Value = .Value
End With
End If
If WorksheetFunction.CountA(Sheet4.[D33:D34]) > 0 Then
With Sheet4.[A33].Resize(Sheet4.[c65536].End(xlUp).Row - 32)
.Formula = "=row()-32"
.Value = .Value
End With
End If
Sheet9.Activate
End Sub

Ở Sheet 3 Và 4 Nó bị đơ,không thể cuộn xuống được.bạn xem lại cho mình với,Cảm ơn bạn
 
Upvote 0
Bạn nói thế nào chứ , đây là chính code của bạn
 

File đính kèm

  • LocDuLieuRa 2 Sheet.rar
    46.5 KB · Đọc: 22
Upvote 0
Bạn SeaLand ơi,Mình hấp tấp quá,sửa như bạn hướng dẫn là đúng rồi,vì do mình dùng Split Và Freez Panes nên khi mình
Ínert dòng nó bị lỗi,Bạn thông cảm cho mình nha.Cảm ơn bạn
 
Upvote 0
Sửa Code,Không hiện dữ liệu từ bảng Data ra Form

Chào bạn SeaLand,Mình có áp dụng cái Form của bạn để làm Form theo dõi các việc khác,trong Form
mới nó có ít dữ liệu và không có phần tính toán,Khi mình làm xong thì thấy như sau:
1, Lúc nhập dữ liệu vào thì OK.
2, Không biết mình xóa nhầm đoạn Code nào mà khi mở Form ra nó không hiện nên dữ liệu mà mình ̣̣đã
nhập trước ̣đó "Khi mình kiểm tra trong bảng Data thì vẫn có Và đưa ra in bình thường.
Trước khi mình đưa lên nhờ bạn sửa giúp đã sửa rất nhiều rồi mà không được,Làm phiền bạn sửa giúp
và giải thích cho mình hiểu với.Cảm ơn bạn
 

File đính kèm

  • BaySaNo2.7z
    123.6 KB · Đọc: 18
Upvote 0
1/
Sub Napdl()
....................
Me.Controls("Ctr" & Right("00" & i, 2)) = HS.Cells(j, i)
Next
Next

For i = 1 To 21
Me.Controls("Ctr" & Right("00" & i, 2)) = Format(Me.Controls("Ctr" & Right("00" & i, 2)), "#,##0")
End Sub

Sửa thành:
Sub Napdl()
....................
Me.Controls("Ctr" & Right("00" & i, 2)) = HS.Cells(j, i)
Next
For i = 1 To 21
Me.Controls("Ctr" & Right("00" & i, 2)) = Format(Me.Controls("Ctr" & Right("00" & i, 2)), "#,##0")
Next
End Sub

2/
Private Sub UserForm_Initialize()
.............................................
Naptde
Naplist
'Napdl <---------Bỏ dấu nháy
xem
End With
End Sub

3/

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
Me.Ctr_dg = Item
Napdl <--------Thêm dòng này
End Sub
 
Upvote 0
bạn sealand ơi,sao lúc mình bấm nút NewForm mà dữ liệu cũ vẫn còn,bạn hướng dẫn mình cách sửa với ( #96 ) Cảm ơn bạn
 
Upvote 0
Bạn thay đoạn Code này vào nha

Mã:
Private Sub Cmd_Moi_Click()
Dim i
If Not P_New Then
MsgBox "you do not have more open data..." & Chr(10) _
& "contact your administrator.", , "KhamHa Keotaven"
Exit Sub
Else
sua
Me.Ctr_dg = HS.[a65536].End(xlUp).Row + 1
For i = 1 To 21
If i <> 4 Then Me.Controls("Ctr" & Right("00" & i, 2)) = ""
Next
Me.Ctr01.SetFocus
End If
End Sub
 
Upvote 0
Nhờ bạn SeaLand sửa lại cái Code cho mình với

Mình có rút gọn lại cái Form theo dõi thuế ,trong phần các loại thuế nộp và nó lại bị lỗi trong khi trừ.
bạn xem và sửa lại cho mình với.Cảm ơn bạn
 

File đính kèm

  • Form_Tax.7z
    75.3 KB · Đọc: 14
Upvote 0
Web KT
Back
Top Bottom