Khai biến mảng thế nào cho đúng?

  • Thread starter Thread starter sealand
  • Ngày gửi Ngày gửi
Liên hệ QC

sealand

Thành viên gạo cội
Tham gia
16/5/08
Bài viết
4,883
Được thích
7,688
Giới tính
Nam
Nghề nghiệp
Kế Toán
Mình có đoạn code như sau:
Mã:
dim d as integer
d=20
[COLOR=Red]Dim mg(d,2)[/COLOR]
.........

Khi chạy báo lỗi dòng màu đỏ. Nhờ các bạn hướng dẫn khai biến mảng trong trường hợp này thế nào cho đúng.
 
Mình có đoạn code như sau:
Mã:
dim d as integer
d=20
[COLOR=Red]Dim mg(d,2)[/COLOR]
.........

Khi chạy báo lỗi dòng màu đỏ. Nhờ các bạn hướng dẫn khai biến mảng trong trường hợp này thế nào cho đúng.

Như này được không bác
Dim mg as variant
mg = array("d", "2")
 
Lần chỉnh sửa cuối:
Upvote 0
Xin lỗi các bạn, mình tìm ra rồi. Phải viết là:
Mã:
Dim d as Integer
Dim mg()
d=20 [SIZE=1][COLOR=Green][I]'Thực tế ở đây bằng công thức xác định dòng DL[/I][/COLOR][/SIZE]
ReDim mg(d,2)
....

To ST_Lu Bạn nhầm rồi, d là biến xác định dòng của mảng chứ
 
Lần chỉnh sửa cuối:
Upvote 0
Chả biết tại sao với mãng thì đầu tiên phải khai vớ vẩn gì đó, sau đó lại ReDim.... Khai chính xác 1 lần nó cóc chịu! ---> Vụ này bị hoài
 
Upvote 0
Đúng là với kích thước mảng xác định bằng biến thì phải khai xí chỗ như vậy nó mới nghe, nếu không nó cứ đòi bằng hằng. Nhưng kích thước bằng hằng thì nó OK ví dụ Dim mg(10,2)
 
Upvote 0
Chả biết tại sao với mãng thì đầu tiên phải khai vớ vẩn gì đó, sau đó lại ReDim.... Khai chính xác 1 lần nó cóc chịu! ---> Vụ này bị hoài
Có 2 loại mảng là mảng động và mảng tĩnh.
1. Mảng tĩnh là mảng không có khả năng thay đổi số cận đầu và cận cuối. Khi khai báo phải khai báo rõ cận đầu và cận cuối của mảng ngay.
Mã:
Dim arr1(1 To 5) as string
Nếu không khai báo cận đầu thì mặc định cận đầu là 0.
2. Mảng động là mảng mà cận đầu và cận cuối có thể thay đổi. Khi khai báo không phải chỉ rõ cận đầu và cận cuối.
Mã:
Dim arr2() as string
Muốn khởi tạo mảng thì dùng lệnh Redim <Tên mảng>([Cận đầu],<Cận cuối>)
Mã:
Redim arr2(1 To 5)
Nếu không có cận đầu thì cận đầu bắt đầu từ 0. Khi khởi tạo lại mảng mà mảng đã có các phần tử thì các phần tử này sẽ bị hủy và mảng mới khởi tạo sẽ là rỗng. Nếu muốn giữ lại các phần tử cũ của mảng thì khởi tạo như sau
Mã:
ReDim Preserve arr2(1 To 5)
Dùng thêm từ khóa Preserve
 
Upvote 0
Mình vừa xong 1 ví dụ cụ thể, xin giới thiệu các bạn gần xa

PHP:
Option Base 1:          Option Explicit
Sub ResizePreserve()
 Dim StrNames() As String
 ReDim StrNames(2)
 StrNames(1) = "GPE":         StrNames(2) = ".COM"
 
 Dim aRay:                    ReDim Preserve StrNames(4)
 
 StrNames(3) = "Sinh Nhat"
 StrNames(4) = "02/07/2006"
 For Each aRay In StrNames
   MsgBox aRay
 Next aRay
End Sub
 
Upvote 0
PHP:
Option Base 1:          Option Explicit
Sub ResizePreserve()
 Dim StrNames() As String
 ReDim StrNames(2)
 StrNames(1) = "GPE":         StrNames(2) = ".COM"
 
 Dim aRay:                    ReDim Preserve StrNames(4)
 
 StrNames(3) = "Sinh Nhat"
 StrNames(4) = "02/07/2006"
 For Each aRay In StrNames
   MsgBox aRay
 Next aRay
End Sub
Ví dụ trên bị thừa mất phần tử StrNames(0) không dùng đến, phí ...
 
Upvote 0
Làm gì có phần tử đó!

Ví dụ trên bị thừa mất phần tử StrNames(0) không dùng đến, phí ...

Đốt đuốc tìm mần răng thấy chừ?!

Lí do:
Mã:
Option Base 1

& Bạn không thấy For Each . . . Next có hiện anh chàng đó đâu nào!
 
Upvote 0
Đốt đuốc tìm mần răng thấy chừ?!

Lí do:
Mã:
Option Base 1

& Bạn không thấy For Each . . . Next có hiện anh chàng đó đâu nào!
Đúng là tôi ko để ý tới cái Option trên, nhưng thường thì tôi sẽ khai báo tường minh cận đầu và cận cuối khi sử dụng. Khai báo không tường minh đôi lúc bug mờ mắt.
 
Upvote 0
Web KT

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

Back
Top Bottom