Nhờ mọi người trên diễn đàn giải thích giùm ý nghĩa của các dòng trong code với (1 người xem)

Liên hệ QC

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

nguyen_thi_dieu

Thành viên hoạt động
Tham gia
1/11/15
Bài viết
102
Được thích
8
Đoạn code trong excel đây ạ
Xin cảm ơn!
Mong mọi người giúp!
Public Sub Tinh_Toan_1B(Tinh, Huyen, Xa)

Dim TenXa, Tam, Dau, Cuoi, DonVi, BaoCao(), r As Long, c As Long, cl As Long

Range("C3") = Tinh
Range("B3") = Huyen
Range("A3") = Xa
Range("A3:C3").Font.Size = 10
Range("A3:C3").Font.Bold = 1
TenXa = Range("A3")

DonVi = Range("C9:C49")
ReDim BaoCao(1 To UBound(Bieu1B), 1 To UBound(Bieu1B, 2))

For r = 2 To UBound(CSDL)
If TenXa = CSDL(r, 6) Then
Dau = r
Exit For
End If
Next r

For r = UBound(CSDL) To Dau + 1 Step -1
If TenXa = CSDL(r, 6) Then
Cuoi = r
Exit For
End If
Next r

For r = 1 To UBound(Bieu1B)
For c = 1 To UBound(Bieu1B, 2)
If Bieu1B(r, c) <> "" Then
Tam = Dong(Bieu1B(r, c), ThongSo, Dau, Cuoi)
Tam = Split(Tam)
If IsArray(Tam) = True Then
For cl = 0 To UBound(Tam)
BaoCao(r, c) = BaoCao(r, c) + CSDL(Tam(cl), IIf(Len(DonVi(r, 1)) < 4, 25, 26))
Next cl
End If
End If
Next c
Next r

Range("D9").Resize(UBound(Bieu1B), UBound(Bieu1B, 2)).ClearContents
Range("D9").Resize(UBound(Bieu1B), UBound(Bieu1B, 2)) = BaoCao
End Sub
 
Do mình không học bên excel nên không biết nên mới nhờ mọi người dịch giùm, nếu mình biết rồi mình đưa lên làm chi nữa, mình nghĩ trên diễn đàn chắc có nhiều người biết sẽ giúp mình dịch, không chỉ mình biết ý nghĩa của các đoạn code mà còn giúp cho các bạn không biết khác có thể biết được.
Xin cảm ơn
 
Upvote 0
Đối với những người chưa học hoặc trình độ tiếng anh kém hoặc không có điều kiện đi học về excel thì khi họ lên đây họ cũng có thể tham khảo để biết được.
 
Upvote 0
Còn những người được học được tiếp xúc với VBA nhiều thì mình nghĩ chắc họ nghĩ đoạn code trên có thể quá dễ nên họ chỉ xem lướt qua, họ không cần dịch. Theo mình nghĩ z, xong rồi họ nói thì đọc trang này trang nọ.
 
Upvote 0
PHP:
Option Explicit
Public Sub Tinh_Toan_1B(Tinh, Huyen, Xa)
 Dim TenXa, Tam, Dau, Cuoi, DonVi, BaoCao(), R As Long, C As Long, Cl As Long
2 Range("C3") = Tinh:                Range("B3") = Huyen
 Range("A3") = Xa
4 Range("A3:C3").Font.Size = 10:     Range("A3:C3").Font.Bold = 1
 TenXa = Range("A3"):               DonVi = Range("C9:C49")
6 ReDim BaoCao(1 To UBound(Bieu1B), 1 To UBound(Bieu1B, 2))
 For R = 2 To UBound(CSDL)
8    If TenXa = CSDL(R, 6) Then
        Dau = R:                    Exit For
10    End If
 Next R
12 For R = UBound(CSDL) To Dau + 1 Step -1
    If TenXa = CSDL(R, 6) Then
14        Cuoi = R:                   Exit For
    End If
16 Next R
 For R = 1 To UBound(Bieu1B)
18    For C = 1 To UBound(Bieu1B, 2)
        If Bieu1B(R, C) <> "" Then
20            Tam = Dong(Bieu1B(R, C), ThongSo, Dau, Cuoi)
            Tam = Split(Tam)
22            If IsArray(Tam) = True Then
                For Cl = 0 To UBound(Tam)
24                    BaoCao(R, C) = BaoCao(R, C) + CSDL(Tam(Cl), IIf(Len(DonVi(R, 1)) < 4, 25, 26))
                Next Cl
26            End If
        End If
28    Next C
 Next R
30 Range("D9").Resize(UBound(Bieu1B), UBound(Bieu1B, 2)).ClearContents
 Range("D9").Resize(UBound(Bieu1B), UBound(Bieu1B, 2)) = BaoCao
End Sub

Mới dịch đến đây thôi; Thấy bài trên nên . . . . (tạm dừng, chờ thông tin mới)

Diễn dịch macro Tinh_Toan_1B

Macro này cần được cung cấp 3 tham biến kiểu Variant
D1: Khai báo các biến cần dùng;
D2: Mệnh đề đầu: Gán trị nhận được trong tham biến ‘Tinh’ vô ô [c3]
Mệnh đề sau: Tương tự, lấy trị trong ‘Huyen’ gán vô [B3]
D3: Trị trong ‘Xa’ gán vô [A3]
D4: Lệnh format Font cho 3 ô vừa gán trị (cả 2 mệnh đề)
D5: Lệnh đầu: trị trong [A3] đem gán vô biện ‘TenXa’ đã khai báo
Lệnh sau: Lấy trị của các ô vùng [C9..C49] gán vô biến mảng ‘DonVi’
Bổ sung: Có lẽ biến ‘TenXa’ là thừa, vì ta luôn có tham biến ‘Xa’ I chang.
D6: Khai báo biến mảng có tên là ‘BaoCao’ với số dòng & số cột trùng với mảng ‘Bieu1B’
D7: Thiết lập vòng lặp duyệt theo dòng của biến màng CSDL
Vòng lặp kết thúc tại D11;
D8: (Trong khi duyệt) Điều kiện (Đ/K) nếu trị trong biến ‘TenXa’ bằng với trị của fần tử tọa độ (X=Dòng đang xét,Y=6) thì thực hiện 2 lệnh của dòng 9
D9: Fần đầu: Lấy dòng đang duyệt đưa vô biến ‘Dau’
Fần sau: Thoát vòng lặp
D10 & D11: Ket thúc Đ/K & Vòng lặp
D12:
 
Upvote 0
Bạn dịch để làm gì???
Theo tôi nghĩ là bạn đang sử dụng code trên do ai đó viết giúp bạn, để sử dụng trong công việc.
Nhưng bây giờ bạn muốn hiểu chúng.... Và nhờ mọi người dịch...

Nhưng cái cơ bản của VBA bạn lại không biết (hay nói rõ hơn là chưa biết) vì ở trên bạn nói là bạn không hoc Excel...

Vậy thiết nghỉ mọi người có dịch ra = lời để bạn đọc hiểu đi chăng nữa....Rồi đến 1 lúc nào đó bạn cũng quên bắn nó đi...Vì cái cơ bản bạn chưa nắm thì cũng như "Nước đổ đầu vịt"

Vậy sao muốn cố hiểu 1 đoạn code, vậy tại sao ta không bắt đầu bằng cách tìm hiểu Về code (VBA), rồi đi từ cái nhỏ tới cái lớn, cái cơ bản tới nguyên 1 cả đoạn code như trên...

Cái cơ bản ở đây là tìm hiểu về các thành phần cấu thành nên đoạn code trên: nào là khai báo biến, đối tượng, ...vân vân và vân vân...

Vài lời góp ý! Vì cảm thấy ngứa mồm quá đó mà!!!

Chúc bạn thành công!
Đúng bạn nói chính xác.
Vì mình muốn hiểu ý nghĩa của chúng như thế nào.
Mình có đọc qua những cuốn sách và tài liệu nhiều nhưng vẫn chưa viết được.
Và những cái người ta viết thì mình dịch không được bởi vì mình không hiểu
Nên muốn hỏi mọi người dịch giùm để mình hiểu thử nó làm sao và làm sao.
Đúng là nói hơi quá!
 
Upvote 0
PHP:
Option Explicit
Public Sub Tinh_Toan_1B(Tinh, Huyen, Xa)
 Dim TenXa, Tam, Dau, Cuoi, DonVi, BaoCao(), R As Long, C As Long, Cl As Long
2 Range("C3") = Tinh:                Range("B3") = Huyen
 Range("A3") = Xa
4 Range("A3:C3").Font.Size = 10:     Range("A3:C3").Font.Bold = 1
 TenXa = Range("A3"):               DonVi = Range("C9:C49")
6 ReDim BaoCao(1 To UBound(Bieu1B), 1 To UBound(Bieu1B, 2))
 For R = 2 To UBound(CSDL)
8    If TenXa = CSDL(R, 6) Then
        Dau = R:                    Exit For
10    End If
 Next R
12 For R = UBound(CSDL) To Dau + 1 Step -1
    If TenXa = CSDL(R, 6) Then
14        Cuoi = R:                   Exit For
    End If
16 Next R
 For R = 1 To UBound(Bieu1B)
18    For C = 1 To UBound(Bieu1B, 2)
        If Bieu1B(R, C) <> "" Then
20            Tam = Dong(Bieu1B(R, C), ThongSo, Dau, Cuoi)
            Tam = Split(Tam)
22            If IsArray(Tam) = True Then
                For Cl = 0 To UBound(Tam)
24                    BaoCao(R, C) = BaoCao(R, C) + CSDL(Tam(Cl), IIf(Len(DonVi(R, 1)) < 4, 25, 26))
                Next Cl
26            End If
        End If
28    Next C
 Next R
30 Range("D9").Resize(UBound(Bieu1B), UBound(Bieu1B, 2)).ClearContents
 Range("D9").Resize(UBound(Bieu1B), UBound(Bieu1B, 2)) = BaoCao
End Sub

Mới dịch đến đây thôi; Thấy bài trên nên . . . . (tạm dừng, chờ thông tin mới)

Diễn dịch macro Tinh_Toan_1B

Macro này cần được cung cấp 3 tham biến kiểu Variant
D1: Khai báo các biến cần dùng;
D2: Mệnh đề đầu: Gán trị nhận được trong tham biến ‘Tinh’ vô ô [c3]
Mệnh đề sau: Tương tự, lấy trị trong ‘Huyen’ gán vô [B3]
D3: Trị trong ‘Xa’ gán vô [A3]
D4: Lệnh format Font cho 3 ô vừa gán trị (cả 2 mệnh đề)
D5: Lệnh đầu: trị trong [A3] đem gán vô biện ‘TenXa’ đã khai báo
Lệnh sau: Lấy trị của các ô vùng [C9..C49] gán vô biến mảng ‘DonVi’
Bổ sung: Có lẽ biến ‘TenXa’ là thừa, vì ta luôn có tham biến ‘Xa’ I chang.
D6: Khai báo biến mảng có tên là ‘BaoCao’ với số dòng & số cột trùng với mảng ‘Bieu1B’
D7: Thiết lập vòng lặp duyệt theo dòng của biến màng CSDL
Vòng lặp kết thúc tại D11;
D8: (Trong khi duyệt) Điều kiện (Đ/K) nếu trị trong biến ‘TenXa’ bằng với trị của fần tử tọa độ (X=Dòng đang xét,Y=6) thì thực hiện 2 lệnh của dòng 9
D9: Fần đầu: Lấy dòng đang duyệt đưa vô biến ‘Dau’
Fần sau: Thoát vòng lặp
D10 & D11: Ket thúc Đ/K & Vòng lặp
D12:
Bạn HYen17 thấy bài trên nên............ nghĩa là sao? Bạn có thể nói rõ hơn được không ạ.
 
Upvote 0
Upvote 0
Tôi nói thật nhé! Tôi thấy mấy bài gần đây của bạn...mấy anh trên GPE đã gần như là nhiệt tình hết mình với bạn
Code cho công việc của bạn, rồi còn dịch code ra cho bạn hiểu...

Mà bạn còn ăn nói cái kiểu ấy thì thua rồi...

Như tôi đã nói ở trên, chưa có cái căn bản thì lo mà tìm đọc, học cái căn bản đi đã hiểu, chưa biết cái gì hết mà bảo họ dịch...dịch....xong rồi bạn có nhét vào đầu bạn được chữ gì hok mà lăng tăng...

Nếu người hiểu vấn đề không bao giờ cố chấp như vậy...
Thôi góp ý nhiều rồi...bye bye...
Nói túm lại, tôi phục sát đất ai đã từng tham gia hỗ trợ bạn...!!!
Vâng biết rồi, xin cảm ơn ạ.
 
Upvote 0
Nếu đã biết dịch thì đã không phải gửi lên diễn đàn. Anh nói hay

Tại sao bạn lại viết như vậy nhỉ?
Tôi căn cứ bạn nói là bạn đã đọc nhiều sách và tài liệu rồi nhưng chưa hiểu nên tối thiểu bạn phải hiểu 1 số dòng trong code đó. Thì bạn cứ việc dịch những phần nào đã hiểu còn phần nào chưa hiểu GPE bổ xung. Chứ bạn chưa hiểu Option Explicit , Dim thì có dịch cũng khó lắm. Khác nào bảo dịch truyên ngụ ngôn tiếng Việt để hiểu tiếng Việt mà chưa biết chào tiếng Việt vậy.
 
Upvote 0
Xin cảm ơn mọi người đã tận tình giúp đỡ mình trong thời gian qua, chắc mình đã đòi hỏi quá nhiều, chắc đã sai rồi.
Cảm ơn anh ChanhTQ@, HYen17 nhiều.
Và cảm ơn anh HungQuoc49 đã giúp em nhiều
Xin lỗi mọi người!
Do mình chỉ muốn biết những đoạn code đấy là nó làm gì.
 
Upvote 0
Xin cảm ơn mọi người đã tận tình giúp đỡ mình trong thời gian qua, chắc mình đã đòi hỏi quá nhiều, chắc đã sai rồi.
Cảm ơn anh ChanhTQ@, HYen17 nhiều.
Và cảm ơn anh HungQuoc49 đã giúp em nhiều
Xin lỗi mọi người!
Do mình chỉ muốn biết những đoạn code đấy là nó làm gì.
HungQuoc49 giúp nhiều người, hình như là bạn bị nhầm vì tôi chưa giúp bạn.
 
Upvote 0
Mình thì giúp bạn là do tự tạo miềm vui cho bản thân thôi.

Nhưng đến bài cuối thì mình cảm thấy bạn nhờ dịch giống như sắm áo mới cất tủ thôi. Chưa xài ngay. Mình nói vậy vì mình không thấy bạn hỏi lại là tại sao như thế này, thế nọ; Hàm người dùng ấy đang ở đâu, vì ngay mình cũng không rõ & thấy nó ở đâu nữa. (Giống như dịch chay vậy)

Mong rằng bạn thấy những lời của các thành viên khác không đắng lắm!
 
Upvote 0
Mình thì giúp bạn là do tự tạo miềm vui cho bản thân thôi.

Nhưng đến bài cuối thì mình cảm thấy bạn nhờ dịch giống như sắm áo mới cất tủ thôi. Chưa xài ngay. Mình nói vậy vì mình không thấy bạn hỏi lại là tại sao như thế này, thế nọ; Hàm người dùng ấy đang ở đâu, vì ngay mình cũng không rõ & thấy nó ở đâu nữa. (Giống như dịch chay vậy)

Mong rằng bạn thấy những lời của các thành viên khác không đắng lắm!
Em nhờ Anh kia giúp viết giùm, em muốn biết thử mấy code đấy làm gì nên em gửi lên diễn đàn, em thấy nó hay hay nên em mới nhờ mọi người giúp, nên đã tạo ra những nick Nguyen_Thi_Yen và Nguyen_Thi_My để mong nhận sớm được câu trả lời, còn hàm người dùng ấy là hàm gì em chưa được nghe qua ạ.
Cảm ơn HYen17 đã giúp!
 
Upvote 0
Mình thì giúp bạn là do tự tạo miềm vui cho bản thân thôi.

Nhưng đến bài cuối thì mình cảm thấy bạn nhờ dịch giống như sắm áo mới cất tủ thôi. Chưa xài ngay. Mình nói vậy vì mình không thấy bạn hỏi lại là tại sao như thế này, thế nọ; Hàm người dùng ấy đang ở đâu, vì ngay mình cũng không rõ & thấy nó ở đâu nữa. (Giống như dịch chay vậy)

Mong rằng bạn thấy những lời của các thành viên khác không đắng lắm!
Dạ, không sao đâu, đúng thì người ta nói thôi.
Cảm ơn!
 
Upvote 0
Không chỉ đúng thôi đâu, bạn phải: Có khi lại là hại ta khiến ta dốt dần đều đó. Cách không đúng thì nó dẫn đến đường đến đích dài hơn.

Từ 'Có khi' này fụ thuộc rất nhiều vào 'Nguyen_Thi_Dieu' (Một khi nó viết Hoa hay viết Thường nữa kia)
(*) Viết hoa đúng luật qui định nào đó sẽ là tốt
(*) Bằng không sẽ là xấu như bạn cảnh báo

& chúc mọi người vui vẻ!
 
Upvote 0

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

Back
Top Bottom