Khai báo biến VBA

Liên hệ QC

Trần_Minh_5695

Thành viên mới
Tham gia
27/9/21
Bài viết
32
Được thích
2
Chào mn! Em mới tìm một đoạn code trên mạng về phần "Go to sheet" (Đi tới sheet mình cần)
Trong đoạn code có biến "mySht", "myList" nhưg trước đó đều không khai báo những biến nhưng code vẫn chạy được.
Không biết những biến đó là biến đặc biệt hay gì ko ạ?
Mong mn giải đáp thắc mắc giúp e!

Code:
Sub Go2sheet()
myShts = ActiveWorkbook.Sheets.Count
For i = 1 To myShts
myList = myList & i & " - " & ActiveWorkbook.Sheets(i).Name & " " & vbCr
Next i
Dim mySht As Single
mySht = InputBox("Select sheet to go to." & vbCr & vbCr & myList)
Sheets(mySht).Select
End Sub

Link:
 
Chào mn! Em mới tìm một đoạn code trên mạng về phần "Go to sheet" (Đi tới sheet mình cần)
Trong đoạn code có biến "mySht", "myList" nhưg trước đó đều không khai báo những biến nhưng code vẫn chạy được.
Không biết những biến đó là biến đặc biệt hay gì ko ạ?
Mong mn giải đáp thắc mắc giúp e!

Code:
Sub Go2sheet()
myShts = ActiveWorkbook.Sheets.Count
For i = 1 To myShts
myList = myList & i & " - " & ActiveWorkbook.Sheets(i).Name & " " & vbCr
Next i
Dim mySht As Single
mySht = InputBox("Select sheet to go to." & vbCr & vbCr & myList)
Sheets(mySht).Select
End Sub

Link:
Bạn thử thêm dòng Option Explicit trên đầu code thì sẽ hiểu
 
Upvote 0
Chào mn! Em mới tìm một đoạn code trên mạng về phần "Go to sheet" (Đi tới sheet mình cần)
Trong đoạn code có biến "mySht", "myList" nhưg trước đó đều không khai báo những biến nhưng code vẫn chạy được.
Không biết những biến đó là biến đặc biệt hay gì ko ạ?
Mong mn giải đáp thắc mắc giúp e!

Code:
Sub Go2sheet()
myShts = ActiveWorkbook.Sheets.Count
For i = 1 To myShts
myList = myList & i & " - " & ActiveWorkbook.Sheets(i).Name & " " & vbCr
Next i
Dim mySht As Single
mySht = InputBox("Select sheet to go to." & vbCr & vbCr & myList)
Sheets(mySht).Select
End Sub

Link:
Đó là thứ giết chết các thanh niên đó :D
So với các ngôn ngữ như họ nhà C, thì VB nói chung cho phép khai báo như vậy. Với các thuật toán đơn giản hoặc lưu trữ nhẹ, thì cũng chẳng vấn đề gì so với cấu hình máy tính hiện tại.
Đúng ra khai báo myShts as Interger, và myList as String thì sẽ tiết kiệm bộ nhớ, dù rằng đối với một số người cũng kg có cần quan tâm đến cái này lắm :D
 
Upvote 0
Bạn thử thêm dòng Option Explicit trên đầu code thì sẽ hiểu
h mới biết ý nghĩa của dòng này
Cảm ơn a nhiều ạ!
Bài đã được tự động gộp:

Đó là thứ giết chết các thanh niên đó :D
So với các ngôn ngữ như họ nhà C, thì VB nói chung cho phép khai báo như vậy. Với các thuật toán đơn giản hoặc lưu trữ nhẹ, thì cũng chẳng vấn đề gì so với cấu hình máy tính hiện tại.
Đúng ra khai báo myShts as Interger, và myList as String thì sẽ tiết kiệm bộ nhớ, dù rằng đối với một số người cũng kg có cần quan tâm đến cái này lắm :D
Dạ vâg!
Do đó giờ e làm thử mấy cái nhỏ nhỏ nên chưa bị vấn đề về bộ nhớ bao giờ nên chưa biết :D
Cảm ơn a!
 
Upvote 0
Đó là thứ giết chết các thanh niên đó :D
So với các ngôn ngữ như họ nhà C, thì VB nói chung cho phép khai báo như vậy. Với các thuật toán đơn giản hoặc lưu trữ nhẹ, thì cũng chẳng vấn đề gì so với cấu hình máy tính hiện tại.
Đúng ra khai báo myShts as Interger, và myList as String thì sẽ tiết kiệm bộ nhớ, dù rằng đối với một số người cũng kg có cần quan tâm đến cái này lắm :D
Giết cả thằng già này.
Ba cái mớ code ngắn ngủn ấy, tôi lười khai báo biến lắm.

JavaSrcipt cũng thuộc họ nhà C, khai báo Var tuốt luốt, và xuyên từ closure mẹ xuống con êm ái.

Khai báo trước không hẳn chỉ tiết kiệm bộ nhớ. Nó còn liên hệ đến quản lý code và tốc độ. VBA là ngôn ngữ chạy đến đâu vào đến đó cho nên nếu không khai báo trước, chạy đến dòng
myShts = ActiveWorkbook.Sheets.Count
nó mới biết myShts là Long (hay Office đời cũ thì Integer)
 
Upvote 0
Đó là thứ giết chết các thanh niên đó :D
So với các ngôn ngữ như họ nhà C, thì VB nói chung cho phép khai báo như vậy. Với các thuật toán đơn giản hoặc lưu trữ nhẹ, thì cũng chẳng vấn đề gì so với cấu hình máy tính hiện tại.
Đúng ra khai báo myShts as Interger, và myList as String thì sẽ tiết kiệm bộ nhớ, dù rằng đối với một số người cũng kg có cần quan tâm đến cái này lắm :D
Trong VB thì có thằng VB.net nó bắt phải khai báo tường minh cơ bác ạ. Còn không có cả kiểu khai báo variant, định nó là loại gì thì phải khai báo đúng loại đấy
 
Upvote 0
Trong VB thì có thằng VB.net nó bắt phải khai báo tường minh cơ bác ạ. Còn không có cả kiểu khai báo variant, định nó là loại gì thì phải khai báo đúng loại đấy
VB.Net là ngôn ngữ trình dịch. Dịch xong rồi mới chạy được.

VBA giữ lệ của BASIC, chỉ duyệt ngữ pháp và kết nói những gì có thể kết nối (*1). Đến khi chạy mới thực sự dịch.

(*1) những gì nó biết thì kết nối sướm, không biết thì để đó, và kết nối trễ.
 
Upvote 0
VB.Net là ngôn ngữ trình dịch. Dịch xong rồi mới chạy được.

VBA giữ lệ của BASIC, chỉ duyệt ngữ pháp và kết nói những gì có thể kết nối (*1). Đến khi chạy mới thực sự dịch.

(*1) những gì nó biết thì kết nối sướm, không biết thì để đó, và kết nối trễ.
Hoá ra là vậy, em hay viết VB.NET nó bắt khai báo đúng đầu ra, nhiều khi đầu vào có nhiều kiểu dữ liệu chẳng biết đường nào mà khai báo
 
Upvote 0
Web KT
Back
Top Bottom