Chuyên mục xử lý, gỡ rối code VBA

Liên hệ QC
Status
Không mở trả lời sau này.

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,930
Nếu không có frx thì không thể import được. Vậy bạn chỉ còn mỗi code thôi. Mở tập tin -> tự thêm UserForm -> bây giờ bạn phải biết UserForm phải có những control gì rồi thả nó từ toolbox xuống form thôi. Rồi thiết các thuộc tính, vd. Name. Sau đó copy code (từ dòng Dim RsDmcv As ADODB.Recordset) từ frm sang.
Mình đang làm thử như vậy nhưng cũng chưa được. Cố gắng thử ( mới tập tành xem code), cám ơn bạn đã xem bài.
 
Upvote 0
Mình đang làm thử như vậy nhưng cũng chưa được.
Sao lại chưa được?
Thêm 1 hay 10 UserForm đều được. Bạn mở tập tin frm bằng notepad, chắc chắn được. Copy từ dòng Dim RsDmcv As ADODB.Recordset chắc chắn bạn làm được. Dán cái đã copy vào module UserForm chắc chắn bạn biết làm.
Chỉ có điều phải biết thả những control nào lên form và thiết lập những thuộc tính nào, thiết lập như thế nào thì tự bạn phải mầy mò vì bạn không có tập tin frx.
Có code cũng là đã may mắn lắm rồi.
 
Upvote 0
Sao lại chưa được?
Thêm 1 hay 10 UserForm đều được. Bạn mở tập tin frm bằng notepad, chắc chắn được. Copy từ dòng Dim RsDmcv As ADODB.Recordset chắc chắn bạn làm được. Dán cái đã copy vào module UserForm chắc chắn bạn biết làm.
Chỉ có điều phải biết thả những control nào lên form và thiết lập những thuộc tính nào, thiết lập như thế nào thì tự bạn phải mầy mò vì bạn không có tập tin frx.
Có code cũng là đã may mắn lắm rồi.
sao khi copy code, cho nó chạy thử. control nào thiếu sẽ được thông báo, rồi từ đó thêm. khó ở cái không biết cần chỉnh thuộc tính như thế nào.
 
Upvote 0
Upvote 0
sao khi copy code, cho nó chạy thử. control nào thiếu sẽ được thông báo, rồi từ đó thêm.
Tất nhiên phải làm thế. Nhưng để làm chuẩn thì nhiều khi bó tay. Vì có thể có Image (chẳng hạn Logo) và rất nhiều Label - vd. tiêu đề các cột của ListBox v...v Những control này không xuất hiện trong code nên thiếu cũng không biết.
Nếu form đơn giản thì mệt ít, form phức tạp thì rất mất thời gian.
 
Upvote 0
Tất nhiên phải làm thế. Nhưng để làm chuẩn thì nhiều khi bó tay. Vì có thể có Image (chẳng hạn Logo) và rất nhiều Label - vd. tiêu đề các cột của ListBox v...v Những control này không xuất hiện trong code nên thiếu cũng không biết.
Nếu form đơn giản thì mệt ít, form phức tạp thì rất mất thời gian.
Hi vọng không phức tạp. Mới ngang listbox mà thấy lỗi tùm lum luôn.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình không rành về VBA mong các Bác giúp mình làm đoạn code về ngày tháng bên dưới với ạ. Em có cột A là ngày tháng giao việc, cột B là thời hạn để hoàn thành việc được giao, cột C là ngày tháng hoàn thành việc được giao. Giờ e muốn tạo code ở cột D (nếu hoàn thành việc được giao đúng hoặc trước hạn thì đánh dấu X, trễ hạn thì để trống) và ở cột E (nếu hoàn thành trễ hạn thì tính ngày trễ hạn so với thời hạn giao việc, nếu đúng hạn thì để trống). Xin các Bác giúp em với ạ, e cảm ơn!
 

File đính kèm

  • dunghanvatrehan.xls
    27 KB · Đọc: 9
Upvote 0
Mình không rành về VBA mong các Bác giúp mình làm đoạn code về ngày tháng bên dưới với ạ. Em có cột A là ngày tháng giao việc, cột B là thời hạn để hoàn thành việc được giao, cột C là ngày tháng hoàn thành việc được giao. Giờ e muốn tạo code ở cột D (nếu hoàn thành việc được giao đúng hoặc trước hạn thì đánh dấu X, trễ hạn thì để trống) và ở cột E (nếu hoàn thành trễ hạn thì tính ngày trễ hạn so với thời hạn giao việc, nếu đúng hạn thì để trống). Xin các Bác giúp em với ạ, e cảm ơn!
File của bạn không có Code VBA thì làm sao "xử lý, gỡ rối" trong chuyên mục này? Chỉ có là "viết dùm".
Chuyện này dùng hàm Excel cũng được mà, trừ khi dữ liệu vài ngàn dòng.

PHP:
D3=IF((C3-A3)<=B3;"X";"")
E3=IF(D3="";C3-A3-B3;"")
'Copy xuống mõi tay thì thôi'
 
Upvote 0
File của bạn không có Code VBA thì làm sao "xử lý, gỡ rối" trong chuyên mục này? Chỉ có là "viết dùm".
Chuyện này dùng hàm Excel cũng được mà, trừ khi dữ liệu vài ngàn dòng.

PHP:
D3=IF((C3-A3)<=B3;"X";"")
E3=IF(D3="";C3-A3-B3;"")
'Copy xuống mõi tay thì thôi'
Cảm ơn bạn, dùng hàm thì mình làm được nhưng dung lượng quá nặng vì mình làm tới trên cả ngàn dòng. Mình thì không biết về code nên lên đây nhờ ae giúp hộ.
 
Upvote 0
1./ Đó là thầy Ba Tê nhắc bạn đừng xen ngang bài lần sau;
2./
PHP:
Sub ThoiHanThucHien()
 Dim Rws As Long, J As Long, Tre As Integer

 Rws = [B2].End(xlDown).Row
 If Rws < 3 Then Exit Sub
 For J = 3 To Rws
    With Cells(J, "A")
        Tre = .Offset(, 2).Value - (.Value + .Offset(, 1).Value)
        If Tre < 1 Then
            .Offset(, 3).Value = "GPE.COM"
        Else
            .Offset(, 4).Value = Tre
        End If
    End With
 Next J
End Sub
 
Upvote 0
1./ Đó là thầy Ba Tê nhắc bạn đừng xen ngang bài lần sau;
2./
PHP:
Sub ThoiHanThucHien()
 Dim Rws As Long, J As Long, Tre As Integer

 Rws = [B2].End(xlDown).Row
 If Rws < 3 Then Exit Sub
 For J = 3 To Rws
    With Cells(J, "A")
        Tre = .Offset(, 2).Value - (.Value + .Offset(, 1).Value)
        If Tre < 1 Then
            .Offset(, 3).Value = "GPE.COM"
        Else
            .Offset(, 4).Value = Tre
        End If
    End With
 Next J
End Sub
Cảm ơn bạn rất nhiều.
 
Upvote 0
Tôi tạo một combobox nhập liệu theo hướng dẫn của một bạn nhưng không hiểu sao, cứ mỗi lần nhập một giá trị bất kỳ vào một ô bất kỳ trong sheet1 thì combobox lại hiện ra list mà mình tìm kiếm trước đó, điều này rất phiền phức. Mình gửi file nhờ mọi người xem và góp ý giúp.
 

File đính kèm

  • Nhap Lieu.xlsm
    20.3 KB · Đọc: 9
Upvote 0
Nhờ anh chị xem giúp code sau thiếu gì mà bị lỗi "variable not defined" khi click vào nút "chen"
 

File đính kèm

  • MauDuToanXD (2).xls
    70.5 KB · Đọc: 1
  • DonGia1728.rar
    256.6 KB · Đọc: 1
Upvote 0
Nhờ anh chị xem giúp code sau thiếu gì mà bị lỗi "variable not defined" khi click vào nút "chen"
Lỗi variable not defined là chưa khai báo biến. Bạn chạy bằng F8 thì đến dòng nó báo thông báo đó bạn kiểm tra lại xem biến nào chưa khai báo.
Một cách nữa bạn chèn dòng Option Explicit trước toàn bộ code thì nó sẽ báo lỗi vị trí. Mình không thích tải file về vì sẽ tạo ra nhiều file rác nên, chỉ góp ý trên những gì mình biết thôi.
 
Upvote 0
Lỗi variable not defined là chưa khai báo biến. Bạn chạy bằng F8 thì đến dòng nó báo thông báo đó bạn kiểm tra lại xem biến nào chưa khai báo.
Một cách nữa bạn chèn dòng Option Explicit trước toàn bộ code thì nó sẽ báo lỗi vị trí. Mình không thích tải file về vì sẽ tạo ra nhiều file rác nên, chỉ góp ý trên những gì mình biết thôi.
Lỗi ở dòng màu đỏ đó bạn.
Private Sub CmdChen_Click()
'Dim i As Long
Application.ScreenUpdating = False
For i = 0 To LstDMCV.ListCount - 1
If LstDMCV.Selected(i) Then
ChenMaDonGia LstDMCV.List(i, 0), ActiveCell.Row
Cells(ActiveCell.Row + 1, ActiveCell.Column).Select
If ActiveCell.Row = BotRow - 2 Then
Rows(ActiveCell.Row).Select
Selection.Copy
Cells(ActiveCell.Row, 1).Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
End If
End If
Next
Application.ScreenUpdating = True

End Sub
 
Upvote 0
Lỗi ở dòng màu đỏ đó bạn.
Private Sub CmdChen_Click()
'Dim i As Long
Application.ScreenUpdating = False
For i = 0 To LstDMCV.ListCount - 1
If LstDMCV.Selected(i) Then
ChenMaDonGia LstDMCV.List(i, 0), ActiveCell.Row
Cells(ActiveCell.Row + 1, ActiveCell.Column).Select
If ActiveCell.Row = BotRow - 2 Then
Rows(ActiveCell.Row).Select
Selection.Copy
Cells(ActiveCell.Row, 1).Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
End If
End If
Next
Application.ScreenUpdating = True

End Sub
đổi tên cái listbox trong form thành lstdmcv
 
Upvote 0
Lỗi ở dòng màu đỏ đó bạn.
Private Sub CmdChen_Click()
'Dim i As Long
Application.ScreenUpdating = False
For i = 0 To LstDMCV.ListCount - 1
If LstDMCV.Selected(i) Then
ChenMaDonGia LstDMCV.List(i, 0), ActiveCell.Row
Cells(ActiveCell.Row + 1, ActiveCell.Column).Select
If ActiveCell.Row = BotRow - 2 Then
Rows(ActiveCell.Row).Select
Selection.Copy
Cells(ActiveCell.Row, 1).Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
End If
End If
Next
Application.ScreenUpdating = True

End Sub

Tại sao chỗ khai báo Dim i as Long lại để dấu comment ' vậy
 
Upvote 0
Nếu thêm biên dim As Long vào thì lỗi tiếp ở dòng ChenMaDonGia.......
Code trong file bạn làm thiếu thốn đủ thử, do là bản chế lại nên nó thế. cái dim i as long là phải có. Do sự thiếu thốn đó mà cứ sửa hết lỗi này thì lỗi mới lại xuất hiện. Cụ thể là cái ChenMaDonGia cũng không có trong code. Tìm trong file gốc xem có cái ChenMaDonGia không thì copy nó vào là được, nhưng chắc chắn là lại xuất hiện các lỗi mới. NÓi cung là còn dài dài.

TxtMDG,CheckCmdThem,LblTongSo ..... đều chưa định nghịa nghĩa. Vào menu debug , rồi click vào cái đầu tiên để xem thêm những cái chưa định nghĩa và định nghĩa cho nó.
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom