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:
Giải thích giùm đoạn macro

nhờ anh em giải thích rõ những dòng lệnh mác ro sau cảm ơn!
 

File đính kèm

  • New Text Document.txt
    1.3 KB · Đọc: 9
Upvote 0
Giải đáp hộ em ý nghĩa của cái code này với ạ!

Em đang gặp thắc mắc với cái code này ạ. Ai hiểu cái code này như thế nào thì giải thích cho em với ạ. Em xin cám ơn ạ.


Function mahoauni1(s As Variant)
Dim x, Sb, k, mu, skdau, sdau, Bdau, Bkdau As String
Dim i, m, n, dau, idau, ikdau As Integer

If IsNull(s) Then
Exit Function
ElseIf IsNumeric(s) Then
Sb = s
Else
s = Trim(s)
s = LCase(s) & ChrW(32)

skdau = ChrW(259) & ChrW(234) & ChrW(244) & ChrW(432) & ChrW(273) & ChrW(226) & ChrW(417)
Bkdau = "aeoudao"

sdau = ChrW(225) & ChrW(224) & ChrW(7843) & ChrW(227) & ChrW(7841) _
& ChrW(233) & ChrW(232) & ChrW(7867) & ChrW(7869) & ChrW(7865) _
& ChrW(237) & ChrW(236) & ChrW(7881) & ChrW(297) & ChrW(7883) _
& ChrW(243) & ChrW(242) & ChrW(7887) & ChrW(245) & ChrW(7885) _
& ChrW(250) & ChrW(249) & ChrW(7911) & ChrW(361) & ChrW(7909) _
& ChrW(253) & ChrW(7923) & ChrW(7927) & ChrW(7929) & ChrW(7925) _
& ChrW(7855) & ChrW(7857) & ChrW(7859) & ChrW(7861) & ChrW(7863) _
& ChrW(7889) & ChrW(7891) & ChrW(7893) & ChrW(7895) & ChrW(7897) _
& ChrW(7871) & ChrW(7873) & ChrW(7875) & ChrW(7877) & ChrW(7879) _
& ChrW(7913) & ChrW(7915) & ChrW(7917) & ChrW(7919) & ChrW(7921) _
& ChrW(7845) & ChrW(7847) & ChrW(7849) & ChrW(7851) & ChrW(7853) _
& ChrW(7899) & ChrW(7901) & ChrW(7903) & ChrW(7905) & ChrW(7907)
Bdau = "aaaaaeeeeeiiiiiooooouuuuuyyyyyaaaaaoooooeeeeeuuuuuaaaaaooooo"

For m = 1 To Len(s)
k = Mid(s, m, 1)
idau = InStr(1, sdau, k, 0)
ikdau = InStr(1, skdau, k, 0)
If idau > 0 Then
k = Mid(Bdau, idau, 1)
dau = idau Mod 5

If dau = 0 Then
dau = 5
End If


If idau > 0 And idau < 31 Then
mu = ""
ElseIf idau > 30 And idau < 51 Then
mu = "z"
Else
mu = "zw"
End If

k = k & mu

ElseIf ikdau > 0 Then
k = Mid(Bkdau, ikdau, 1)
If ikdau < 6 Then
k = k & "z"
Else
k = k & "zw"
End If
ElseIf k = ChrW(32) Then
k = dau & ChrW(32)
dau = ""
End If

x = x & k
Next
Sb = Sb & x
End If
mahoauni1 = Sb
End Function
 

File đính kèm

  • New Text Document.txt
    2.1 KB · Đọc: 4
Upvote 0
Ý nghĩa là chuyển chuỗi sang Unicode đó bạn--=0
 
Upvote 0
Dây là đoạn code mã hóa từ font unicode sang bảng ký tự "chết tiệt":

Thí dụ:
A1 = "Trả lời gì kỳ thế"
B1 =mahoauni1(A1)

Kết quả B1 = "tra3 lozwi2 gi2 ky2 thez1"
 
Upvote 0
Có ai biết chữ "đ' ở đây được mã hóa như thế nào không ạ
 
Upvote 0
Bdau = "aaaaaeeeeeiiiiiooooouuuuuyyyyyaaaaaoooooeeeeeuuuu uaaaaaooooo" em không hiểu chỗ này ạ.

Nếu bạn chưa từng biết hoặc mới tập tành về VBA thì có giải thích cho bạn cái Hàm này bạn cũng chẳng biết mô tê gì cả.

Với cái bạn ghi ở trên là một BIẾN và biến này thuộc STRING DATA TYPE, nói nôm na là biến dữ liệu dạng chuỗi, với chuỗi trong biến này sẽ được hàm MID xử lý chuỗi tương ứng theo chuỗi đầu vào, nhằm để thay thế chuỗi đầu ra.

Tôi chỉ nói tới đây thôi, vì có nói dài bạn cũng khó hiểu.
 
Upvote 0
Bạn thử sẽ biết. Thử như tôi thử bài trên ấy

Em biết là chữ "đ" thì sẽ mã hóa thành "dz" nhưng em không biết cái mã kiểu như ChrW(XXX) của nó là gì ạ. em chỉ cần biết cái XXX của chữ đ thôi ạ. Cảm ưn mọi người. Em mới tìm hiểu có gì mọi người thông cảm nhá
 
Upvote 0
Em biết là chữ "đ" thì sẽ mã hóa thành "dz" nhưng em không biết cái mã kiểu như ChrW(XXX) của nó là gì ạ. em chỉ cần biết cái XXX của chữ đ thôi ạ. Cảm ưn mọi người. Em mới tìm hiểu có gì mọi người thông cảm nhá
Bạn làm như sau:
- Gõ chử đ lên cell A1
- Alt + F11 để mở cửa số lập trình
- Ctrl + G để mở cửa sổ Immediate
- Trong cửa số Immediate, gõ dòng lệnh ?AscW(Range("A1").Value) rồi Enter
- Kết quả sẽ hiện ra ngay bên dưới
 
Upvote 0
Giải thích code

Dear Các sư phụ
Em làm vận tải vừa rồi mới đc tặng 1 đoạn code dùng để check số cont của các hãng tàu mà em không thể hiểu được đoạn code viết gì. mong các sư phụ giải quyết giúp em ah.

Public Function ckcont(strsocont As String) As String
Dim aryvitri(10) As Integer
Dim sokt As Integer
Dim tongso As Integer, noisocont As String
Dim i As Integer
If Len(Trim(strsocont)) = 0 Then
ckcont = "Pls input data"
ElseIf Len(Trim(strsocont)) <> 11 Then
ckcont = " eRrO ? "
Else
aryvitri(10) = Asc(Mid$(Trim(UCase$(strsocont)), 11, 1)) - 48
For i = 0 To 9
aryvitri(i) = Asc(Mid$(UCase$(strsocont), i + 1, 1)) - 55


If aryvitri(i) >= -7 And aryvitri(i) <= 2 Then
aryvitri(i) = aryvitri(i) + 7
ElseIf aryvitri(i) = 10 Then
aryvitri(i) = 10
ElseIf aryvitri(i) >= 11 And aryvitri(i) <= 20 Then
aryvitri(i) = aryvitri(i) + 1
ElseIf aryvitri(i) >= 21 And aryvitri(i) <= 30 Then
aryvitri(i) = aryvitri(i) + 2
ElseIf aryvitri(i) >= 31 And aryvitri(i) <= 38 Then
aryvitri(i) = aryvitri(i) + 3
End If
tongso = tongso + 2 ^ i * aryvitri(i)
Next i
sokt = tongso - Int(tongso / 11) * 11
If sokt = 10 Then
sokt = 0
End If
If sokt <> aryvitri(10) Then
ckcont = "oRRoR"
Else
ckcont = " oK "
End If
End If
End Function
 
Upvote 0
nhờ diễn đàn giải thich dùm code

Mình có 1 đoạn code do mình không chuyên nên không hiểu đc mong mọi nguòi giúp đỡ
Code:
Mong các bạn giúp đỡ
 
Lần chỉnh sửa cuối:
Upvote 0
Mình có 1 đoạn code do mình không chuyên nên không hiểu đc mong mọi nguòi giúp đỡ
Code:
Private Sub auto_open()
Dim makt1 As String, s1 As String, v As String
Set fs = CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")
For Each objItem In colItems
pro = pro & objItem.ProcessorId
Next
m_pro = Len(pro)
Do Until m_pro = 0
textghi = Mid(pro, m_pro, 1)
textghi = Asc(textghi)
textghi = Val(textghi) * 3
check = check & textghi
m_pro = m_pro - 1
Loop
If Len(Dir("d:\dt_xlct\KTS.txt", vbHidden)) > 1 Then
Open "d:\dt_xlct\KTS.txt" For Input As #1
Do While Not EOF(1)
makt1 = makt1 & Input(1, #1)
Loop
Close
If makt1 = check Then
source = ThisWorkbook.Path
ChDrive Left(source, 2)
ChDir source
Let Application.Caption = ""
If Len(Dir("xlct.xla", vbHidden)) > 1 Then
Workbooks.Open Filename:="xlct.xla"
Else
MsgBoxUni UNC("TÖp M· nguån cña b¹n ®· bÞ h­ hoÆc mÊt "), , UNC("X©y l¾p CT ")
Application.DisplayAlerts = False
Application.Quit
End If
Else
Application.DisplayAlerts = False
Application.Quit
End If
Else
Application.DisplayAlerts = False
MsgBoxUni UNC("B¹n ®õng cè g¾ng n÷a! B¹n bÊm sè 113 ®Ó ®­îc sù hç trî cña T¸c gi¶."), , UNC("X©y l¾p CT ")
Application.Quit
End If
Main.Show
End Sub
Private Sub auto_close()
Application.DisplayAlerts = False
ThisWorkbook.Close savechanges:=False
End Sub

Các bạn giúp mình tạo file KTS.txt có nội dung mà code trên đưa ra
file tạo tệp tham khảo:

Attribute VBA_ModuleType=VBAModule
an
Dim fs, objWMIService, colItems, objItem, s3 As String, s4 As String, tep1
Set fs = CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")
SetAttr "d:\DQT_XLCT\vn12.txt", vbArchive
For Each objItem In colItems
s3 = objItem.ProcessorId
Rem Set tep1 = fs.CreateTextFile("d:\DQT_XLCT\vn12.txt", True)
tep1.Write (s4)
tep1.Close
Next
SetAttr "d:\DQT_XLCT\vn12.txt", vbHidden + vbReadOnly
Application.Quit
End Sub

Mong các bạn giúp đỡ
Bạn muốn tính dự toán hay dự thầu, bạn hãy liên hệ với mình, mình sẽ tặng bạn một chương trình để tính, thà vậy còn hơn là giúp bạn bẻ khóa của người khác tại nơi công cộng.
 
Upvote 0
Giúp em rút gọn code này lại với

[GPECODE=vb] Function Bulg(chucvu As String, ngaycong As Double, tongluong As Double)
d_luongBQ = tongluong / ngaycong
'=============================================
If (chucvu <> "" And d_luongBQ > 0) Then
If (Left(chucvu, 3) = "BÑH" And d_luongBQ < (Range("BÑH"))) Then
Bulg = (Range("BÑH") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 3) = "KCS" And d_luongBQ < (Range("KCS"))) Then
Bulg = (Range("KCS") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "MH") And Right(chucvu, 2) = "QC" And d_luongBQ < (Range("KCS")) Then
Bulg = (Range("MH_QC") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "MH") And Right(chucvu, 2) <> "QC" Then
Bulg = (Range("MH_TK") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "TK") And Right(chucvu, 2) = "TT" Then
Bulg = (Range("TKE_TT") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "TK") And Right(chucvu, 2) = "TP" Then
Bulg = (Range("TKE_Tp") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "TK") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
Bulg = (Range("TKE_TV") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "CN") And Right(chucvu, 2) = "TT" Then
Bulg = (Range("CN_TT") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "CN") And Right(chucvu, 2) = "TP" Then
Bulg = (Range("CN_TP") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "CN") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
Bulg = (Range("CN_TV") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "PC") And Right(chucvu, 2) = "TT" Then
Bulg = (Range("PC_TT") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "PC") And Right(chucvu, 2) = "TP" Then
Bulg = (Range("PC_TP") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "PC") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
Bulg = (Range("PC_TV") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "XH") And Right(chucvu, 2) = "TT" Then
Bulg = (Range("XH_TT") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "XH") And Right(chucvu, 2) = "TP" Then
Bulg = (Range("XH_TP") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "XH") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
Bulg = (Range("XH_TV") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "CÑ") And Right(chucvu, 2) = "TT" Then
Bulg = (Range("CÑ_TT") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "CÑ") And Right(chucvu, 2) = "TP" Then
Bulg = (Range("CÑ_TP") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "CÑ") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
Bulg = (Range("CÑ_TV") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "PV") And Right(chucvu, 2) = "TT" Then
Bulg = (Range("PV_TT") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "PV") And Right(chucvu, 2) = "TP" Then
Bulg = (Range("PV_TP") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "PV") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
Bulg = (Range("PV_TV") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "BX") And Right(chucvu, 2) = "TT" Then
Bulg = (Range("BX_TT") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "BX") And Right(chucvu, 2) = "TP" Then
Bulg = (Range("BX_TP") - d_luongBQ) * ngaycong
ElseIf (Left(chucvu, 2) = "BX") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
Bulg = (Range("BX_TV") - d_luongBQ) * ngaycong
End If
End If
End Function [/GPECODE]


Em tự viết mà nó dai dòng quá, nhờ các anh / chị giúp em rút gọn lại.
Trân trong cảm ơn!



Nếu tiền lương BQ / ngày > tiền lương qui định thì = 0
Ngược lại thì tiền lương theo qui định - tiền lương bình quân ngày * ngày công
 
Lần chỉnh sửa cuối:
Upvote 0
Function Bulg(chucvu As String, ngaycong As Double, tongluong As Double)
d_luongBQ = tongluong / ngaycong
Em tự viết mà nó dai dòng quá, nhờ các anh / chị giúp em rút gọn lại.
Trân trong cảm ơn!
Nếu tiền lương BQ / ngày > tiền lương qui định thì = 0
Ngược lại thì tiền lương theo qui định - tiền lương bình quân ngày * ngày công
Trước khi giúp bạn --> bạn có thể giúp mình thể hiện đoạn code trên theo hình " răng cưa " cho dễ nhìn không ?
 
Upvote 0
Trước khi giúp bạn --> bạn có thể giúp mình thể hiện đoạn code trên theo hình " răng cưa " cho dễ nhìn không ?

Bạn này khó tính quá ta! Quan trọng là thủ tục chạy chứ cách trình bày đâu nè! Đây tôi đã làm dùm bạn đó rồi, và lưu ý, có sử dụng Font VNI đó nhé!

Mã:
Function Bulg(chucvu As String, ngaycong As Double, tongluong As Double)
    d_luongBQ = tongluong / ngaycong
    '=============================================
    If (chucvu <> "" And d_luongBQ > 0) Then
        If (Left(chucvu, 3) = "BÑH" And d_luongBQ < (Range("BÑH"))) Then
            Bulg = (Range("BÑH") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 3) = "KCS" And d_luongBQ < (Range("KCS"))) Then
            Bulg = (Range("KCS") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "MH") And Right(chucvu, 2) = "QC" And d_luongBQ < (Range("KCS")) Then
            Bulg = (Range("MH_QC") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "MH") And Right(chucvu, 2) <> "QC" Then
            Bulg = (Range("MH_TK") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "TK") And Right(chucvu, 2) = "TT" Then
            Bulg = (Range("TKE_TT") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "TK") And Right(chucvu, 2) = "TP" Then
            Bulg = (Range("TKE_Tp") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "TK") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
            Bulg = (Range("TKE_TV") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "CN") And Right(chucvu, 2) = "TT" Then
            Bulg = (Range("CN_TT") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "CN") And Right(chucvu, 2) = "TP" Then
            Bulg = (Range("CN_TP") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "CN") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
            Bulg = (Range("CN_TV") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "PC") And Right(chucvu, 2) = "TT" Then
            Bulg = (Range("PC_TT") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "PC") And Right(chucvu, 2) = "TP" Then
            Bulg = (Range("PC_TP") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "PC") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
            Bulg = (Range("PC_TV") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "XH") And Right(chucvu, 2) = "TT" Then
            Bulg = (Range("XH_TT") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "XH") And Right(chucvu, 2) = "TP" Then
            Bulg = (Range("XH_TP") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "XH") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
            Bulg = (Range("XH_TV") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "CÑ") And Right(chucvu, 2) = "TT" Then
            Bulg = (Range("CÑ_TT") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "CÑ") And Right(chucvu, 2) = "TP" Then
            Bulg = (Range("CÑ_TP") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "CÑ") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
            Bulg = (Range("CÑ_TV") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "PV") And Right(chucvu, 2) = "TT" Then
            Bulg = (Range("PV_TT") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "PV") And Right(chucvu, 2) = "TP" Then
            Bulg = (Range("PV_TP") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "PV") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
            Bulg = (Range("PV_TV") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "BX") And Right(chucvu, 2) = "TT" Then
            Bulg = (Range("BX_TT") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "BX") And Right(chucvu, 2) = "TP" Then
            Bulg = (Range("BX_TP") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "BX") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
            Bulg = (Range("BX_TV") - d_luongBQ) * ngaycong
        End If
    End If
End Function
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom