Khai báo biến trong macro (1 người xem)

Người dùng đang xem chủ đề này

ninhmoon

Thành viên tiêu biểu
Tham gia
3/3/14
Bài viết
525
Được thích
48
Mọi người giải thích dùm em khi khai báo biến đối với "Darr" nghĩa là gì?



[GPECODE=vb]
Dim vung(), dArr()
Dim i As Long, K As Long
[/GPECODE]
 
Đó là khai báo biến mảng 2 chiều kiểu Variant đó bạn.
nghĩa là: Lưu mọi dữ liệu thuộc kiểu định sẵn date. string; double, interger.. nếu không khai báo rõ ràng thì nó sẽ tự chuyển đổi dữ liệu khi gán dữ liệu đúng không.\
nhưng cái chữ Darr mình cũng chưa hiểu lắm nó thuộc luôn kiểu dữ liệu Variant sao?
 
Upvote 0
nghĩa là: Lưu mọi dữ liệu thuộc kiểu định sẵn date. string; double, interger.. nếu không khai báo rõ ràng thì nó sẽ tự chuyển đổi dữ liệu khi gán dữ liệu đúng không.\
nhưng cái chữ Darr mình cũng chưa hiểu lắm nó thuộc luôn kiểu dữ liệu Variant sao?
Có vài cách xử lý vụ khai báo khi mới làm quen VBA
1. Xóa cái dòng đầu Option Explicit. Không khai báo gì cả
2. Khai báo Dim i, j, k, Darr là được, khỏi thêm As...., hệ thống tự xử
3. Khi nào khá hơn thì học lại tại sao phải As Byte, tại sao phải As Long, tại sao phải (). Trên mạng giải thích nhiều lắm.

Cái này là theo kiểu nông dân của mình thôi nhé, chứ cao thủ đọc bài này sẽ mắng ầm lên thôi.
 
Upvote 0
nghĩa là: Lưu mọi dữ liệu thuộc kiểu định sẵn date. string; double, interger.. nếu không khai báo rõ ràng thì nó sẽ tự chuyển đổi dữ liệu khi gán dữ liệu đúng không.\
nhưng cái chữ Darr mình cũng chưa hiểu lắm nó thuộc luôn kiểu dữ liệu Variant sao?
Darr là cái tên thôi, giống như bạn lấy nick là ninhmoon đó mà. Híc
 
Upvote 0
Có vài cách xử lý vụ khai báo khi mới làm quen VBA
1. Xóa cái dòng đầu Option Explicit. Không khai báo gì cả
2. Khai báo Dim i, j, k, Darr là được, khỏi thêm As...., hệ thống tự xử
3. Khi nào khá hơn thì học lại tại sao phải As Byte, tại sao phải As Long, tại sao phải (). Trên mạng giải thích nhiều lắm.

Cái này là theo kiểu nông dân của mình thôi nhé, chứ cao thủ đọc bài này sẽ mắng ầm lên thôi.
Nhưng từ những biến khai báo trên để em muốn lọc ra các dữ liệu từ một sheet A sang môt sheet B mà cần pải khai báo biến
Nhưng hiện tại chưa hiểu gì?
Các nào sẽ nhảy sang cái nào cả

K = K + 1

dArr(K, 2) = vung(i, 2) 'Ten ngan hang
dArr(K, 3) = vung(i, 3) 'Ngay chung tu
dArr(K, 4) = vung(i, 7) 'Dien giai
dArr(K, 4) = vung(i, 8) 'Tai khoan doi ung ben no*
dArr(K, 5) = vung(i, 9) 'tai khoan doi ung ben co'
dArr(K, 6) = vung(i, 7) 'So phat sinh (Debit)
dArr(K, 7) = vung(i, 8) 'So phat sinh (Credit)
dArr(K, 8) = vung(i, 10) 'so luong
dArr(K, 9) = vung(i, 11) 'gia ban VND
dArr(K, 10) = vung(i, 12) 'gia ban USD'
dArr(K, 11) = vung(i, 13)
dArr(K, 12) = vung(i, 14)
' dArr(K, 10) = vung(i, 12
 
Upvote 0
chưa hiểu thì nên học cái từ từ đi, nghiên cứu tới đây mệt lắm, nghiên cứu cái chạy dòng dòng từ đầu tới đuôi, sau khi rành rồi hãy quay sang đây nghiên cứu tiếp, định giải thích cho bạn mà thôi. học cái này phải có đầu có đuôi thì mới nạp kiến thức vô được
 
Upvote 0
Là người không qua trường lớp bài bản, nhưng mình luôn đề ra cho mình 1 nguyên tắc là fải khi báo tường minh!


&ui 1 tí:

Darr là cái tên thôi, giống như bạn lấy nick là ninhmoon đó mà. Híc

To ConCoGia;612094: Đó không fải là cái tên thôi đâu; Nó là họ lẫn tên đó


Ví dụ dArr(1,1) là ông nội; dArr(1,2) là bà nội

dA(2,1) là ông cha,. . . . . . .
 
Upvote 0
Các nào sẽ nhảy sang cái nào cả
Cái nào sẽ nhảy sang cái nào là thuật toán, không liên quan gì đến chuyện khai báo biến cả nhé. Thuật toán thì mỗi người mỗi cách. Tùy theo tư duy của từng người. Thuật toán giống như nội công, cần phải có thời gian tu luyện.
 
Upvote 0
người mới bắt đầu thường không cần khai báo họ nghĩ khai báo chi mất công. nhưng cái đấy là 1 thói quen có thể sai rất nghiêm trọng. nhất là về kiểu dữ liệu. VBA nó tự động hiểu và ép kiểu dữ liệu đó là thế mạnh của nó, nhưng đó cũng là 1 nhược điểm chết người nếu không quản lý kỹ càng các biến. thà sai cú pháp còn biết đường sửa chứ sai con số là bó tay
 
Upvote 0
người mới bắt đầu thường không cần khai báo họ nghĩ khai báo chi mất công. nhưng cái đấy là 1 thói quen có thể sai rất nghiêm trọng. nhất là về kiểu dữ liệu. VBA nó tự động hiểu và ép kiểu dữ liệu đó là thế mạnh của nó, nhưng đó cũng là 1 nhược điểm chết người nếu không quản lý kỹ càng các biến. thà sai cú pháp còn biết đường sửa chứ sai con số là bó tay


Hiện tại e ko biết bắt đầu từ đâu, chỉ bít recode vài cái đơn giản.
Mà không thấy áp dụng được gì hết.
 
Upvote 0
Mình thì học VBA theo kiểu trẻ con học tiếng Anh.

Nếu nghe hỏi " What's your name?" thì cứ phang lại "My name's Thu Duc."
Chứ nếu phân tích What là vấn từ, 's là viết tắt của is, mà is là biến thể của to be, rồi your là tính từ sở hữu... trời ơi khiếp lắm.

Cho nên quyết định học VBA theo kiểu học vẹt cho bớt đau đầu.
 
Upvote 0
Hiện tại e ko biết bắt đầu từ đâu, chỉ bít recode vài cái đơn giản.
Mà không thấy áp dụng được gì hết.
Nếu bạn chưa đi làm thì ra tiệm mua vài cuốn về Excel & dợt với chúng;

Nếu đã có việc làm thì lấy những nhiệm vụ công việc của mình hay của bộ fận mình đem ra mà dợt
Đề tài nào thấy khó gặm thì đưa lên GPE.COM nhờ thầy cô giải;
Sau đó ngâm cứu lần lượt từng dòng lệnh của các thầy/cô với các câu hỏi thường trực là tại sao?, để làm gì? & đạt mục đích gì?. . . .
Dần dần bạn tích lũy kiến thức VBA mà thôi.

Chúc thành công!
 
Upvote 0
Nếu bạn chưa đi làm thì ra tiệm mua vài cuốn về Excel & dợt với chúng;

Nếu đã có việc làm thì lấy những nhiệm vụ công việc của mình hay của bộ fận mình đem ra mà dợt
Đề tài nào thấy khó gặm thì đưa lên GPE.COM nhờ thầy cô giải;
Sau đó ngâm cứu lần lượt từng dòng lệnh của các thầy/cô với các câu hỏi thường trực là tại sao?, để làm gì? & đạt mục đích gì?. . . .
Dần dần bạn tích lũy kiến thức VBA mà thôi.

Chúc thành công!

Hiện tại e đang làm kế toán có nhờ m
Bạn viết code cho một vài file
nên e cũng muốn mò mẫm viết các file cần thiết cho nó chạy tự động
Nhưng mà học tới đâu mắc tới đó, :D
 
Upvote 0
Hiện tại e đang làm kế toán có nhờ m
Bạn viết code cho một vài file
nên e cũng muốn mò mẫm viết các file cần thiết cho nó chạy tự động
Nhưng mà học tới đâu mắc tới đó, :D

Mình nghiệm từ cách mà 1 người cần học 1 ngoại ngữ nào đó, thì:

Có vài khâu quan trọng như sau: Đọc -> Nghe ->Viết => Nói với độ khó tăng dần.

Giờ mà bạn nhảy ngay vô 'Viết' thì tự làm khó rồi còn gì!

Bạn cần trãi qua khâu Đọc & nghe cái đã.

Bạn hãy đọc & dịnh các câu lệnh của bạn của mình & xoay nghiêng ngữa để hiểu hết đầu nguồn cuối sông chúng đi đã.

Nếu vẫn không thể hiểu thì đưa lên diễn đàn nhờ dịch.
 
Upvote 0
Mọi người giải thích dùm em khi khai báo biến đối với "Darr" nghĩa là gì?
[GPECODE=vb]
Dim vung(), dArr()
Dim i As Long, K As Long
[/GPECODE]
Đó là khai báo biến mảng 2 chiều kiểu Variant đó bạn.

Câu trả lời trên không đúng lắm. Dim dArr() chỉ là khai báo một biến dạng mảng thôi. Còn số chiều thì 1, 2, 3, ... n; bao nhiêu cũng được

nghĩa là: Lưu mọi dữ liệu thuộc kiểu định sẵn date. string; double, interger.. nếu không khai báo rõ ràng thì nó sẽ tự chuyển đổi dữ liệu khi gán dữ liệu đúng không.\
nhưng cái chữ Darr mình cũng chưa hiểu lắm nó thuộc luôn kiểu dữ liệu Variant sao?

Nếu khai báo Dim dArr() thì dArr là một mảng mà mỗi phần tử là dạng Variant
Nếu chỉ khai bào Dim dArr thì dArr là Variant. Và vì dArr là Variant cho nên muốn nó thành mảng mà mỗi phần tử là Variant như trên cũng được.
Nhưng hai cái trên không hoàn toàn như nhau.. Một khi đã khai báo dArr() rồi thì nó phải là mảng.

Tức là:
Mã:
[COLOR=#FF0000]' code này chạy được[/COLOR]
Sub t1()
Dim a [COLOR=#008000]' Variant[/COLOR]
ReDim a(1 To 2, 1 To 2, 1 To 3) [COLOR=#008000]' mảng[/COLOR]
a(1, 1, 1) = 1 [COLOR=#008000]' gán trị cho 1 phần tử[/COLOR]
a = "a"[COLOR=#008000] ' gán cho trị string[/COLOR]
End Sub

[COLOR=#FF0000]' nhưng code này không chạy được[/COLOR]
Sub t2()
Dim a() [COLOR=#008000]' mảng Variant[/COLOR]
ReDim a(1 To 2, 1 To 2, 1 To 3)[COLOR=#008000] ' mảng[/COLOR]
a(1, 1, 1) = 1 [COLOR=#008000]' gán trị cho 1 phần tử[/COLOR]
a = "a" [COLOR=#008000]' gán cho trị string ==> lỗi, không gán được[/COLOR]
End Sub
 
Upvote 0
Hiện tại e đang làm kế toán có nhờ m
Bạn viết code cho một vài file
nên e cũng muốn mò mẫm viết các file cần thiết cho nó chạy tự động
Nhưng mà học tới đâu mắc tới đó, :D

Mình nghiệm từ cách mà 1 người cần học 1 ngoại ngữ nào đó, thì:
Có vài khâu quan trọng như sau: Đọc -> Nghe ->Viết => Nói với độ khó tăng dần.
Giờ mà bạn nhảy ngay vô 'Viết' thì tự làm khó rồi còn gì!
.....

Cái khó ló cái "khôn" Thầy ạ ! cách đây khoảng 15 năm em học tại chức, môn tiếng anh em không biết đọc (đọc từng chữ cái thì được chứ ghép vào là chịu vì không đánh vần được như tiếng việt), nghe thì như vịt nghe sấm nên đừng nói gì đến viết... nhưng do biết vận dụng môn vẽ bản đồ (nhìn và vẽ theo chữ của bài bên cạnh) nên em cũng qua được. Cũng may là ở chỗ em làm việc không sử dụng đến môn này ẹc...ẹc.

To ninhmoon Vì lý do cá nhân, Tôi đồng tình với cách học của Quanghai1969. Nếu chỉ dùng Excel và mới tiếp cận với VBA thì chưa vội quan tâm đến khai báo biến (từ từ học sau), có nhiều code không cần khai báo biến vẫn sài được vì vậy hãy bắt đầu nghiên cứu từ loại code này cho vỡ vạc ra đã rồi mới tính tiếp. Chúc bạn sớm thành công !

P/s Đọc chủ đề của bạn thấy hấp dẫn quá vì tôi cũng đang mù tịt món này nhưng ý kiến của tôi ở trên là thật lòng. Nếu có gì không phải mong mọi người lượng thứ.
 
Lần chỉnh sửa cuối:
Upvote 0
[GPECODE=vb]
Range("tbl_USD[[#Headers],[2]]").Offset(2).Resize(K, 9) = dArr


[/GPECODE]

Các tiền bối có thể giải thích dùm e về hàm offset được sử dụng trong đoạn code trên không ah!
 
Upvote 0

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

Back
Top Bottom