xin giải thích giùm đoạn code

Liên hệ QC

phuoclocvl

Thành viên thường trực
Tham gia
28/3/12
Bài viết
220
Được thích
32
các pro giải thích giùm mình đoạn code này nha

k, dj là biến
If Worksheets("Macro").Range("B" & k).Value = "C" Then
Worksheets("Macro").Range("F" & d).Value = Worksheets("Macro").Range("E" & k).Value & Worksheets("Macro").Cells(j, Worksheets("Macro").Range("C" & k).Value + 9) & """"


cám ơn!
 
các pro giải thích giùm mình đoạn code này nha

k, dj là biến
If Worksheets("Macro").Range("B" & k).Value = "C" Then
Worksheets("Macro").Range("F" & d).Value = Worksheets("Macro").Range("E" & k).Value & Worksheets("Macro").Cells(j, Worksheets("Macro").Range("C" & k).Value + 9) & """"


cám ơn!
Bạn trích CODE nửa chừng thế này không ai giải thích nổi được đâu vì đâu biết k,d,j chạy từ đâu đến đâu mà giải thích. Bạn nên đưa cả đoạn code nên thì mới biết nó từ chỗ nào chui ra chứ. Nếu có file đính kèm thì càng chi tiết tốt, mọi người giải thích theo file bạn sẽ nắm bắt vấn đề nhanh hơn.
 
Upvote 0

k, d
j là biến
'Giả định k:=5; d:= 7 và j:= 9
Ta khai báo thêm 1 biến đối tượng như sau
Dim Sh As WorkSheet
Set Sh = Worksheets("Macro")

Khi đó câu lệnh sẽ là như sau:
PHP:
If Sh.Range("B" & 5).Value = "C" Then
     Sh.Range("F" & 7).Value = Sh.Range("E" & 5).Value & Sh.Cells(9, Sh.Range("C" & 5).Value + 9) & """"
 
Upvote 0
Cả đoạn code như thế này nè các bác, xin giải thích giùm
Sub GetMapicsCodes()
Dim i, j, n, m, d As Integer, str As String, newtxt As Object, fso As Object

Application.ScreenUpdating = False
Worksheets("Macro").Range("F5:F20000").Clear
'n = Worksheets("MO").Range("a20000").End(xlUp).Row



'Part I
For i = 5 To Worksheets("Macro").Range("A20000").End(xlUp).Row
'danh dau p1
If Worksheets("Macro").Range("D" & i).Value = "P2" Then
Worksheets("Macro").Range("F5" & ":" & "F" & i - 1).Value = Worksheets("Macro").Range("E5" & ":" & "E" & i - 1).Value ' copy toan bo part I sang
Exit For
End If
Next i

'Part II, part have the change in code by change the value
d = i
n = Worksheets("Macro").Range("A20000").End(xlUp).Row - 1
m = Worksheets("Macro").Range("J20000").End(xlUp).Row

For j = 5 To m ' go from Cell I5 to end of range of data
If Worksheets("Macro").Range("I" & j).Value <> "" Then
For k = i To n ' go through Part 2
' F
If Worksheets("Macro").Range("B" & k).Value = "F" Then
Worksheets("Macro").Range("F" & d).Value = Worksheets("Macro").Range("E" & k).Value
d = d + 1
End If

' C
If Worksheets("Macro").Range("B" & k).Value = "C" Then
Worksheets("Macro").Range("F" & d).Value = Worksheets("Macro").Range("E" & k).Value & Worksheets("Macro").Cells(j, Worksheets("Macro").Range("C" & k).Value + 9) & """"
d = d + 1
End If
Next k
End If

Next j
'end code

Worksheets("Macro").Range("F" & d).Value = "end sub"


' write to file .mac
gio = Time
Set fso = CreateObject("Scripting.FileSystemObject")
Set newtxt = fso.createtextfile(Range("duongdan").Value & "\" & Range("tenfile").Value & ".mac")

For j = 5 To Worksheets("Macro").Range("F20000").End(xlUp).Row
newtxt.writeline (Worksheets("Macro").Range("F" & j))
Next j
str = MsgBox("MACRO Created in" & Chr(13) & Chr(13) & Range("duongdan").Value & "\" & Range("tenfile").Value & ".mac", vbOKOnly)

'ActiveSheet.Protect

Application.ScreenUpdating = True

End Sub
 
Upvote 0
Trước hết xin fép được dịch từ ngôn ngữ macro sang ngôn ngữ macro cái đã:

/(/ó nè:

PHP:
Option Explicit
Sub GetMapicsCodes()
 Dim I As Integer, J As Integer, N As Integer, M As Integer, D As Integer
 Dim K As Integer, Gio As Double, Sh As Worksheet
 Dim Str As String, newTxt As Object, fSo As Object

1 Application.ScreenUpdating = False
 Set Sh = Worksheets("Macro")
3 Sh.Range("F5:F20000").Clear
'n = Worksheets("MO").Range("a20000").End(xlUp).Row'
'Part I'
 For I = 5 To Sh.Range("A20000").End(xlUp).Row
    'Dánh Dáu F1:'
5    If Sh.Range("D" & I).Value = "P2" Then
        ' Copy Toàn Bo Part I Sang:'
        Sh.Range("F5" & ":" & "F" & I - 1).Value = Sh.Range("E5" & ":" & "E" & I - 1).Value
7        Exit For
    End If
9 Next I
'Part II, part have the change in code by change the value'
 D = I:                                             N = Sh.Range("A20000").End(xlUp).Row - 1
11 M = Sh.Range("J20000").End(xlUp).Row
 For J = 5 To M                                  ' Go From Cell I5 To End Of Range Of Data'
13    If Sh.Range("I" & J).Value <> "" Then
        For K = I To N                            ' Go Through Part 2'
            ' F'
15            If Sh.Range("B" & K).Value = "F" Then
                Sh.Range("F" & D).Value = Sh.Range("E" & K).Value
17                D = D + 1
            End If
            ' C'
19            If Sh.Range("B" & K).Value = "C" Then
                Sh.Range("F" & D).Value = Sh.Range("E" & K).Value & Sh.Cells(J, Sh.Range("C" & K).Value + 9) & """"
21                D = D + 1
            End If
23        Next K
    End If
25 Next J
 'End Code'
 Sh.Range("F" & D).Value = "End Sub"
 'Write To File .Mac'
27 Gio = Time
 Set fSo = CreateObject("Scripting.FileSystemObject")
29 Set newTxt = fSo.createtextfile(Range("duongdan").Value & "\" & Range("tenfile").Value & ".mac") '"

 For J = 5 To Sh.Range("F20000").End(xlUp).Row
31    newTxt.writeline (Sh.Range("F" & J))
 Next J
33 Str = MsgBox("MACRO Created in" & Chr(13) & Chr(13) & Range("duongdan").Value & "\" & Range("tenfile").Value & ".mac", vbOKOnly)
 'ActiveSheet.Protect '    '"
35 Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
3 dòng trước D1: Khai báo các biến cần dùng; Ở đây dòng giữa là dòng lệnh khai báo thêm để chương trình tường minh.

D1: Chớ cập nhật màn hình;

D2: Gán trang tính 'Macro' vô biến đã khai báo;

D3: Xoá dữ liệu tại cột 'F' từ ô dòng 5 đến ô 2 vạn;

D4: Tạo vòng lặp theo biến I từ 5 cho đến 2 vạn; Vòng lặp này kết thúc tại D9;

D5: Điều kiện, nếu ô thuộc cột 'D' dòng I trên trang tính Sh (Trang tính chứa trong biến Sh) có trị là 'P2' thì thực hiện các lệnh tiếp theo cho đến D8;

D6: Dữ liệu thuộc cột 'D' từ dòng thứ 5 đến dòng ngay trên dòng đang xét Sẽ được gán sang dòng tương ứng của cột 'F';

D7: Thoát ngay vòng lặp;

D10: Câu lệnh đầu: Đem trị đang có trong biến I gán vô biến D;
Đem trị trong ô gần cuối nhất thuộc cột 'A' gán vô biến 'N';

D11: Đem trị trong ô cuối nhất thuộc cột 'J' gán vô biến 'M';

D12: Tạo vòng l a95p theo biến J từ 5 cho đến trị trong biến M; Vòng lặp này kết thúc tại D25;

D13: Điều kiện nếu Ô thuộc dòng J & cột 'I' của trang tính Sh khác rỗng thì thực hiện các lệnh cho đến dòng D24

D14: Tạo vòng lặp theo biến K kể từ trị trong biến I đến trị trong biến N; Vòng lặp này kết thúc tại D23;

D15: Nếu trị trong ô thuộc cột 'B' thuộc dòng K = "F" thì thực hiện 2 lệnh dưới liền kề;

D16: Trị trong ô thuộc cột 'E' dòng K được đem gán cho ô thuộc cột 'F' dòng D;

D17: Thêm đơn vị cho biến D;

D26: Ô thuộc cột 'F' dòng D được gán trị chuỗi;

D27: Trị của hàm thời gian của hệ thống đem gán vô biến Gio đã khai báo;

D28: Gán trị cho biến đối tượng fSo;

D29: Gán tiếp trị cho 1 biến đối tượng khác là newTxt;

D30: Tạo vòng lặp theo J bắt đầu từ 5 cho tới dòng cuối chứa dữ liệu thuộc cột 'F'; Vòng này kết thúc tại D32;

D31: Lấy trị trong các ô khảo sát gán vô biến newTxt;

D33: Lấy chuỗi kết hợp bỡi trị trong ô thích hợp với câu từ, . . . gán vô biến Msg đã khai báo;

?? Gán rồi không thấy xài làm gì?

D35: Thực hiện cập nhựt màn hình;



Dịch thôi, còn sự đúng đắn của câu lệnh thì không dám chịu trách nhiệm
 
Upvote 0
Web KT
Back
Top Bottom