Chuyên mục xử lý, gỡ rối code VBA (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

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,954
Còn tùy form đó chứa gì mà file frx có thể cần hay không.
Trường hợp của bạn là thiếu file .frx đó.
 
Upvote 0
Tập tin frx là dữ liệu cấu thành (binary) của form. Bạn nhìn tập tin frm có biết Form có những control nào, kích thước, vị trí, các thuộc tính như vd. phông chữ không? Có biết là trên form có ListBox, và nó có mấy cột không? Nếu không có frx thì VBA tạo form và các control thế nào được?
 
Upvote 0
Đúng rồi, mình mới thử các form khác nếu ko có frx thì ko import được. Vậy là bó tay luôn phải ko bạn?
 
Upvote 0
Tập tin frx là dữ liệu cấu thành (binary) của form. Bạn nhìn tập tin frm có biết Form có những control nào, kích thước, vị trí, các thuộc tính như vd. phông chữ không? Có biết là trên form có ListBox, và nó có mấy cột không? Nếu không có frx thì VBA tạo form và các control thế nào được?
Đúng rồi, mình mới thử các form khác nếu ko có frx thì ko import được. Vậy là bó tay luôn phải ko bạn?
 
Upvote 0
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.
 
Lần chỉnh sửa cuối:
Upvote 0
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

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

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

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
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom