Dim có nghĩa là gì trong Visual Basic và Basic? Chương trình con của ngôn ngữ cơ bản.

Dim có giá trị khác nhau được quy cho anh ta.

Tôi tìm thấy các liên kết đến giá trị mờ "Khai báo trong bộ nhớ"Một liên kết có liên quan hơn là một tài liệu trên câu lệnh Dim được xuất bản Oracle như một phần của thư mục ngôn ngữ Siebel VB. Tất nhiên, bạn có thể lập luận rằng nếu bạn không khai báo các biến trong bộ nhớ, bạn sẽ làm điều đó ở đâu? Có lẽ "Khai báo trong mô-đun" - Một sự thay thế tốt, cho cách độ mờ được sử dụng.

Theo tôi, "Tuyên bố trong bộ nhớ" thực sự là một Mnemonic, được tạo ra để giúp dễ dàng học cách sử dụng Dim. Tôi thấy "tuyên bố trong bộ nhớ" là ý nghĩa tốt nhất, bởi vì nó mô tả những gì nó làm trong các phiên bản ngôn ngữ hiện tại, nhưng đây không phải là ý nghĩa đúng đắn.

Trong thực tế, với các nguồn mờ cơ bản chỉ được sử dụng để khai báo mảng. Đối với các biến thông thường, một từ khóa không được sử dụng, thay vào đó, loại của chúng được lấy từ tên của chúng. Ví dụ: nếu tên biến kết thúc trên $, thì đây là một chuỗi (đây là những gì bạn có thể thấy ngay cả trong các phương thức phương thức thành VB6, ví dụ giữa $). Vì vậy, bạn chỉ sử dụng mờ để đo mảng (lưu ý rằng Redim thay đổi kích thước của các mảng).

Thật vậy, nó có quan trọng? Ý tôi là từ khóa này có ý nghĩa trong một ngôn ngữ nhân tạo. Nó không nên là một từ bằng tiếng Anh hoặc bất kỳ ngôn ngữ tự nhiên nào khác. Vì vậy, nó chỉ có nghĩa là những gì bạn muốn, tất cả mọi thứ quan trọng là những gì nó hoạt động.

Trong mọi trường hợp, nó không hoàn toàn như vậy. Vì cơ bản là một phần của văn hóa của chúng ta và hiểu lý do tại sao nó là tôi, tôi hy vọng, sẽ giúp cải thiện tầm nhìn của chúng ta trên thế giới.

Tôi ngồi trên máy tính của mình với mong muốn giúp bảo tồn mảnh nhỏ của văn hóa của chúng ta, dường như đã mất, được thay thế bằng sự đoán của chúng ta về những gì nó đã được. Vì vậy, tôi đã đào MSDN là đĩa CD hiện tại và cũ từ phiên bản năm 1998. Tôi cũng đã tìm kiếm tài liệu cho QBasic cũ [Tôi đã phải sử dụng Dosbox] và quản lý để có được một hướng dẫn Dartmouth để tìm hiểu cách họ nói về Dim. Đối với sự thất vọng của tôi, họ không nói những gì mờ đi có nghĩa là, và họ chỉ nói như thế nào nó được sử dụng.

Nhưng trước khi hy vọng của tôi mờ đi, tôi đã tìm được hướng dẫn này để sử dụng máy vi tính BBC (được cho là được phê duyệt vào năm 1984 và tôi không nên nghi ngờ về nó). Máy vi tính BBC đã sử dụng tùy chọn cơ bản có tên BBC Basic và nó được mô tả trong tài liệu. Mặc dù thực tế là anh ta không nói những gì mờ đi có nghĩa là, ông nói (trên trang 104):

Bạn có thể đo N $ để có rất nhiều bản ghi như bạn muốn. Ví dụ: Dim N $ (1000) sẽ tạo một mảng chuỗi với không gian cho 1000 tên khác nhau.

Như tôi đã nói, anh ta không nói rằng Dim biểu thị kích thước, nhưng đóng vai trò là bằng chứng cho thấy sự liên kết mờ với chiều là hiện tượng thông thường tại thời điểm viết tài liệu này.

Bây giờ tôi đã nhận được một bất ngờ bổ sung sau (trên trang 208), tiêu đề phần mô tả từ khóa Dim (Lưu ý: Điều này không được chỉ định trong nội dung) nói:

Kích thước mờ massiva.

Vì vậy, tôi đã không nhận được một trích dẫn "Dim đáng giá ...", nhưng tôi nghĩ rõ ràng rằng bất kỳ người tốt nào có thể đọc tài liệu này sẽ cho rằng Dim có nghĩa là kích thước.

Với một hy vọng mới, tôi quyết định tìm cách chọn một chút mờ. Một lần nữa, tôi không tìm thấy một tài khoản về chủ đề này, nhưng tôi đã có thể tìm thấy trích dẫn cuối cùng:

Trước khi bạn có thể sử dụng một mảng, bạn phải xác định nó trong lệnh mờ (đo lường).

Bạn có thể tìm thấy nó như một phần của Hướng dẫn sử dụng trực tuyến thực sự trên trang web True Basic Inc, một công ty dựa trên Thomas Eugene Kurtz, đồng tác giả cơ bản.

Vì vậy, trong quá trình tái sử dụng mờ là giảm đối với Kích thước. Và vâng. Nó tồn tại ở Fortran sớm hơn, vì vậy có khả năng anh ta được chọn bởi ảnh hưởng của Fortran khi Patrick McDonald nói trong câu trả lời của mình.

Dim Sum As String \u003d "Đây không phải là một bữa ăn Trung Quốc" Sử dụng ví dụ REM trong VB.NET;)

Thông báo một biến hoặc mảng.

Nếu các biến được liệt kê thông qua dấu phẩy (ví dụ, Dim spar1, spar2, spar3 dưới dạng chuỗi), bạn chỉ có thể xác định một biến biến thể. Nói chung, mỗi biến phải được xác định trên một dòng riêng biệt.

Dim spar1 như chuỗi

Dim spar2 như chuỗi

Dim spar3 như chuỗi

Dim công bố các biến cục bộ trong các thủ tục. Để khai báo các biến toàn cầu, nhà khai thác công cộng và tư nhân phục vụ.

Cú pháp:

Biến mờ [(bắt đầu đến end)] [, biến2 [(bắt đầu đến end)] [, ...]

Thông số:

Biến: tên tùy ý của một biến hoặc mảng.

Bắt đầu, kết thúc: các giá trị số hoặc hằng số xác định số lượng phần tử (số lượng phần tử \u003d (kết thúc bắt đầu) +1) và phạm vi của các chỉ mục.

Sự khởi đầu và kết thúc cũng có thể là biểu thức số nếu Redim áp dụng ở mức độ của thủ tục.

Nhập: Từ khóa, biến loại khai báo.

Từ khóa: Loại biến

Boolean biến Boolean loại Boolean (TRUE, FALSE)

Tiền tệ: Loại tiền loại biến (Giá trị tiền tệ với độ dài của phần phân số trong 4 vị trí)

Ngày: Ngày thay đổi Ngày

Double: Biến điểm nổi chính xác kép (1.79769313486232 X 10E308 - 4.94065645841247 X 10E-324)

INTEGER: Số nguyên loại biến (-32768 - 32767)

Long: Loại số nguyên dài biến (-2 147 483 648 - 2 147 483 647)

Đối tượng: Đối tượng loại biến (Lưu ý: Biến này chỉ có thể được xác định sau này sử dụng câu lệnh SET!)

Độc thân: biến loại đơn (3.402823 x 10e38 - 1.401298 x 10e-45)

Chuỗi: biến kiểu chuỗi với độ dài tối đa 64.000 ký tự ASCII.

: Biến thể loại biến (bao gồm tất cả các loại, theo định nghĩa). Nếu từ khóa không được chỉ định, các biến sẽ tự động được xác định là các biến của loại biến thể, ngoại trừ khi người vận hành từ dải defbool được áp dụng.

Trong ngôn ngữ Symphony ™ cơ bản của Lotus®, các biến không bắt buộc phải khai báo rõ ràng. Ngoại lệ chỉ là mảng. Biến có thể được khai báo bằng toán tử Dim; Nếu các nhà khai thác quảng cáo là một số, thì chúng được phân tách bằng dấu phẩy. Để khai báo một loại biến, chỉ định ký hiệu AD loại sau tên của nó hoặc nhập từ khóa thích hợp.

Trong ngôn ngữ giao hưởng LOTUS cơ bản, bạn có thể xác định mảng một chiều hoặc đa chiều bằng cách đặt loại biến tương ứng. Mảng thuận tiện để làm việc với danh sách và bảng. Bạn có thể liên hệ với các phần tử của mảng bằng một chỉ mục có thể được chỉ định theo biểu thức hoặc biến số.

Mảng được khai báo bởi toán tử Dim. Phạm vi của các chỉ mục có thể được xác định theo hai cách:

Dim văn bản (20) dưới dạng phần tử REM 21 với các số từ 0 đến 20

Văn bản mờ (5 đến 25) dưới dạng phần tử rem 21 với các số từ 5 đến 25

Dim văn bản (-15 đến 5) dưới dạng phần tử REM 21 (bao gồm 0)

REM với số từ -15 đến 5

Trường dữ liệu hai chiều

Dim văn bản (20,2) dưới dạng chuỗi REM 63 thành phần có số từ 0 đến 20 cấp 1, từ 0 đến 20 cấp 2 và từ 0 đến 20 cấp 3

Các loại mảng có thể được khai báo là động nếu câu lệnh Redim xác định số lượng đo trong quy trình hoặc hàm có chứa một mảng. Nói chung, kích thước của mảng chỉ được xác định một lần và không thể thay đổi. Trong quy trình, một mảng có thể được công bố bằng cách sử dụng toán tử Redim. Kích thước chỉ có thể được xác định bằng cách sử dụng các biểu thức số. Điều này đảm bảo tuân thủ các hạn chế về độ dài của các lĩnh vực.

Thí dụ:

Dim Svar như chuỗi

Dim ivar như số nguyên

sVAR \u003d "Symphony sen"

Trường dữ liệu hai chiều REM

Dim stext (20,2) làm chuỗi

Const sdim dưới dạng chuỗi \u003d "Kích thước:"

stext (i, ii) \u003d str (i) & sdim & str (ii)

Dim ban đầu (trong cơ bản) đứng cho kích thước, vì nó đã được sử dụng để xác định kích thước của mảng.

(Việc triển khai ban đầu cơ bản là Dartmouth Basic, xảy ra từ Fortran, nơi các kích thước được chỉ định.)

Hiện tại, Dim được sử dụng để xác định bất kỳ biến nào, và không chỉ các mảng, do đó giá trị của nó không trực quan.


2018-06-23 16:01

Dim có giá trị khác nhau được quy cho anh ta.

Tôi tìm thấy các liên kết đến mờ "Đứng trong bộ nhớ"Một tài liệu tham khảo có liên quan hơn là tài liệu trên lệnh Dim được xuất bản Oracle như một phần của tham chiếu ngôn ngữ Siebel VB. Tất nhiên, bạn có thể lập luận rằng nếu bạn không khai báo các biến trong bộ nhớ, bạn sẽ làm điều đó ở đâu? Có lẽ "Tuyên bố trong mô-đun" Đó là một sự thay thế tốt, xem xét độ mờ được sử dụng như thế nào.

Theo tôi, hãy tuyên bố trong bộ nhớ trên thực tế mnemonic.Được tạo để đơn giản hóa việc học sử dụng Dim, tôi thấy "Khai báo trong bộ nhớ" là ý nghĩa tốt nhất, bởi vì nó mô tả những gì nó làm trong các phiên bản ngôn ngữ hiện tại, nhưng đây không phải là ý nghĩa đúng đắn.

Trong thực tế, khi Dim cơ bản ban đầu được sử dụng để sắp xếp các mảng. Đối với các biến thông thường, một từ khóa không được sử dụng, thay vào đó, loại của chúng được lấy từ tên của chúng. Ví dụ: nếu biến tên kết thúc $, đây là một chuỗi (đây là những gì bạn có thể thấy ngay cả trong các phương thức phương thức thành VB6, ví dụ: Giữa $). Vì vậy bạn chỉ sử dụng mờ để cho Đo lường Đến mảng (lưu ý rằng Redim thay đổi kích thước của các mảng).

Thật, Nó quan trọng? Ý tôi là từ khóa này có ý nghĩa trong một ngôn ngữ nhân tạo. Nó không nên là một từ bằng tiếng Anh hoặc bất kỳ ngôn ngữ tự nhiên nào khác. Vì vậy, nó chỉ có nghĩa là những gì bạn muốn, tất cả mọi thứ quan trọng là những gì nó hoạt động.

Trong mọi trường hợp, nó không hoàn toàn như vậy. Vì cơ bản là một phần của văn hóa của chúng ta và hiểu lý do tại sao nó là tôi, tôi hy vọng, sẽ giúp cải thiện tầm nhìn của chúng ta trên thế giới.

Tôi ngồi với máy tính của mình với mong muốn giúp bảo tồn mảnh văn hóa nhỏ bé này, có vẻ mất, thay thế bằng giả định của chúng tôi rằng đó là. Vì vậy, tôi đã đào MSDN là đĩa CD hiện tại và cũ từ phiên bản năm 1998. Tôi cũng đã tìm kiếm tài liệu cho Qbasic cũ [Tôi đã phải sử dụng Dosbox] và quản lý để có được một hướng dẫn Dartmouth để tìm hiểu làm thế nào họ nói mờ, vì sự thất vọng của tôi mà họ không nói những gì làm cho Dim đứng, và chỉ cần nói nó như thế nào đã sử dụng.

Nhưng trước khi hy vọng tôi mờ đi, tôi đã tìm được hướng dẫn này về việc sử dụng máy vi tính BBC (mà tuyên bố rằng từ năm 1984 và tôi không muốn nghi ngờ về nó). Máy vi tính BBC đã sử dụng tùy chọn cơ bản có tên BBC Basic và nó được mô tả trong tài liệu. Mặc dù, anh ta không nói những gì làm cho Dim đứng, ông nói (trên trang 104):

Bạn có thể đo N $ để có rất nhiều bản ghi như bạn muốn. Ví dụ: Dim N $ (1000) sẽ tạo một mảng chuỗi với dấu cách cho 1000 tên khác nhau.

Như tôi đã nói, anh ta không nói rằng Dim có nghĩa là kích thước, nhưng đóng vai trò là bằng chứng cho thấy liên kết mờ với kích thước là hiện tượng thông thường tại thời điểm viết tài liệu này.

Bây giờ tôi đã nhận được một bất ngờ bổ sung (trên trang 208), tiêu đề phần, mô tả từ khóa Dim (Lưu ý: Điều này không được chỉ định trong nội dung) nói:

Kích thước mờ massiva.

Vì vậy, tôi đã không nhận được một trích dẫn "Dim đáng giá ...", nhưng tôi nghĩ rõ ràng rằng bất kỳ người xứng đáng nào có thể đọc tài liệu này sẽ cho rằng Dim có nghĩa là kích thước.

Với một hy vọng mới, tôi quyết định tìm thấy Dim đã được chọn. Một lần nữa, tôi không tìm thấy một tài khoản về chủ đề này, nhưng tôi đã có thể tìm thấy trích dẫn cuối cùng:

Trước khi bạn có thể sử dụng một mảng, bạn phải xác định nó trong lệnh mờ (đo lường).

Bạn có thể tìm thấy nó như một phần của hướng dẫn sử dụng trực tuyến thực sự trên trang web True Basic Inc, công ty được thành lập bởi Thomas Eugene Kurtz, đồng tác giả cơ bản.

Vì vậy, mờ là giảm cho Kích thước.và vâng. Nó tồn tại trong Fortran sớm hơn, vì vậy có khả năng anh ta được chọn vì ảnh hưởng của Fortran khi Patrick McDonald nói trong câu trả lời của mình,

Dim Sum As String \u003d "Đây không phải là một bữa ăn Trung Quốc" Sử dụng ví dụ REM trong VB.NET;)


2017-10-05 01:19

Đây là sự giảm kích thước, vì ban đầu nó được sử dụng trong cơ bản để chỉ ra kích thước của các mảng.

Dim - (Giảm kích thước) xác định kích thước của các mảng

Một phần của mã nguồn gốc của trình biên dịch cơ bản, nơi nó sẽ nhảy khi tìm kiếm nhóm Dim mà bạn có thể thấy rõ ý định ban đầu cho từ khóa:

Dim LDA XR01 Back Off Con trỏ đối tượng SUB N3 STA RX01 LDA L 2 Biến để có kích thước STA 3 LDA S 3 CAB N36 Kiểm tra $ Array bru * + 7 không $ ...

Sau đó, nó bắt đầu được sử dụng để khai báo tất cả các loại biến khi khả năng chỉ định loại biến đã được thêm vào trong các phiên bản mới hơn.


2018-06-23 16:02

Đo biến, về cơ bản bạn nói trình biên dịch mà bạn sẽ cần một biến loại này tại một số điểm.

Trong VBA, như trong bất kỳ ngôn ngữ lập trình nào khác, các biến và hằng số được sử dụng để lưu trữ bất kỳ giá trị nào. Khi nó theo tên, các biến có thể thay đổi, các hằng số lưu trữ các giá trị cố định.

Ví dụ: Constanta số Pi Lưu trữ giá trị 3.14159265 ... Số "PI" sẽ không thay đổi trong quá trình thực thi chương trình, nhưng vẫn lưu trữ một giá trị như vậy thuận tiện hơn như một hằng số.

Đồng thời, chúng ta có thể sử dụng biến svat_rate. Để lưu trữ lãi suất VAT trên hàng hóa đã mua. Độ lớn của biến svat_rate. Nó có thể thay đổi tùy thuộc vào những gì hàng hóa được mua.

Loại dữ liệu

Tất cả các biến và hằng số đề cập đến một loại dữ liệu cụ thể. Bảng dưới đây hiển thị các loại dữ liệu được sử dụng trong VBA, với mô tả và phạm vi của các giá trị có thể:

Loại dữ liệu Kích cỡ Sự miêu tả Phạm vi giá trị
Byte. 1 byte. Những số nguyên dương; Thường được sử dụng cho dữ liệu nhị phân từ 0 đến 255
Boolean. 2 byte. Có thể tạo các giá trị đúng hoặc sai Đúng hay sai
Số nguyên 2 byte. Số nguyên (không có phần phân số) từ -32 768 đến +32 767
Dài. 4 byte. Số nguyên lớn (không có phần phân số) từ -2 147 483 648 đến +2 147 483 647
Độc thân 4 byte. Số điểm nổi duy nhất từ -3.4e38 đến + 3.4e38
Gấp đôi. 8 byte. Số điểm nổi có độ chính xác kép từ -1.8e308 đến + 1.8e308
Tiền tệ. 8 byte. Số dấu phẩy động với một lượng xả cố định của chất thải thập phân từ -922 337 203 685 477.5808 đến +922 337 203 685 477.5807
Ngày. 8 byte. Dữ liệu ngày và giờ - Ngày được thể hiện bằng một số dấu phẩy động. Một phần nguyên của số này thể hiện ngày và phần phân số là thời gian từ ngày 1 tháng 1 đến ngày 31 tháng 12 năm 9999
Vật. 4 byte. Liên kết đến đối tượng Bất kỳ tham chiếu đến đối tượng
Chuỗi thay đổi Đặt ký tự. Loại chuỗi có thể có độ dài cố định hoặc thay đổi. Thường được sử dụng với chiều dài thay đổi Chiều dài cố định - khoảng 65.500 ký tự. Chiều dài thay đổi - Khoảng 2 tỷ ký tự
Biến thể. thay đổi Có thể chứa một ngày, số dấu phẩy động hoặc chuỗi ký tự. Loại này được sử dụng trong trường hợp nó không được biết trước loại dữ liệu sẽ được giới thiệu Số - Double, String - String

Rõ ràng, sử dụng bảng trên và chọn loại dữ liệu chính xác, bạn có thể sử dụng bộ nhớ kinh tế hơn (ví dụ: chọn kiểu dữ liệu Số nguyên thay thế Dài. hoặc là Độc thân thay thế Gấp đôi.). Tuy nhiên, sử dụng nhiều loại dữ liệu nhỏ gọn hơn, bạn cần đảm bảo cẩn thận rằng trong mã không có nỗ lực nào để phù hợp với chúng không chính xác các giá trị lớn hơn.

Tuyên bố các biến và hằng số

Dịch giả Lưu ý: Nói về các biến trong VBA, nó đáng để đề cập đến một điểm rất quan trọng khác. Nếu chúng tôi khai báo một biến, nhưng không gán bất kỳ ý nghĩa nào với nó, nó sẽ được khởi tạo bởi giá trị mặc định:
Các dòng văn bản được khởi tạo bởi các chuỗi rỗng;
số - giá trị 0;
Biến loại Boolean. - sai;
NGÀY - 30 tháng 12 năm 1899.

Trước khi sử dụng một biến hoặc hằng số, nó phải được công bố. Để thực hiện việc này, Macro thêm một dòng mã đơn giản như vậy:

Lờ mờ Tên tên Như Type_data.

Dòng mã hiển thị ở trên Tên tên - Đây là tên của biến sẽ được sử dụng trong mã và Type_data. - Đây là một trong những loại dữ liệu từ bảng được hiển thị trước đó trong bài viết này. Ví dụ:

Dim svat_rate dưới dạng đơn Dim i như số nguyên

Các hằng số được công bố tương tự, nhưng khi các hằng số khai báo, ý nghĩa của chúng được chỉ định ngay lập tức. Ví dụ, như thế này:

Const imaxcount \u003d 5000 const imaxcore \u003d 100

Thông báo các biến trong Excel là không cần thiết. Theo mặc định, tất cả đã nhập, nhưng không được khai báo các biến trong Excel sẽ có loại Biến thể. Và họ có thể có cả hai nghĩa số và văn bản.

Do đó, lập trình viên có thể sử dụng một biến mới bất cứ lúc nào (ngay cả khi nó chưa được khai báo) và Excel sẽ xem xét nó như một biến loại Biến thể.. Tuy nhiên, có một số lý do tại sao không tuân theo điều này:

  1. Sử dụng bộ nhớ và tốc độ tính toán. Nếu bạn không khai báo một biến với loại dữ liệu, thì mặc định là loại cho nó. Biến thể.. Kiểu dữ liệu này sử dụng nhiều bộ nhớ hơn các loại dữ liệu khác. Nó sẽ là một vài byte không cần thiết cho mỗi biến - không quá nhiều, nhưng trong thực tế trong các chương trình được tạo ra có thể có hàng ngàn biến (đặc biệt là khi làm việc với mảng). Do đó, bộ nhớ quá mức được sử dụng bởi các biến Biến thể.so với các biến như Số nguyên hoặc là Độc thâncó thể dẫn đến một lượng đáng kể. Những gì tương tự, giao dịch với các biến Biến thể. Thực hiện vĩnh viễn chậm hơn nhiều so với các biến của các loại khác, tương ứng, thêm một nghìn biến của loại Biến thể. Nó có thể làm chậm đáng kể các tính toán.
  2. Ngăn chặn lỗi chính tả trong tên biến. Nếu tất cả các biến được khai báo, bạn có thể sử dụng toán tử VBA - Tùy chọn rõ ràng. (Hãy cho tôi biết thêm) để xác định tất cả các biến không được khai báo. Theo thứ tự, sự xuất hiện của một lỗi trong chương trình do tên biến sai được loại trừ. Ví dụ: sử dụng một biến trong mã có tên svat_rate., Bạn có thể thừa nhận một lỗi đánh máy và, gán giá trị của biến này, viết: "vatrate \u003d 0.175". Dự kiến \u200b\u200btừ bây giờ trên, biến svat_rate. Phải chứa một giá trị 0,175 - nhưng, tất nhiên, điều này không xảy ra. Nếu chế độ khai báo bắt buộc được bật, trình biên dịch VBA ngay lập tức chỉ ra lỗi, vì nó sẽ không tìm thấy một biến Tỷ lệ VAT. Trong số các công bố.
  3. Phân bổ các giá trị không đáp ứng loại biến khai báo. Nếu bạn khai báo một biến của một loại nhất định và thử gán dữ liệu của một loại khác, một lỗi sẽ xuất hiện mà không sửa lỗi chương trình, trước tiên bạn có thể nhìn vào cái nhìn đầu tiên, có vẻ như lý do tốt để không khai báo các biến, nhưng trên thực tế , trước đó hóa ra một trong những biến nhận được không phải dữ liệu được cho là để có được - càng tốt! Mặt khác, nếu chương trình tiếp tục hoạt động, kết quả có thể không chính xác và bất ngờ, và tìm ra nguyên nhân gây ra lỗi sẽ phức tạp hơn nhiều. Cũng có thể macro sẽ được thực hiện thành công. Do đó, lỗi sẽ vẫn không được chú ý và hoạt động sẽ tiếp tục với dữ liệu không chính xác!

Về vấn đề này, loại dữ liệu sai là mong muốn phát hiện và càng sớm càng tốt để sửa lỗi như vậy trong mã. Vì những lý do này, khi viết một macro VBA, nên khai báo tất cả các biến.

Tùy chọn rõ ràng.

Nhà điều hành Tùy chọn rõ ràng. Thực hiện để khai báo tất cả các biến sẽ được sử dụng trong mã VBA và trong quá trình biên dịch phân bổ tất cả các biến được thông báo dưới dạng lỗi (trước khi thực thi mã). Áp dụng toán tử này là không khó - chỉ cần viết xuống trên cùng của tệp VBA như một chuỗi:

Tùy chọn rõ ràng.

Nếu bạn muốn luôn chèn Tùy chọn rõ ràng. Để đứng đầu mỗi mô-đun VBA được tạo mới, thì điều này có thể được thực hiện tự động. Để làm điều này, bạn phải kích hoạt tham số Yêu cầu khai báo biến Trong cài đặt của trình soạn thảo VBA.

Điều này được thực hiện như thế này:

  • Trong menu Editor Visual Basic, bấm Công cụ. > Tùy chọn.
  • Trong hộp thoại xuất hiện, mở tab Biên tập viên
  • Đánh dấu vào hộp kiểm Yêu cầu khai báo biến và hãy nhấn đồng ý

Khi chuỗi được bật Tùy chọn rõ ràng. Nó sẽ được tự động chèn vào phần đầu của mỗi mô-đun được tạo mới.

Phạm vi biến và hằng số

Mỗi biến khai báo hoặc hằng số có khu vực hành động hạn chế, nghĩa là một phần giới hạn của chương trình trong đó biến này tồn tại. Phạm vi phụ thuộc vào nơi khai báo của một biến hoặc hằng số đã được thực hiện. Lấy, ví dụ, biến svat_rate.được sử dụng trong hàm. Tổng chi phí.. Bảng sau thảo luận về hai biến thể của biến svat_rate., được công bố ở hai vị trí khác nhau trong mô-đun:

Tùy chọn Dim Svat_rate rõ ràng dưới dạng Total_cost () dưới dạng ... Chức năng kết thúc

Nếu biến svat_rate. khai báo ở đầu mô-đun, sau đó khu vực của hành động của biến này sẽ là toàn bộ mô-đun (I.E. Biến svat_rate. sẽ được công nhận bởi tất cả các thủ tục trong mô-đun này).

Do đó, nếu trong chức năng Tổng chi phí. Biến đổi svat_rate. Một số giá trị sẽ được gán, chức năng sau, được thực hiện trong cùng một mô-đun, sẽ sử dụng biến svat_rate. Với cùng một ý nghĩa.

Tuy nhiên, nếu một số chức năng được gọi, nằm trong một mô-đun khác, thì đối với biến nó svat_rate. sẽ không được biết đến.

Tùy chọn Chức năng rõ ràng Total_cost () là Double Dim Svat_rate dưới dạng ... Chức năng kết thúc

Nếu biến svat_rate. khai báo ở đầu chức năng Tổng chi phí., sau đó phạm vi của nó sẽ chỉ bị giới hạn bởi chức năng này (I.E. Trong hàm Tổng chi phí.có thể sử dụng biến svat_rate., và bên ngoài của nó - không).

Khi cố gắng sử dụng svat_rate. Trong một thủ tục khác, trình biên dịch VBA sẽ báo cáo lỗi, vì biến này chưa được khai báo bên ngoài chức năng Tổng chi phí. (với điều kiện là người vận hành được sử dụng Tùy chọn rõ ràng.).

Trong ví dụ trên, biến được khai báo ở cấp độ mô-đun với một từ khóa Lờ mờ. Tuy nhiên, điều cần thiết là các biến được khai báo có thể được sử dụng trong các mô-đun khác. Trong những trường hợp như vậy, để thông báo biến thay vì từ khóa Lờ mờ Cần sử dụng từ khóa Công cộng.

Nhân tiện, để khai báo một biến ở cấp độ mô-đun, thay vì từ khóa Lờ mờ Bạn có thể sử dụng một từ khóa Riêng tưĐiều này sẽ chỉ ra rằng biến này chỉ dành để sử dụng trong mô-đun hiện tại.

Để khai báo các hằng số, bạn cũng có thể sử dụng từ khóa Công cộngRiêng tưnhưng không thay vì một từ khóa Hăng sô., và với anh ta.

Các ví dụ sau đây cho thấy việc sử dụng từ khóa. Công cộngRiêng tư Trong áp dụng cho các biến và hằng số.