Những câu hỏi về code, xin giải thích các code, đề nghị các bạn gửi vào đây

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

ST-Lu!

Love Wingchun
Tham gia
19/8/08
Bài viết
730
Được thích
546
Nghề nghiệp
Xích lô một thời
Kể từ hôm nay, tất cả những câu hỏi nhờ giải thích dùm một đoạn code, hay là hỏi những vấn đề linh tinh gì liên quan đến cách viết code, đề nghị các bạn gửi chung vào đây.

Những đề tài mới với tiêu đề: "Nhờ giải thích dùm đoạn code", mà không nói rõ là code gì, code dùng để làm gì, sẽ bị xóa.

BQT

----------------------------------------------------------------------------------------------------------------


Em xin được hỏi 2 đoạn code sau có tương đương nhau ?

Cells(Cells.Rows.Count, 1).End(xlUp).Row có tương đương với [A65000].End(xlup).row

Cám ơn các anh chỉ giáo
 
Chỉnh sửa lần cuối bởi điều hành viên:
em có mấy nút lệnh như sau,,, [học lóm được]
1. Xóa
Mã:
Private Sub cmdxoa_Click()
If DCount("mahang", "danhmuchanghoa", "mahang='" & mahang & "'") > 0 Then
MsgBox " Ma nay da co phat sinh, khong duoc xoa"
ElseIf MsgBox(" Ban that su muon xoa ma nay", vbYesNo + vbQuestion, "Thong Bao") = vbYes Then
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord
LDM.Requery
DoCmd.GoToRecord , , acLast
End If
End Sub
2.thêm
Mã:
Private Sub cmdthem_Click()
DoCmd.GoToRecord , , acNewRec
mahang.SetFocus
sangmo False
End Sub
3. lưu
Mã:
Private Sub cmdghi_Click()
If IsNull(mahang) = True Then
MsgBox "Vui long nhap ma"
mahang.SetFocus
ElseIf DCount("mahang", "hanghoa", "mahang='" & mahang & "'") = 1 Then
MsgBox " Ma nay da co, Vui long tao ma khac"
mahang.SetFocus
Else
DoCmd.RunCommand acCmdSaveRecord
LDM.Requery
sangmo True
End If
End Sub
4.quay lại
Mã:
Private Sub cmdundo_Click()
If Me.Dirty Then DoCmd.RunCommand acCmdUndo
DoCmd.GoToRecord , , acLast
sangmo True
End Sub
5. đóng .
Mã:
Private Sub cmdthoat_Click()
If MsgBox("Ban that su muon dong cua so dang lam viec", vbYesNo + vbCritical, "Thong Bao") = vbYes Then
DoCmd.Close , , acSaveYes
End If
End Sub

Nhờ mọi người giúp em code của nút 6. sửa

Với lại chỉ em cách,, khi mở form lên người ta chỉ được,, xem thôi,, khi nào bấm vào nút sửa thì mới được sửa
thank mọi người
 
Upvote 0
anh ndu cho em hỏi câu hỏi hồi nãy với; trong 1 ô cell mà có các ký tự như vậy có khi nào nó được mã hoá, có thể đây là một hộp box không anh. cái này lần đầu tiên em gặp, mong anh chỉ giúp. |441,405||0,0|1,0|2,0|3,0|4,0|436,0|437,0|438,0|439,0|440,0|0,1|1,1|2,1|3,1|437,1|438,1|439,1|440,1|0,2|1,2|2,2|438,2|439,2|440,2|0,3|1,3|439,3|440,3|0,4|440,4|0,398|1,398|0,399|1,399|2,399|0,400|1,400|2,400|440,400|0,401|1,401|2,401|3,401|439,401|440,401|0,402|1,402|2,402|3,402|4,402|
|5,402|438,402|439,402|440,402|0,403|1,403|2,403|3,403|4,403|5,403|6,403|437,403|438,403|439,403|440,403|0,404|1,404|2,404|3,404|4,404|5,404|6,404|436,404|437,404|438,404|439,404|440,404|
 
Lần chỉnh sửa cuối:
Upvote 0
hì, lại gặp bác rồi.
hôm trc tết em có đăng bài nhở mọi người giúp 1 lần rồi nhưng mà vẫn chưa đc bác ạ..
đây là file chứa lỗi hôm trc em đăng lên ở #1328 ấy ạ.
mong bác chỉ giúp. em cứ bấm chạy thì nó báo lỗi. k chạy đc.
 
Upvote 0
hì, lại gặp bác rồi.
hôm trc tết em có đăng bài nhở mọi người giúp 1 lần rồi nhưng mà vẫn chưa đc bác ạ..
đây là file chứa lỗi hôm trc em đăng lên ở #1328 ấy ạ.
mong bác chỉ giúp. em cứ bấm chạy thì nó báo lỗi. k chạy đc.
Cụ thể là BẤM CÁI GÌ CHẠY? Lỗi là lỗi thế nào
File bạn có cả đống code, vậy bạn đang nói đến code nào?
 
Upvote 0
Cụ thể là BẤM CÁI GÌ CHẠY? Lỗi là lỗi thế nào
File bạn có cả đống code, vậy bạn đang nói đến code nào?
bác bấm vào cái hình mũi tên màu hồng có chữ" TÌM GIÁ TRỊ SD" ở sheet "ĐANG LÀM" ấy ạ. thì nó hiện ra lỗi ở trên đoạn code "tinhlunnhieulop" là end if without if.
 
Upvote 0
bác bấm vào cái hình mũi tên màu hồng có chữ" TÌM GIÁ TRỊ SD" ở sheet "ĐANG LÀM" ấy ạ. thì nó hiện ra lỗi ở trên đoạn code "tinhlunnhieulop" là end if without if.

Code này tôi chẳng test được gì. Vì bấm vào nó chạy nãy giờ vẫn chưa ra ---> Treo máy luôn
Để các bạn khác test thử vậy
 
Upvote 0
Upvote 0
Em mới học lập trình VBA, còn rất nhiều chỗ không biết mong mọi người chỉ bảo

Dưới đây có 1 đoạn code, em không hiểu lắm, mong mọi người viết chú thích dùm em.
Ở đoạn khai báo: "Dim tmparr, arr(), Tmp, Item, sArr()" thì tmparr, item, sArr là gì, em chả hiểu.

Sub List()
Dim tmparr, arr(), Tmp, Item, sArr()
Dim i As Long, j As Long, iR As Long, n As Byte, st1, st2
[H1:Z1000].ClearContents
tmparr = Range("A1", [A655356].End(3)).Value
ReDim arr(1 To 3, 1 To 2)
arr(1, 1) = Tmp: arr(1, 2) = "VT"
Tmp = CStr(Trim([F3]))
For Each Item In tmparr
iR = iR + 1
If CStr(Trim(Item)) = Tmp Then
n = n + 1
arr(2, 2) = [B:B].Cells(iR + 1).Value
arr(3, 1) = "X": arr(3, 2) = "Z"
For j = iR To UBound(tmparr, 1)
If Trim(tmparr(j, 1)) = "PROFILE" Then st1 = j
If Trim(tmparr(j, 1)) = "LEVEL PARAMS" Then st2 = j: Exit For
Next
sArr = Range("A" & st1 & "", "B" & st2 & "").Value
Range("H1").Resize(3, 2).Offset(, 3 * n - 3) = arr
Range("H4").Resize(UBound(sArr, 1), 2).Offset(, 3 * n - 3) = sArr
End If
Next
End Sub
 
Upvote 0
Nhờ sửa giùm em code này

Em muốn sau khi in sẽ lưu lại được các thông tin tại sheet "SAVE" nhờ mọi người sửa giúp
(bài này em sưu tập lại của bác "dhn46" trên diễn đàn)
Em cám ơn
 

File đính kèm

  • Form in.rar
    307.7 KB · Đọc: 5
Upvote 0
Em muốn sau khi in sẽ lưu lại được các thông tin tại sheet "SAVE" nhờ mọi người sửa giúp
(bài này em sưu tập lại của bác "dhn46" trên diễn đàn)
Em cám ơn

Nhìn code của bạn tôi thấy khó "mò" quá, tôi thay cho bạn những thủ tục mới luôn đây!

Dưới đây là thủ tục In Tùy Chọn:

[GPECODE=vb]Sub InTuyChon2()
Dim RangeSelect As Range
On Error GoTo ExitSub
Set RangeSelect = Application.InputBox( _
"Quet chon vung can in " & String(2, vbLf) & _
"Cot B Sheet 'Data'", _
"Chon Code nhan vien de in", Type:=8)

Dim EndRow As Long, h As Long, n As Long, StartRow As Long
Dim RangeItem As Range, sArray As Variant, SelArr() As Variant

StartRow = 5
EndRow = Sheets("Data").Range("A65536").End(xlUp).Row + 1

For Each RangeItem In RangeSelect
h = RangeItem.Row
If h > StartRow And h < EndRow Then
n = n + 1
ReDim Preserve SelArr(1 To n)
SelArr(n) = h - StartRow
End If
Next

If n Then
Call SpeedOn
Call ResizeForm1
Dim RowFormat As Long, i As Long, j As Long
RowFormat = (n \ 3) + 1

For i = 1 To RowFormat
j = i * 8 - 7
Call ReSizeForm2(j)
Next

sArray = Sheets("Data").Range("A6:D" & EndRow - 1).Value

Sheets("KQ").Select

Dim CrtArr As Variant, iMod As Byte, iLoop As Long, r As Long, c As Byte
iLoop = 2
ReDim CrtArr(1 To n, 1 To 4)
For r = 1 To n
For c = 1 To 4
CrtArr(r, c) = sArray(SelArr(r), c)
Next
Range("IDCard")(3, 2) = CrtArr(r, 3)
Range("IDCard")(4, 2) = CrtArr(r, 2)
Range("IDCard")(7, 2) = CrtArr(r, 4)
Range("IDCard").Copy
iMod = r Mod 3

With Sheets("KQ")
Select Case iMod
Case 0
.Cells(iLoop, 12).Select
iLoop = iLoop + 8
Case 1
.Cells(iLoop, 2).Select
Case 2
.Cells(iLoop, 7).Select
End Select
.Paste
End With
Next
Sheets("Save").Range("A65536").End(xlUp).Offset(1).Resize(n, 4) = CrtArr
End If
ExitSub:
Call SpeedOff
End Sub
[/GPECODE]


Có 1 số thủ tục như: Call ResizeForm1 & Call ReSizeForm2 là nhằm định dạng lại hàng, cột ở sheet Form và sheet KQ.

Tương tự như In STT (xem trong file).
 

File đính kèm

  • Form in.rar
    113.6 KB · Đọc: 4
Lần chỉnh sửa cuối:
Upvote 0
Bạn làm rất đúng ý mình nhưng mình không tìm thấy sheet form đâu nữa để thiết kế lại mẫu in bạn ạ. Phiền bạn trả lời giúp mình với
 
Upvote 0
Bạn làm rất đúng ý mình nhưng mình không tìm thấy sheet form đâu nữa để thiết kế lại mẫu in bạn ạ. Phiền bạn trả lời giúp mình với

Bạn bấm Alt+F11 để có cửa sổ VBE, bạn chọn vào tên sheet Form sau đó chọn trong thuộc tính của nó là Visible, chọn -1 (nếu giấu lại thì chọn 2), mục đích là tránh người khác hoặc mình vô tình thay đổi cấu trúc của form đó. Lưu ý, tôi đặt cái thẻ trên form đó là "IDCard" bạn nhé, nếu thay đổi gì thì nhớ chỉnh sửa trong code luôn nhé!

Lưu ý ở các thủ tục này:

Mã:
            Range("IDCard")(3, 2) = CrtArr(r, 3)
            Range("IDCard")(4, 2) = CrtArr(r, 2)
            Range("IDCard")(7, 2) = CrtArr(r, 4)
            Range("IDCard").Copy
            iMod = r Mod 3
 
Upvote 0
À, sửa lại thủ tục ResizeForm1 này nhé, thay vì:

PHP:
        With Sheets("KQ")
            .Columns("A:E").PasteSpecial Paste:=xlPasteFormats
            .Columns("F:J").PasteSpecial Paste:=xlPasteFormats
            .Columns("K:O").PasteSpecial Paste:=xlPasteFormats
            .Columns("P:P").PasteSpecial Paste:=xlPasteFormats
            .Cells.Clear
            .DrawingObjects.Delete
        End With

Thì sửa lại như thế này thôi:

PHP:
        With Sheets("KQ")
            .Columns("A:P").PasteSpecial Paste:=xlPasteFormats
            .Cells.Clear
            .DrawingObjects.Delete
        End With

Toàn bộ thủ tục sẽ như vầy:

Mã:
Sub [B]ResizeForm1[/B]()
    With Sheets("Form")
        .Range("G1").ColumnWidth = 0.5
        .Range("H1").ColumnWidth = 6.29
        .Range("I1").ColumnWidth = 11.71
        .Range("J1").ColumnWidth = 12.57
        .Range("K1").ColumnWidth = 11.71
        
        .Range("A11").RowHeight = 5
        .Range("A12").RowHeight = 18
        .Range("A13").RowHeight = 25.5
        .Range("A14").RowHeight = 18
        .Range("A15").RowHeight = 21.75
        .Range("A16").RowHeight = 18
        .Range("A17").RowHeight = 12
        .Range("A18").RowHeight = 19.5
        
        .Columns("G:K").Clear
        .Columns("G:K").Copy
[COLOR=#0000ff]        With Sheets("KQ")
            .Columns("A:P").PasteSpecial Paste:=xlPasteFormats
            .Cells.Clear
            .DrawingObjects.Delete
        End With
[/COLOR]    End With
End Sub
 
Upvote 0
Mình tìm không ra được bạn ạ, (tại mình không được học về VBA) Mong bạn thông cảm giúp mình
Mình còn 1 bài nữa muốn bạn giúp giùm bạn có thể cho mình xin yahoo để hỏi bạn chút được không?
Cám ơn bạn trước
 
Upvote 0
Mình tìm không ra được bạn ạ, (tại mình không được học về VBA) Mong bạn thông cảm giúp mình
Mình còn 1 bài nữa muốn bạn giúp giùm bạn có thể cho mình xin yahoo để hỏi bạn chút được không?
Cám ơn bạn trước

Ui trời ơi, bạn không biết gì về VBA mà "vọc" nhằm file này thì làm gì được hả bạn?

Tôi gửi lại file cho bạn nè! Và nếu muốn hỏi nữa thì gửi câu hỏi lên đây, đừng "meo mẹc" gì hết!

=> Tôi nghĩ ngoài vấn đề này thì chỉ có nước hỏi tiếp là "Bạn ơi, hướng dẫn cho tôi Add hình cho mỗi nhân viên". Hic hic.
 

File đính kèm

  • Form_in_2.rar
    115.9 KB · Đọc: 20
Upvote 0
Vậy mình nói luôn bạn giúp mình. Mình tính tạo file rồi gửi lên nhưng sợ sẽ bị muộn
Mình có 3 file excel tương ứng với 3 tổ trong mỗi file chứa danh sách 2 nhóm công nhân
Và một file tổng hợp tất cả các danh sách công nhân
Giờ mình muốn tạo list box khi gõ vào. VD nhóm 1 trong file tổng hợp thì sẽ được lọc ra các danh sách có trong nhóm 1 và những nhân viên nào không thuộc trong nhóm 1 sẽ ẩn đi
Mình có gửi mẫu 1 file, các file còn lại tương tự cho tổ 2 và tổ 3 sẽ có các nhóm 3,4 và 5,6 trong 2 file sau
Cám ơn bạn nhiều
 

File đính kèm

  • NHOM 1-2.xlsx
    10 KB · Đọc: 3
Upvote 0
Vậy mình nói luôn bạn giúp mình. Mình tính tạo file rồi gửi lên nhưng sợ sẽ bị muộn
Mình có 3 file excel tương ứng với 3 tổ trong mỗi file chứa danh sách 2 nhóm công nhân
Và một file tổng hợp tất cả các danh sách công nhân
Giờ mình muốn tạo list box khi gõ vào. VD nhóm 1 trong file tổng hợp thì sẽ được lọc ra các danh sách có trong nhóm 1 và những nhân viên nào không thuộc trong nhóm 1 sẽ ẩn đi
Mình có gửi mẫu 1 file, các file còn lại tương tự cho tổ 2 và tổ 3 sẽ có các nhóm 3,4 và 5,6 trong 2 file sau
Cám ơn bạn nhiều

Trong 1 file theo tôi thì TỐI KỴ dùng nhiều Mã Font nha bạn. Nên xài 1 thứ thôi!

Có nhiều cách để làm, tuy nhiên, cách làm của tôi như sau:

Cứ mỗi ô có Merge Cells tại cột A bạn đặt Name cho chúng lần lượt là 'Nhom1' và 'Nhom2', sau đó thực hiện thủ tục sau:

PHP:
Private Sub UserForm_Initialize()
    ComboBox1.List = Array("NHÓM 1", "NHÓM 2")
End Sub

Private Sub ComboBox1_Change()
    If ComboBox1.MatchFound Then
        Dim Idx As Long
        Idx = ComboBox1.ListIndex + 1
        Dim sRow As Long, eRow As Long
        With Range("Nhom" & Idx)
            sRow = .Offset(, 1).Row
            eRow = .Offset(1).Row - 1
        End With
        ListBox1.List = Sheets("Sheet1").Range("B" & sRow & ":B" & eRow).Resize(, 3).Value
    Else
        ListBox1.Clear
    End If
End Sub

Như vậy thì bạn cứ việc chọn trong combobox chúng sẽ được hiển thị theo nhóm trong listbox.
 

File đính kèm

  • ToNhom.xls
    38.5 KB · Đọc: 8
Upvote 0
Mình muốn nó có dạng như sau bạn có thể giúp mình
Và hơn nữa ý mình muốn là nó có thể lọc từ 3 file khác nhau
VD Bấm "Tổ 1" trên file danh sách tổng hợp thì sẽ được lọc ra các nhân viên có trong tổ 1 thôi
 

File đính kèm

  • ToNhom.xls
    43.5 KB · Đọc: 2
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