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

be09

Member
Hội viên mới
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.
 
Sửa lần cuối:
Ðề: 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
 
Ðề: 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

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.
 
Ðề: 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!
 
Ðề: 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é
 
Ðề: 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é

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).
 
Ðề: 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!

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.
 
Ðề: 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).

mình mới tham giam d đ nên k bít, cảm ơn bạn nhé
 
Ðề: 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.

Mình làm được rồi, xin cám ơn bạn Bé nhiều nhé!
 
Ðề: 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
 
Ðề: 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

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.
 
Sửa lần cuối:
Ðề: 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.
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.
 
Ðề: 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.
 
Ðề: 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],. . .

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
 
Ðề: 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
 
Ðề: 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

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.
 
Ðề: Hỏi, đáp về lập trình VBA trong Excel.

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.

Ui giời, ai lại đi so đo thế, có câu "giúp người là giúp mình" mà.
 
Ðề: 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à.

Tại em chưa gặp trường hợp như anh nên góp ý nói anh so đo, nhưng thực tế em gặp trường hợp như anh thì cũng phải nói 1 câu như anh thôi.
Đại khái là như thế này:
Nếu giúp 1 cái gì đó đơn giản thì nói như em là đúng, anh nhất trí. Còn nếu người nào đó nhờ viết giùm 1 chương trình ứng dụng trong VBA, nếu phải bỏ công cả thứ bảy lẫn chúa nhật để làm miệt mày, nhưng khi hoàn tất gửi file cho họ sử dụng thì coi như xong việc, chẳng liên hệ, chẳng 1 lời cám ơn, hoặc góp ý để mình hoàn thiện cho tốt hơn.
Ý của anh là khi vào diễn đàn nhờ giúp 1 vấn đề gì đó nên nhấn 1 tiếng cám ơn, để động viên người giúp.

Nếu em gặp trường hợp như vậy thì em sẽ nghĩ như thế nào?????????............................................
Chắc cách nghĩ của em cũng giống như anh.
 
Sửa lần cuối:
Ðề: Hỏi, đáp về lập trình VBA trong Excel.

Em chưa nhờ Anh, em nhấn nút Thanks vì nó đáng là của anh.
Anh đừng buồn nữa nhé.
 

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Kỹ thuật giải trình thanh tra BHXH

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top