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...
 
Cái vụ này nó còn liên quan đến việc ẩn hiên, Enable v.v... của điều khiển. Nếu chưa kiểm soát được thì bạn cứ xoá dòng đó đi đã (Hoặc dùng dấu ' đánh vào đầu dòng sử lý sau) Đây là lệnh đưa con trỏ vào điều khiển đầu tiên, nhưng nó chưa Enable hay Visiable=False là phat sinh lỗi.
 
Upvote 0
Mình đã làm như bạn hướng dẫn bằng cách thêm dấu ' vào trước dòng bị lỗi,và khi sử dụng NewForm
thì không còn lỗi đấy nữa,nhưng thấy vẫn chưa yên tâm vì chưa sửa được 100% ,Vì như bạn đã nêu
ở trên thì đây là giải pháp tình thế,nếu có thời gian bạn tranh thủ kiểm tra và sửa giúp mình với.
Cảm ơn bạn
 
Upvote 0
Nhờ bạn Sealand giúp sửa lại cái Form này với,không biết lỗi chỗ nào mà làm mãi không được,Cảm ơn bạn.
 

File đính kèm

  • ThuatLoong.7z
    38.7 KB · Đọc: 15
Upvote 0
Nhờ bạn Sealand sửa cái Form phụ này với

Chào bạn,mình có làm một cái Form phụ để dành riêng cho việc nhập số phiếu vào Data (vì số phiếu này do bên
kho bạc cấp sau khi nộp) mà mình thì không muốn cho nhân viên vào sửa trong Form chính.
ô cần sửa là ô AW đến BB,mình làm mãi mà chưa được,nên up lên nhờ bạn sửa giúp.
Cảm ơn bạn.
 

File đính kèm

  • Sua_ThemPhieu.7z
    20.6 KB · Đọc: 22
Upvote 0
Chào bạn SeaLand

Bạn sửa hộ mình ̣đoạn Code này với,nó bị lỗi do mình chuyển những ô cộng từ liên tiếp sang cách một ô,lúc
̣đầu là:
For i = 28 To 46
Còn bây giờ mình muốn thay lại là: 28 + 30 + 32 + 34 + 36 + 38 + 40 + 42 + 44 + 46
nhưng không biết phải sửa như thế nào,bạn giúp mình nhé,Cảm ơn bạn.
Mã:
Sub cong()
Dim i, Tong As Double
For i = [COLOR=red]28 To 46[/COLOR]
Tong = Tong + Val(Format(Me.Controls("Ctr" & Right("00" & i, 2)), "0"))
Next
Ctr47 = Format(Tong, "#,##0")
End Sub
 
Upvote 0
For i = 28 To 46

Sửa thành:

For i = 28 To 46 step 2
 
Upvote 0
Nhờ bạn SeaLand,Xem lại cho mình cái Form lọc dữ liệu,vì nó không lọc tháng 3 (201103) Tức là nó
bỏ qua tháng 3,bạn xem Code:
Code trong Form:
Mã:
Option Explicit
Private Sub CommandButton1_Click()
Dim tng, dng
  Dim rng As Range
  Sheet3.[A7:BE65536].ClearContents
  Sheet4.[A7:BE65536].ClearContents
    With HS
      On Error GoTo thoat
  .Range("A3:BE" & 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_M <> "" Then .Range("A3:BE" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=13, Criteria1:=Cb_M
   If Cb_N <> "" Then .Range("A3:BE" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=14, Criteria1:=Cb_N
   If Cb_O <> "" Then .Range("A3:BE" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=15, Criteria1:=Cb_O
          Set rng = .AutoFilter.Range.Offset(1, 0).Resize(.AutoFilter.Range.Rows. _
        Count - 1).SpecialCells(xlCellTypeVisible)
      rng.Copy Destination:=Sheet3.[B7]
     .Range("A3:BE" & HS.[a65536].End(xlUp).Row).AutoFilter
  .Range("A3:BE" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=2, _
  Criteria1:="=" & IIf(Me.ComboBox1 = "", Me.ComboBox1.List(0), Me.ComboBox1)
   If Cb_M1 <> "" Then .Range("A3:BE" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=13, Criteria1:=Cb_M1
   If Cb_N1 <> "" Then .Range("A3:BE" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=14, Criteria1:=Cb_N1
   If Cb_O1 <> "" Then .Range("A3:BE" & HS.[a65536].End(xlUp).Row).AutoFilter Field:=15, Criteria1:=Cb_O1
          Set rng = .AutoFilter.Range.Offset(1, 0).Resize(.AutoFilter.Range.Rows. _
        Count - 1).SpecialCells(xlCellTypeVisible)
      rng.Copy Destination:=Sheet4.[B7]
thoat:
    .Range("A3:BE" & HS.[a65536].End(xlUp).Row).AutoFilter
  End With
  If WorksheetFunction.CountA(Sheet3.[D7:D65536]) > 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:D65536]) > 0 Then
  With Sheet4.[A7].Resize(Sheet4.[c65536].End(xlUp).Row - 6)
  .Formula = "=row()-6"
  .Value = .Value
    End With
  End If
  Sheet1.Activate
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Sheet1.Select
HS.Range("A3:BE" & HS.[a65536].End(xlUp).Row).AutoFilter
Me.ComboBox1.List() = Nguon(Range(HS.[b5], HS.[b65536].End(xlUp)))
Me.Cb_tu.List() = Nguon(Range(HS.[b5], HS.[b65536].End(xlUp)))
Me.Cb_den.List() = Nguon(Range(HS.[b5], HS.[b65536].End(xlUp)))
Me.Cb_M.List() = Nguon(Range(HS.[m5], HS.[m65536].End(xlUp)))
Me.Cb_N.List() = Nguon(Range(HS.[n5], HS.[n65536].End(xlUp)))
Me.Cb_O.List() = Nguon(Range(HS.[o5], HS.[o65536].End(xlUp)))
Me.Cb_M1.List() = Nguon(Range(HS.[m5], HS.[m65536].End(xlUp)))
Me.Cb_N1.List() = Nguon(Range(HS.[n5], HS.[n65536].End(xlUp)))
Me.Cb_O1.List() = Nguon(Range(HS.[o5], HS.[o65536].End(xlUp)))
End Sub
Function Nguon(Rg As Range)
 Dim Clls As Range, mg()
  Dim loc As New Collection
   Dim i As Integer
    On Error Resume Next
      For Each Clls In Rg
        loc.Add Clls.Value, CStr(Clls.Value)
      Next Clls
     ReDim mg(loc.Count - 1)
    For i = 1 To loc.Count
   mg(i - 1) = loc(i)
  Next i
 Nguon = mg
End Function
Code trong Sheet3 (sheet lọc dữ liệu từ tháng đến tháng)
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
'Cac ban dung quan tam nhung dong mau XANH.
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
If Target = "" Then
    Target.EntireRow.ClearContents
    Exit Sub
End If
If Not Intersect(Target, Range("B7:B7777")) Is Nothing Then

   Dim Sh As Worksheet, rng As Range, sRng As Range, R As Range
   Set Sh = Sheets("Data")
   Set rng = Sh.Range(Sh.[A5], Sh.[A10000].End(xlUp))
   Set sRng = rng.Find(Target.Value, , xlFormulas, xlWhole)
   Set R = Range("A7:I" & Target.Row)

   If Target = "TT" Then Target.Font.ColorIndex = 3
   If Target <> "" And sRng Is Nothing Then
      Target.Font.ColorIndex = 3
   Else
      With Target
         Application.EnableEvents = False
         'Ghi STT
         .Offset(0, -1) = "=COUNT(R6C:R[-1]C)+1"
         .Offset(0, 1) = sRng.Offset(, 1).Value
         '.Offset(0, 2) = sRng.Offset(, 2).Value
         '.Offset(0, 4) = sRng.Offset(, 3).Value
         '.Offset(0, 5) = sRng.Offset(, 4).Value
         '.Offset(0, 6) = "=ROUND(RC[-3]*RC[-2],0)"
         '.Offset(0, 7) = "=ROUND(RC[-4]*RC[-2],0)"
         Application.EnableEvents = True
      End With
   End If
End If
End Sub
Cảm ơn bạn.
 
Upvote 0
Thường là các lỗi dạng này là do dữ liệu không thống nhất.
Bạn không gửi file lên chỉ nhìn code thế này thật khó tìm được nguyên do.
 
Upvote 0
Cảm ơn bạn,mình đã Up File lên,bạn kiểm tra giúp mình nhé.
 

File đính kèm

  • LoiLoc.7z
    35.8 KB · Đọc: 18
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.

Nếu trên Excel2007 thì vào đâu để điều chỉnh...mình tìm mà ko thấy.
 

File đính kèm

  • Xoadau.rar
    134.8 KB · Đọc: 9
Upvote 0
Web KT
Back
Top Bottom