Khai báo biến như thế nào là vừa đủ

Liên hệ QC

Phamnghi07

Thành viên mới
Tham gia
20/5/19
Bài viết
10
Được thích
1
Thưa các anh chị! Em thường xuyên khai báo biến workbook và Worksheet như với cấu trúc như thế này. Vì em tự học VBA nên không biết về lâu dài có gì bất ổn không? Mong các anh chị có biết thêm xin bàn luận để em đỡ hoang mang! Em cảm ơn nhiều

Private Sub ListBox8_Change()
Application.ScreenUpdating = False
Dim wb As Workbook, ws As Worksheet
Set wb = ThisWorkbook
Set ws = SKho1
With wb
With ws
Dim id As Integer
id = ListBox8.ListIndex
With Me.ListBox8
If Not dic.exists(.List(id, 0)) Then
dic.Add .List(id, 0), .List(id, 0) & ";" & .List(id, 1) & ";" & .List(id, 2) & ";" & .List(id, 6)
arr = dic.items
ws.Range("K1251").Select
ws.Cells(ActiveCell.Row, "K").Resize(, 1) = Split(arr(0), ";")
dic.Remove (.List(id, 0))
End If
End With
End With
End With
Set wb = Nothing
Set ws = Nothing
Application.ScreenUpdating = True
End Sub
 
1598247420371.png

Lưu ý: Dùng dấu ngoặc vuông có tác dụng in hệt như gọi hàm Evaluate với tham số là một chuỗi. Ví dụ điển hình, những cặp lệnh trên coi như tương đương

Lợi điểm của dùng dấu ngoặc vuông là code ngắn hơn. Lợi điểm của Evaluate ở chỗ tham số là một chuỗi, code có thể tuỳ tiện tạo chuỗi hoặc dùng một biến.

Trích từ:
https:// docs.microsoft. com/en-us/previous-versions/office/developer/office-2003/aa223886(v=office.11)

Chú thích phụ:
Dùng dấu ngoặc vuông để lập mảng là cách lập mảng trong worksheet. Những người thường viết hàm mảng trong worksheet đều biết luật này:
- các phần tử chỉ có thể là hằng chứ không thể là biến.
- các trị phần tử chỉ có thể viết theo một vài lối format nhất định.
- vì là hàm Excel cho nên mảng có chỉ số bắt đầu là 1.
 
Lần chỉnh sửa cuối:
Upvote 0
Uổi, thế tên của toán tử đó là gì, và chức năng của toán tử đó là gì bạn.

Tên của nó là "Cặp ngoặc vuông úp mặt vào nhau"
Chức năng: dài nói không hết bác thông cảm, Chắc nó cộng 1+2 = 3 đó mà.

Còn lý thuyết thì tôi chưa nghe chuyện "Vuông Vuông" thế "Em Quên Lưu Anh Tèo - Evaluate"
 
Upvote 0
Đọc thật kỹ. Nghĩ thật lâu.
[/Q
'nguy hiểm' và 'lấy lòng' là chuyện của từng người. Hầu hết code ở diễn đàn này vốn dĩ chỉ là loại "dùng một lần, đặc thù cho trường hợp". Mỗi lần có vấn đề khác thì người ta viết lại. Một số code viết với mục đích "dùng nhiều lần" thì lại viết quá nhiều chọn lựa (options) mà giải thích giao diện thì rất giới hạn cho nên chả mấy người hiểu được cách dùng.
Nói thẳng ra, GPE chỉ là môi trường giúp đỡ code và tập viết code thôi. Muốn thực sự nắm vững các cách thức quản lý code thì nên học căn bản từ nơi khác.

Điểm mà thớt đáng lẽ cần biết là TẦM VỰC của biến. Bài này sử dụng biến nội bộ, toàn cục lẫn lộn. Việc thớt viết code lồng một đống With's cho thấy kiến thức về không gian tầm vực là zê-rô.

Chú thích:
VBA dùng dấu ngoặc vuông [ ] làm ký hiệu tắt của lệnh Evaluate.
Tuy nhiên, dấu hiệu này chỉ 'evaluate' trị trực tiếp chứ không thể sử dụng cho biến.
[A1] tính ra thành Range("A1"). Nhưng:
bien = "A1"
Range(bien) --> chấp nhận
[bien] --> lỗi
em cảm ơn, vì tự mò học nên khổ thế! Cảm ơn anh đã chỉ bảo cặn kẽ!
Kính chúc anh và gia đình mạnh khỏe!
Bài đã được tự động gộp:

Nhọn mỏ dữ.
Thôi cãi mần chio mệt. Vài ngày sau đọc lại bài tự động biết mắc cở mà xoá.
Bài đã được tự động gộp:

Em đồng ý chỗ này.

---
Chủ thớt đang thần tượng vầy thì vụ này e rằng khó tiếp thu những bài khác.

View attachment 243886
thực ra hiểu biết của em còn rất kém (em cũng thưa ngay bài đăng), em thấy các anh biết nhiều và khi nói em đều thấy học hỏi được! Chứ em đâu dám xem nhẹ điều gì đâu
Bài đã được tự động gộp:

Nói chung có 2 trường phải
Cổ điển: Viết đầy đủ khai báo
Đương đại: Viết đầy đủ khai báo / hoặc viết tự do / hoặc viết theo kiểu lập trình hàm (thì còn gọn gàng hơn)

Viết thế nào , quản lý code thế nào, thì lại do người chủ viết code đó ra -- mà người chủ thì thích gì yêu gì thì nó dễ nó hay và còn có người nói nó khoa học với chính họ (lộn xộn trong trật tự móc chéo nhau của nơ ron của óc họ)

Nhưng Cái chung và chuyên nghiệp thì bao giờ cũng gọn: Rõ ràng, không mập mờ, không giấu diếm, code càng mở càng dễ hiểu/ dễ quản lý / dễ bảo trì càng tốt (lưu ý bảo mật theo ý chuyên nghiệp là khác xa với kiểu bảo mật giấu code, mã hóa code - cái đó dành cho dân thường)

Trên cũng là ý kiến hạn hẹp, và phạm vi bài viết diễn đàn không thể mô tả hết, thiếu xót mong các bạn thông cảm và bổ sung.
cảm ơn anh,
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi tạm xoá 1 số bài trong topic này vì là bài tranh luận mang tính công kích cá nhân hoặc phản biện về công kích cá nhân. Những bài phản biện có tính tranh luận từ ngữ kỹ thuật thì không xoá, để nguyên hoặc có thể là xoá 1 vài câu.
Đồng thời xoá 1 vài bài trả lời hoặc bàn về bài viết đã bị xoá của 1 nick đã bị ban.
Mong mọi người tiếp tục tranh luận nhưng không công kích cá nhân lẫn nhau.
 
Upvote 0
Web KT

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

Back
Top Bottom