Chức năng của cú pháp [ bien="string"] là gì

Liên hệ QC

khongnhienttt

Thành viên hoạt động
Tham gia
15/7/15
Bài viết
137
Được thích
33
Nhờ các bạn giải thích giúp mình công dụng của việc đặt ngoặc vuông này là gì ạ, và cách sử dụng nó ra sao, khi mình chạy sub Test thì vẫn không báo lỗi, tức là VBA vẫn hiểu nó
Mã:
Sub test()
    [bien="Day La bien X"]
End Sub
 
Ta thử thí nghiệm thế này để xem nó có phải là một Evaluate không nhé.
Ta có một bảng màu vàng và ta tìm bằng hàm VLOOKUP với 5 và ra kết quả là 25 như hình ảnh (xin chú ý công thức):

View attachment 264263

Sau đó ta dùng Imediate và gõ:

Mã:
?Evaluate("=VLOOKUP(5,A1:B6,2,0)")

Enter, Kết quả ra 25

Rồi sau đó ta lại gõ:

Mã:
?[=VLOOKUP(5,A1:B6,2,0)]

Và Enter, kết quả cũng ra 25

Từ đó suy ra chúng chính là Evaluate.

View attachment 264264
Vậy gõ thế này test thử xem sao:
?Dim VLOOKUP: [=VLOOKUP(5,A1:B6,2,0)]
?Evaluate("=VLOOKUP(5,A1:B6,2,0)")
Rõ ràng có ai làm gì đâu đặt biến thêm thôi mà. Sao cái chạy đúng cái chạy sai.
Cần học ở cái tại sao? Hay lập trình không được đặt biến là VLOOKUP
 
Upvote 0
Từ lúc tôi học và viết VBA. Tôi chưa thấy [] thay cho evaluate dù chỉ 1 trường hợp nào.
Từ bài #9 này, cho nên mình mới thảo luận với bạn về sự liên quan của [] và Evaluate và mình đã chứng minh [] thay thế cho Evaluate ở các bài bên dưới nó (nhất là Bài số #18).

Và không liên quan gì đến Khai báo biến như bài dưới đây bạn viết:
Vậy gõ thế này test thử xem sao:
?Dim VLOOKUP: [=VLOOKUP(5,A1:B6,2,0)]
?Evaluate("=VLOOKUP(5,A1:B6,2,0)")
Rõ ràng có ai làm gì đâu đặt biến thêm thôi mà. Sao cái chạy đúng cái chạy sai.
Cần học ở cái tại sao? Hay lập trình không được đặt biến là VLOOKUP
Vì thế mình không thể trả lời câu hỏi này của bạn.
 
Upvote 0
Từ bài #9 này, cho nên mình mới thảo luận với bạn về sự liên quan của [] và Evaluate và mình đã chứng minh [] thay thế cho Evaluate ở các bài bên dưới nó.

Và không liên quan gì đến Khai báo biến như bài dưới đây bạn viết:

Vì thế mình không thể trả lời câu hỏi này của bạn.
Nó không liên quan gì nhau.
Vba nhúng trong excel có Lớp đối tượng Excel thì [] nó đọc thôi.
Evaluate là phương thức của lớp ứng dụng excel. Thì nó đọc hàm và đối tượng của lớp nó thôi.

Một tí xíu liên quan cũng không có.
 
Upvote 0
Nó không liên quan gì nhau.
Vba nhúng trong excel có Lớp đối tượng Excel thì [] nó đọc thôi.
Evaluate là phương thức của lớp ứng dụng excel. Thì nó đọc hàm và đối tượng của lớp nó thôi.

Một tí xíu liên quan cũng không có.
Nói chung là bạn viết "Tôi chưa thấy [] thay cho evaluate dù chỉ 1 trường hợp nào" vì thế tôi mới đưa ra một số trường hợp đã dùng [] thay thế cho Evaluate thôi, chứ tôi không chuyên lý thuyết về nó.
 
Upvote 0
không liên quan gì đến Khai báo biến như bài dưới đây bạn viết
Nếu không lường các trường hợp đặt biến, thì lỗi xảy ra trong dự án làm sao xử lý đây anh, đừng nói viết ứng dụng vui chơi chạy được chạy không thì thôi.
Viết ngắn [] là cách viết lười biếng sẽ phá hỏng dự án trong tương lai. Nên trót dại xem nó là rút gọn của Evaluate. Trong khi bố con người ta là VBA.
Cứ [A1] thoải mái, nhưng sau này copy code của ai đó về có Public A1 cái là debug 3 ngày, cũng chẳng biết lí do.
 
Upvote 0
Nếu không lường các trường hợp đặt biến, thì lỗi xảy ra trong dự án làm sao xử lý đây anh, đừng nói viết ứng dụng vui chơi chạy được chạy không thì thôi.
Viết ngắn [] là cách viết lười biếng sẽ phá hỏng dự án trong tương lai. Nên trót dại xem nó là rút gọn của Evaluate. Trong khi bố con người ta là VBA.
Cứ [A1] thoải mái, nhưng sau này copy code của ai đó về có Public A1 cái là debug 3 ngày, cũng chẳng biết lí do.
À, chuyện đó hoàn toàn khác hẳn với cách mà mình làm, mình chỉ chứng minh cho việc thay thế trong trường hợp đang thảo luận này thôi.

Mình có nguyên tắc về đặt biến, nguyên tắc của mình là không được trùng tên hàm, const hoặc địa chỉ Ô (kể cả name) và thường xuyên đặt tên biến với tiền tố data type của chúng, chẳng hạn biến Double thì mình sẽ đặt dblCaiGiDo, biến Boolean sẽ đặt blnCaiGiDo v.v..., còn nếu chỉ 1 chữ cái thôi mình sẽ thường viết biến c đại diện cho cột, biến r đại diện cho hàng v.v... nên không thể nào nhầm lẫn được.

Nhưng qua đây cũng cho thấy bạn LƯU Ý với mọi người như thế cũng hoàn toàn có ý nghĩa và mọi người cẩn thận với việc khai báo biến của mình.
 
Upvote 0
Một tí xíu liên quan cũng không có.
Mình nghĩ trong trường hợp này thì có liên quan
Mã:
Dim i As Long

Sub Test()
  i = 0
  'Evaluate "Cong(10,5)"
  [Cong(10,5)]
  Debug.Print i
End Sub

Function Cong(a As Long, b As Long) As Long
  i = i + 1
  Cong = a + b
End Function
Kết quả là i =2
1629215624561.png
Nó cũng chạy hàm 2 lần giống Evaluate. Và mình cũng không sử dụng cách viết tắt này khi biết nó chạy hàm 2 lần.
 
Upvote 0
Nghe 2 bạn HeSenbi và bạn Nghĩa thảo luận sao mình thấy mông lung quá, mình học kiểu tự mò mẫm nên kiến thức về VBA chắc chắn không bằng 2 bạn. mình nhớ lúc trước viết code đánh số thứ tự dùng Evaluate: Trong bài là đánh số thứ tự từ A1 đến A14 mình viết:
Public Sub Stt()
Range("B1:B14").Offset(, -1) = Evaluate("=row(A:A)")
End Sub

Sau này mình đọc ở đâu đó cái thằng "[]" nó thay thế cho Evaluate nên mình thử:
Public Sub SttA()
[B1:B14].Offset(, -1) = [row(A:A)]
End Sub

2 cách đều ra cùng kết quả
Vậy cuối cùng thằng [] có phải là thằng thay thế cho Evaluate không
Thật ra, ở không quá nên hỏi vậy thôi chứ 2 thằng nó có liên quan gì với nhau mình cũng chẳng quan tâm, viết cứ chạy ào ào là ok rôi. Híc
Thân
 

File đính kèm

  • MongLungQua.xlsm
    14.3 KB · Đọc: 0
Upvote 0
Bạn này nói dúng nè, nếu biết ý nghĩa của nó trong vb có lẽ sẽ dễ dùng hơn
Xét cho cùng Microsoft Office tích hợp ngôn ngữ VB (Visual Basic) tạo thành VBA (Visual Basic for Application), vậy thì cái việc nói cái gì đó của VB cũng là huề vốn! Chả phải cái nào cũng là từ nguồn gốc VB mà ra sao?
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom