Hỏi, đáp về lập trình VBA trong Excel.

Thảo luận trong 'Excel và VBA' bắt đầu bởi be09, 9/8/12.

  1. be09

    be09 Member Hội viên mới

    Được cảm ơn:
    7
    Điểm thành tích:
    8
    Hỏi, đáp về lập trình VBA trong Excel.

    Tôi đưa ra Topic này để các bạn yêu thích về Lập trình VBA, cùng nhau trao đổi, học tập, trong quá trình trao đổi, học tập có vấn đề gì chưa học, học rồi mà chưa biết hoặc biết rồi nhưng trong quá trình thao tác còn vướng mắc (bị lỗi) trong các thao tác về lập trình VBA thì mong các bạn vần nêu câu hỏi tại Topic để cùng nhau bàn bạc, thảo luận, đóng góp để giúp nhau làm tốt công việc của mình. Câu hỏi hoặc câu trả lời mong các bạn cùng thảo luận và đóng góp chân tình để giúp nhau và cùng nhau xây dựng nên 1 diễn đàn tốt đẹp và hữu ích, chứ đừng ghen tỵ, chỉ trích nhau thì sự đóng góp đó sẽ không có ý nghĩa và làm mất đi sự đoàn kết gắn bó. Thì người bị chỉ trích tự ái không tham gia diễn đàn nữa, sẽ làm mất đi sự đóng góp cho xã hội mặc dù sự đóng góp đó là nhỏ nhoi, nhưng nhiều cái đóng góp vào sẽ làm được cái lớn lao hơn (ông bà xưa có câu góp gió thành Bão), vì vậy tôi mong các bạn dù ít, dù nhiều cùng góp ý, tham gia trên tinh thần giúp đỡ lẫn nhau và xây dựng diễn đàn ngày càng tốt đẹp và lớn mạnh hơn.

    VBA là gì?

    VBA là ngôn ngữ lập trình định hướng đối tượng cho các ứng dụng, là từ viết tắt của cụm từ (Visual Basic for Applications) .
    VBA là ngôn ngữ chung, phổ biến đằng sau tất cả các ứng dụng của Microsoft Office (Excel, Word, PowerPoint, Access và Outlook).
    Sử dụng VBA là cách nhanh nhất và tốt nhất để tự động hóa các nhiệm vụ và cũng có thể tùy chỉnh các ứng dụng của Microsoft Office. Cho dù bạn là một người mới bắt đầu hoặc một nhà phát triển VBA kinh nghiệm, bạn sẽ tìm thấy phần này cực kỳ hữu ích và cần được sử dụng.

    01. Macro là gì?

    Macro là tên gọi được sử dụng để mô tả 1 đoạn Code được sử dụng để tự động hóa các nhiệm vụ lặp đi lặp lại, mỗi macro có ứng dụng riêng của nó, ta có thể tạo Macro và được chứa trong từng cửa sổ Code của Sheet, ThisWorkbook, UserForm, Module, Class Module tùy theo mục đích mà ta ứng dụng nó vào công việc nào mà ta cần.

    02. Ghi 1 Macro:

    Muốn ghi macro thì trước tiên ta phải làm hiển thị thanh Visual Basic.

    a. Làm hiển thị thanh Visual Basic:

    Để làm hiển thi thanh Visual Basic ta thực hiện như sau: Từ cửa sổ Excel chọn View, chọn Toolbars, chọn Visual Basic, làm xuất hiện Thanh công cụ Visual Basic, click vào phần màu xanh của từ Visual Basic, giữ chuột rê lên phía trên màn hình và thả cho nó neo trên đó.

    b. Thiết lập chế độ chạy macro:

    Từ thanh Visual Basic, click vào Security... Làm xuất hiện cửa sổ Security, trong cửa sổ Security click vào thẻ Security Level, đánh dấu chọn vào Medium. You can choose whether or not to run potentially unsafe macros ……. Xong nhấn nút OK và nhấn save để lưu.

    c. Cách ghi macro:

    Từ thanh Visual Basic, click vào Record Macro (dấu chấm màu đỏ) làm xuất hiện cửa sổ Record Macro, trong khung Macro Name nó mặc định tên macro là macro 1, bạn có thể sửa và đặt tên macro lại theo từng nội dung công việc, nếu bạn muốn sử dụng tổ hợp phím tắt thì bạn gõ vào khung shortcutkey 1 ký tự nào đó (để chạy ứng dụng thì bạn nhấn Ctrl + Shift+ký tự của bạn đã gõ vào khung), khung Store macro in (lưu trữ macro trong ) nó mặc định là This Workbook hoặc nhấp vào vị trí nơi bạn muốn lưu trữ các Macro, khung Description bạn muốn ghi chú gì về ứng dụng của macro hoặc gõ tên tác giả thì gõ nội dung vào đây, xong bạn nhấn nút OK, làm xuất hiện thanh Stop Recording (hình vuông màu xanh biển), bây giờ bạn hãy thửa 1 vài thao tác cộng, trừ hoặc chọn Font chữ, cỡ chữ, to màu và cho chữ đậm lên, xong bạn nhấn vào nút hình vuông nhỏ màu xanh là nút Stop Recording.

    Bây giờ để xem vừa rồi ghi Macro nó chứa Macro ở đâu bạn vào nút hình vuông màu đỏ (Visual Basic Editor) của thanh Visual Basic hoặc nhấn nút Alt+F11 để mở cửa sổ Visual Basic Editor, trong cửa sổ Project - VBA Project bạn sẽ thấy Module1 bạn hãy click đúp chuột vào nó hoặc click phải chuột chọn View Code, cửa sổ Code mở ra bạn sẽ thấy được những thao tác bạn vừa thực hiện Macro đã ghi đầy đủ các nội dung bằng những dòng Code.

    Lưu ý:

    - Phím tắt vừa thực hiện sẽ ghi đè lên bất kỳ mặc định phím tắt tương đương với Microsoft Excel khi bảng tính có chứa macro (đối với File bạn có tạo phím tắt).

    - Khi bạn click vào X (close) của thanh Stop Recording sẽ đóng thanh Stop Recording và khi bạn thực hiện Record Macro 1 macro thì nó sẽ không hiện ra nữa, để làm cho nó hiện ra từ cửa sổ Excel chọn View, chọn Toolbars, chọn Customize…Làm xuất hiện cửa sổ Customize bạn chọn thẻ Toolbars, trong khung Toolbars kéo thanh cuộn xuống tìm và đánh dấu chọn vào Stop Recording, xong click vào nút Close là xong.

    - Khi mở bất kỳ 1 File có chứa Macro nó sẽ xuất hiện cửa sổ Security Warning, bạn nhấn vào nút Enable Macros để mở File.
     
    Chỉnh sửa cuối: 9/8/12
  2. phungnt

    phungnt Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    6
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Chào Anh Bé
    Đọc topic này rất hay hy vọng sẽ bổ ích cho những ai yêu thích.
    hiện nay em cũng đang rất quan tâm trong lĩnh vực này. em muốn ghi dữ liệu từ form vào cell thì như thế nào vậy Anh
     
  3. be09

    be09 Member Hội viên mới

    Được cảm ơn:
    7
    Điểm thành tích:
    8
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Em làm được cái gì rồi, Up File lên anh xem rồi anh bổ sung code vào trong File và em thực hành trên File gốc của em vừa học vừa thực hành thì dễ hiểu và cụ thể hơn, vì nó liên quan đến nhiều thứ mà không có File thì không thể giải thích cụ thể từng thứ được.
     
  4. vanhoalu

    vanhoalu New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Chào bạn Bé!
    Tôi có viết được chương trình tự động trên VSB trong Excel nhưng không biết cách làm cho người khác không nhìn thấy hoắc mở được mã code.
    Xin nhờ bạn chỉ cách làm cho không nhìn thấy hoặc mở được mã code như nêu trên. Xin cám ơn!
     
  5. meo_hen

    meo_hen New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    chào mọi ng, m có mấy câu hỏi về excel muốn mọi ng trả lời cho m giúp nhưng k biết cách tạo chủ đề mới trên diễn đà ntn? có bạn nào chỉ giùm m cách tạo chủ đề mới giúp m với.
    tiện đây m muốn hỏi mọi ng xem bít trả lời giúp m nhé:
    nếu chức vụ là giám đốc thì phụ cấp là 50.000
    nếu chức vụ là PGD hay TP thì phụ cấp là 40.000
    nếu chức vụ là PP hay KT thì phụ cấp 30.000
    nếu chức vụ là NV và có ngày công >=25 ngày thì phụ cấp 10.000
    còn lại k có phụ cấp

    m dùng hàm if nhưng tính mãi k đc,hix,toàn bị lỗi #name thôi.m cũng không giỏi excel nên giờ ngồi mầy mò mãi cũng không ra
    bạn nào biết giúp m với nhé m cảm ơn nhìu nhìu nhé
     
  6. be09

    be09 Member Hội viên mới

    Được cảm ơn:
    7
    Điểm thành tích:
    8
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Câu hỏi này bạn hỏi ở đây là phạm quy, topic này chỉ hỏi về lập trình nên không ai trả lời cho bạn, bạn nên hỏi ở phần Excel căn bản vì bạn hỏi về hàm (dùng hàm if).
     
  7. be09

    be09 Member Hội viên mới

    Được cảm ơn:
    7
    Điểm thành tích:
    8
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Mở Excel, nhấn Alt+F11 để mở cửa ổ VBE và vào Tools > VBAProject Properties…Xuất hiện cửa sổ VBAProject - Project Properties chọn thẻ Protection, đánh dấu chọn vào Lock Project for viewing gõ Passsword vào 2 khung bên dưới và nhấn OK là hoàn tất, nhấn Alt+F11 để trở về bảng tính và nhấn Save.
     
  8. meo_hen

    meo_hen New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    mình mới tham giam d đ nên k bít, cảm ơn bạn nhé
     
  9. vanhoalu

    vanhoalu New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Mình làm được rồi, xin cám ơn bạn Bé nhiều nhé!
     
  10. phungnt

    phungnt Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    6
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Anh Bé ơi
    Hiện nay em gặp trường hợp như thế này. em có hay workbook khác nhau.
    Workbook 1: có chưa sheet1, sheet2, sheet3
    Workbook 2: dùng để tổng hợp số liệu của 3 sheet1,2,3 của Workbook1 và trên sheet 1 của workbook2 có 3 nút nhấn của sheet1,2,3. Khi em vào workbook2 để em nhập dữ liệu thì em chọn nút nhấn 1 thì sheet1 của workbook1 hiện lên -> khi đó em fill data trên sheet 1 của workbook1 -> khi nhập xong data trên sẽ tự động bỏ vào sheet 1 của workbook 2.

    Thanks Anh
     
  11. be09

    be09 Member Hội viên mới

    Được cảm ơn:
    7
    Điểm thành tích:
    8
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Em nêu anh chưa hiểu, tại sao phải dùng đến 2 Workbook (cần giải thích rõ), theo anh chỉ dùng 1 cái Workbook, trong đó 1 sheet dùng tổng hợp 3 sheet còn lại và tại sheet tổng hợp tạo 3 cái Shapes tạo link đến các sheet, muốn đến sheet nào thì click vào Shapes nó tự di chuyển đến sheet đó.
    Hoặc có thể tạo 1 sheet chứa dữ liệu còn các sheet khác dùng để phân loại và dùng Validation tạo 1 Lít dùng chọn 1 loại nào đó nó tự động phân tích dữ liệu đó ra, cũng có thể dùng PivotTable dể tổng tổng hợp và phân tích dữ liệu, chưa hiểu ý em nên anh chẵng biết dùng giải pháp nào, nêu muốn cụ thể hóa thì em gửi File dữ liệu qua cho anh và nêu nội dung cụ thể trong đó anh mới biết được.
     
    Chỉnh sửa cuối: 21/8/12
  12. phungnt

    phungnt Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    6
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Hi Anh
    Dạo này em bạn quá ko vào. Thanks anh đã gợi ý em đang làm cái file trong 1 workbook khi nào xong em post lên để anh xem. Khi nào anh rãnh anh làm dùm em file kia nha.
     
  13. levanninh

    levanninh Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    6
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Hix, mình có mua sách liên quan đến vấn đề này, nhưng chưa có bài tập để thực hành và cũng chưa biết làm thế nào. Mọi người ai có bài tập thì up lên để mọi người cùng làm.
     
  14. TQChanh

    TQChanh Member Hội viên mới

    Được cảm ơn:
    1
    Điểm thành tích:
    6
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Bạn hãy cho biết ngành đang làm của bạn hay ngành đang học của bạn

    /(hi ấy đảm bảo bài tập sẽ giúp ích bạn hơn!

    Trước mắt bạn thử lấy 1 trang tính làm form nhập dữ liệu vô 1 trong 3 CSDL sau:

    (1) Nhân sự [STT], [MaNV], [HoDem], [Ten], [NgaySinh], [HSL] (hệ số lương), [BacLuong], [NgachLuong],. . .

    (2) [STT], [MaHg], [TenHang], [DVT], [SoLuong], [DonGia], [TTien],. . .

    (3) [Ngay],[SoCT], [MaCT], [DienGiai], [TKNo], [TKCo], [SoTienFS],. . .
     
  15. levanninh

    levanninh Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    6
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Hihi, em cũng biết chút về kế toán. Hi, anh đưa bài tập kèm theo đáp án luôn nhé (nhưng mờ bài tập từ dễ nhất anh nhé :D), vì vấn đề này em tự tìm hiểu nên cũng chưa biết bắt đầu từ đâu
     
  16. be09

    be09 Member Hội viên mới

    Được cảm ơn:
    7
    Điểm thành tích:
    8
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Bài tập kèm theo, bài này em tự tìm hiểu.
    http://www.danketoan.com/forum/excel-va-vba/tao-1-sheet-nhu-form-de-nhap-lieu.181709.html
     
  17. TQChanh

    TQChanh Member Hội viên mới

    Được cảm ơn:
    1
    Điểm thành tích:
    6
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Bắt đầu từ việc nhập liệu bạn à!

    (Mình thì không rõ ngành kế toán của bạn lắm); Nhưng lâu n ay bạn nhập liệu "bằng tay" (thủ công là như thế nào?)

    Thí dụ các trường (cột) để bạn nhập số liệu mới vô đó.
    Bạn hãy đưa mô tả hay hình ảnh đó lên đây để chúng ta tiếp tục.

    (Mình muốn rằng bạn học đến đâu là hành luôn đến đó luôn & bạn đừng cho là mình đòi hỏi quá đáng nha.)

    Thân! :sorrynha:
     
  18. phungnt

    phungnt Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    6
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Dear Anh Bé
    Dạo này anh ẩn hả không thấy anh viết bài? Em đang có 1 vấn đề như sau.
    Em muốn viết 1 đoạn code khi mở file lên nó sẽ tự động khóa pass cho các sheet cần khóa.

    Thanks Anh
     
  19. be09

    be09 Member Hội viên mới

    Được cảm ơn:
    7
    Điểm thành tích:
    8
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Muốn khóa thì phải có tên các sheet cần khóa (vì có sheet khóa, sheet không khóa).
    Cái này trong Excecl cũng có sẳn rồi sao em không dùng cho tiện. Muốn khóa sheet nào thì vào Tools > Protection > Protect Sheeet nhập Password xong nhấn OK và nhập tiếp Password y như lần đầu và nhấn OK là hòan tất.
    Máy nhà anh thời gian gần đây vào các diễn đàn khác thì không sao, nhưng diễn đàn kế toán thì không vào được với lại anh thấy anh em trên diễn đàn chỉ biết hỏi mà thiếu sự động viên cho người trả lời nên anh cũng hết thiện chí, vì vậy thời gian gần đây anh dùng nhiều thời gian cho việc nghiên cứu để nâng cao kiến thức sẽ bổ ích hơn là trả lời trên diễn đàn.
     
  20. pqhung091965

    pqhung091965 Member Hội viên mới

    Được cảm ơn:
    28
    Điểm thành tích:
    8
    Ðề: Hỏi, đáp về lập trình VBA trong Excel.

    Ui giời, ai lại đi so đo thế, có câu "giúp người là giúp mình" mà.
     

Chia sẻ trang này

XenForo Add-ons by Brivium ™ © 2012-2013 Brivium LLC.