Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 20
  1. #1
    Ngày tham gia
    Nov 2015
    Bài viết
    15

    Lập trình VBA nhập môn

    Xây dựng cấu trúc chương trình

    Khi xây dựng các đề án với Visual Basic For Application bạn phải chia các công việc nhập, tính toán, xuất sao cho càng rõ ràng, rành mạch càng tốt. Các công thức dùng cho nhập và xuất tôi đã trình bày ở bài trước, còn phần quan trọng là phải viết phần tính toán, trung tâm xử lý một chương trình Visual Basic For Application.

    Thông thường với Visual Basic các thủ tục được tiến hành tuần tự theo các dòng mà bạn lập trình. Nhưng nhiều khi lại tuỳ vào một điều kiện mà bạn có thể xử lý A, hay xử lý B, hoặc lặp đi lặp lại một xử lý C nào đó. Ta phải nghiên cứu các cấu trúc công thức để hiểu. Một số cấu trúc thường gặp trong Visual Basic tôi chỉ nói qua, nhưng cấu trúc nào không có ở Visual Basic tôi xin phép được nói sâu hơn một chút.

    Visual Basic For Application xử lý có hơi khác so với Visual Basic ở một số cấu trúc. Trước tiên ta hãy liệt kê câu trúc hay sử dụng lập trình ra đã. Nếu bạn đã quen với Visual Basic bạn có thể bỏ qua, nếu bạn mới làm quen với Visual Basic bạn nên xem kỹ phần này. Trong bài viết, để người đọc dễ hiểu tôi đặt tên biến hơi dài. Khi lập trình bạn nên đặt ngắn gọn dễ hiểu, dễ nhớ để rút ngắn thời gian.Các biến bạn nên đặt tên gợi nhớ bằng Tiếng Việt không dấu để tiện kiểm tra. Đừng thể hiện bằng cách đặt tên biến bằng từ Anh nếu bạn không thạo tiếng Anh lắm. Những nhà lập trình gỏi thường đặt tên biến bằng từ Việt, họ chỉ đặt bằng từ Anh khi bí từ hoặc khi copy đoạn mã nguồn từ các chương trình mẫu của Microsoft.

    1. Cấu trúc IF THEN ELSE (Nếu... thì.... ngược lại)

    Điều kiện là một biến logic đúng sai. Nếu phức tạp bạn nên tạo một biến logic để đặt vào cấu trúc. Đừng đưa cả biểu thức logic làm điều kiện, vì đó là kiểu cách lập trình rối, nếu quen sẽ không làm được việc lớn.

    IF <Điều kiện> THEN
    Công việc A - Là công việc sẽ thực hiện khi điều kiện đúng.
    ELSE
    Công việc B - Là công việc sẽ thực hiện khi điều kiện sai.
    END IF

    Tuy nhiên bạn có thể sử dụng hàm IIF ( Điều kiện, Giá trị khi điều kiện đúng, Giá trị khi điều kiện sai) để gán giá trị cho một biến.

    Ví dụ: KetQuaThi = IIF(DuDiemVaKhongBiLiet, "Đỗ", "Trượt")
    Đôi khi bạn có thể lồng vào trong cấu trúc IF dạng ElseIF (Lưu ý viết liền)

    Ví dụ:

    Gioi = (Tongdiem>=8-)
    Kha = (TongDiem>=6.5) AND (TongDiem<8-)
    TB = (TongDiem>=5) AND (TongDiem<6.6)
    Kem = (TongDiem<5)

    IF Gioi Then

    Thuong = "Xe đạp"

    ELSEIF KHA THEN

    Thuong="Cặp sách"

    ELSEIF TB THEN

    Thuong = "Trông nhà"

    ELSE

    Thuong = "Ăn đòn"

    END IF


    2. Cấu trúc SELECT CASE (Chọn trường hợp)

    SELECT CASE <Điều kiện>

    CASE Giá trị 11, giá trị 12..., giá trị 1n
    Công việc A1 - Là công việc sẽ thực hiện khi điều kiện bằng các giá trị trên
    CASE Giá trị 21, giá trị 12..., giá trị 2n
    Công việc A2 - Là công việc sẽ thực hiện khi điều kiện bằng các giá trị trên
    .....
    CASE Giá trị m1, giá trị m2..., giá trị mn
    Công việc Am - Là công việc sẽ thực hiện khi điều kiện bằng các giá trị trên
    CASE ELSE
    Công việc B - Là công việc sẽ thực hiện khi điều kiện khác tất cả giá trị trên
    END SELECT


    Trong đó điều kiện là một biến. Các giá trị liệt kê theo từng trường hợp mà làm các công việc khác nhau.

    Nhưng ta có thể không liệt kê ra trong các trường hợp bằng dòng CASE như trên mà có thể dùng một số từ khoá sau:

    CASE IsNull trường hợp điều kiện không có giá trị.
    Case Is >100 trường hợp điều kiện là số >100
    Case 100 to 200 trường hợp điều kiện là số từ 100 - 200

    Bạn có thể sử dụng hàm CHOOSE nếu điều kiện của bạn là các số nguyên dương để gán giá trị cho biến ví dụ:

    GiaiThuong = CHOOSE (KetQua, "Đi Mỹ", "Đi Úc", "Đi Đài Loan")

    Tuỳ theo biến kết quả trên phải là các số nguyên dương 1, 2, 3... mà biến Giải thưởng nhận được giá trị tương ứng.

    Bạn cũng có thể sử dụng hàm Switch để bật chuyển cho nhanh theo công thức sau khi thiết kế hàm.

    Function ThuDo (Nuoc as String) as String
    Bien= Switch(Bthức 1, Giá trị 1,Biểu thức 2, Giá trị 2......Biểu thức n, Giá trị n)

    Ví dụ:

    Function ThuDo (Nuoc as String) as String
    KetQua = SWITCH (Nuoc="Mỹ", "Oa sinh tơn", Nuoc="Trung Quốc", "Bắc Kinh"...., Nuoc ="Campuchia", "Pnôm pênh")
    ThuDo = KetQua
    End Function


    3. Cấu trúc lặp FOR EACH Biencon IN BienTongHop NEXT


    FOR EACH Biencon IN BienTongHop

    Công việc cho biến con đại diện cho tất cả các phần tử trong biến tổng hợp
    NEXT

    Biến con là 1 phần tử của biến tổng hợp là một tập hợp. Như ô với vùng, như ký tự với chuỗi, như nút lệnh với thanh công cụ....

    Khi lặp đi lặp lại đối với từ phần tử cho đến hết các phần tử ta đưa công việc vào trong vòng lặp để Visual Basic For Application thực hiện lặp lần lượt tới từng phần tử thông qua một tên biến đại diện.

    Ví dụ:

    Function TONGLAPPHUONG(VungDL)
    Dim KetQua, OHienTai, OHienTaiLaSo
    FOR EACH OHienTai IN VungDL
    OHienTaiLaSo = IsNumeric(OHienTai)
    IF OHienTaiLaSo Then
    KetQua = KetQua + OHienTai^3
    End If
    Next
    TONGLAPPHUONG = KetQua
    End Function


    Thông thường đối với các ô của Excel thường sử dụng các hàm sau để kiểm tra dạng dữ liệu trong biến.

    IsDate (Biến) - Kiểm tra xem biến có phải dạng ngày không.
    IsNumeric (Biến) - Kiểm tra xem biến có phải dạng số không.
    IsString (Biến) - Kiểm tra xem biến có phải dạng chuỗi không.
    IsArray (Biến) - Kiểm tra xem biến có phải dạng mảng không.
    IsMissing (Biến) - Kiểm tra xem biến có được truyền từ ngoài vào không.
    IsNull (Biến) - Kiểm tra xem biến đã nhập dữ liệu chưa.


    Trong vòng lặp có thể sử dụng Exit For để chấm dứt vòng lặp khi ta kiểm tra điều kiện.


    3. Cấu trúc lặp FOR ........ NEXT

    For Biến_đếm = Giá trị đầu TO Gía trị cuối (STEP)

    Công việc cho các trường hợp có liên quan đến biến đếm.
    Next
    Vòng lặp này ta đã quá quen thuộc trong Visual Basic, nó lặp đi lặp lại các công việc một số lần xác định trừ khi ta cho nhảy ra khỏi vòng lặp bằng Exit For. Bạn có thể gặp đầy rẫy ví dụ của nó.


    4. Vòng lặp không xác định:


    Dùng để lặp lại chừng nào (While) điều kiện vẫn đúng, hay lặp lại cho đến khi (Until) điều kiện đúng. Vòng lặp cũng quá quen thuộc trong Visual Basic.
    Do [{While | Until} điều_kiện]
    Các công việc A
    [Exit Do]
    Các công việc B
    Loop
    Hoặc có thể dùng:
    Do
    Các công việc A
    [Exit Do]
    Các công việc B
    Loop [{While | Until} điều kiện]

    Vòng lặp sau tương tự, nhưng trong Visual Basic For Application:
    While điều kiện
    Các công việc A
    Wend

    Các công việc sẽ thực hiện khi điều kiện đang đúng. Điều này bắt buộc phải cẩn thận vì không có dạng Exit khỏi vòng lặp.

    Nguyễn Phương Thảo - 525 - Điện Biên - Thị xã Yên Bái
    Trung tâm Dạy nghề và Phổ cập Tin học Miền núi ABC

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    34
    cần hướng dẫn

    các anh/chị hiểu biết về VBA xin vui lòng hướng dẫn giúp em (một ng mới tìm hiểu VBA):
    - cách đánh tiếng việt trong VBA để khi chạy hàm thì ko báo lỗi. (em dùng unicode gõ TV nhưng vẫn ko hiện ra chữ TV, chỉ thấy dấu "?")
    - cách xóa Module đã tạo.
    hy vọng em sẽ sớm nhận được các hướng dẫn của mọi người.
    thành thật cảm ơn
    chúc mọi người vui vẻ

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi racheltr
    các anh/chị hiểu biết về VBA xin vui lòng hướng dẫn giúp em (một ng mới tìm hiểu VBA):
    - cách đánh tiếng việt trong VBA để khi chạy hàm thì ko báo lỗi. (em dùng unicode gõ TV nhưng vẫn ko hiện ra chữ TV, chỉ thấy dấu "?")
    - cách xóa Module đã tạo.
    hy vọng em sẽ sớm nhận được các hướng dẫn của mọi người.
    thành thật cảm ơn
    chúc mọi người vui vẻ
    Theo mình biết VBA không hỗ trợ tiếng việt nên bạn ko thể dùng Unikey hay việtkey để đánh trực tiếp vào dc.

    Để xóa module bạn chỉ cần nhấn atl-f11 và chọn remove module.

    Mình chỉ biết có vậy, các bạn cho ý kiến nhé :cheers2::cheers2:

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Lập trình VBA nhập môn

    Chào tất cả các thành viên của diễn đàn!Minh đang cần tài liệu về lập trình VBA.Mình cần sự giúp đỡ tài liệu từ các bạn!Cảm ơn!

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    cảm ơn bạn tài liệu rất hữu ích cho minh

  6. #6
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Lập trình VBA nhập môn

    Em có lỗi này mong các anh giúp

  7. #7
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Lập trình VBA nhập môn

    có ai có tài liệu VBA không gửi cho mình với, đang cần để học: quachhuypro@gmail.com cảm ơn mọi người nhỉu

  8. #8
    Ngày tham gia
    Aug 2015
    Bài viết
    14
    Ðề: Lập trình VBA nhập môn




    Trích dẫn Gửi bởi quachhuyprp
    có ai có tài liệu VBA không gửi cho mình với, đang cần để học: quachhuypro@gmail.com cảm ơn mọi người nhỉu
    Tài liệu đây, Lập trình VBA phần 01, tải File theo link:
    H??ng d?n VBA ph?n 1.doc - File Shared from Box - Free Online File Storage

  9. #9
    Ngày tham gia
    Aug 2015
    Bài viết
    11
    Ðề: Lập trình VBA nhập môn




    Trích dẫn Gửi bởi be09
    Tài liệu đây, Lập trình VBA phần 01, tải File theo link:
    H??ng d?n VBA ph?n 1.doc - File Shared from Box - Free Online File Storage
    Cảm ơn nhé! post tiếp các phần sau đi bạn

  10. #10
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Lập trình VBA nhập môn Phần 2




    Trích dẫn Gửi bởi phamhoc
    Cảm ơn nhé! post tiếp các phần sau đi bạn
    Tài liệu hướng dẫn VBA phần 2. Bạn tải hướng dẫn và File bài tập theo Link sau:
    https://www.box.com/s/8fr3n9jf1g4guhbhndnx

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •