• Trang chủ
  • Giới thiệu
    • Học gia sư kế toán tại Hà Nội
  • Excel
  • Kế toán
  • Kinh nghỉệm
  • DAX
  • VBA
  • Văn bản
  • Access
  • Liên hệ
    • Chính sách bảo mật
Chủ Nhật, Tháng Ba 26, 2023
  • Login
No Result
View All Result
NEWSLETTER
Học gia sư kế toán
  • Trang chủ
  • Giới thiệu
    • Học gia sư kế toán tại Hà Nội
  • Excel
  • Kế toán
  • Kinh nghỉệm
  • DAX
  • VBA
  • Văn bản
  • Access
  • Liên hệ
    • Chính sách bảo mật
  • Trang chủ
  • Giới thiệu
    • Học gia sư kế toán tại Hà Nội
  • Excel
  • Kế toán
  • Kinh nghỉệm
  • DAX
  • VBA
  • Văn bản
  • Access
  • Liên hệ
    • Chính sách bảo mật
No Result
View All Result
Học Gia sư Kế toán
No Result
View All Result

Khai báo hàm Private và Public trong VBA

by My Lê
20/02/2023
in VBA
0
Khai báo hàm Private và Public trong VBA

Originally posted on 12/02/2022 @ 21:38

Khai báo hàm Private và Public trong VBA

  • Chuyên mục:
  • Excel VBA∙VBA

Trong bài viết này, Học Gia Sư Kế Toán sẽ giới thiệu với bạn cách khai báo hàm Private và hàm Public trong VBA.

Ý nghĩa thực sự của Private và Public

Trong VBA, khái niệm Private và Public ám chỉ việc khai báo phương thức truy cập giá trị khác mà chúng được gán cho. Giả sử ví dụ Private đại diện cho một công ty tư nhân và Public đại diện cho một công ty đại chúng. Khi bạn muốn tìm kiếm thông tin liên quan đến công ty tư nhân, bạn gần như sẽ không thể thấy gì cả bởi vì chỉ có những người đặc biệt mới có quyền được biết về các thông số sức khỏe tài chính của công ty. Ngược lại, nếu ta muốn biết chi phí khấu hao của một công ty cỡ Microsoft, việc tìm kiếm chỉ trong nháy mắt bởi vì đây là một công ty đại chúng và tất cả mọi người đều có thể tiếp cận được với các báo cáo tài chính của công ty. Trong VBA, việc sử dụng hai hàm Private và Public cũng có những nét tương đồng như vậy.

Phần lớn hai hàm này được dùng để khai báo phạm vi giá trị của một biến số hay một hàm thủ tục. Đối khi hàm Dim cũng được dùng để khai báo biến số. Khi đó, ta có thể coi Dim ở đây giống với Private vậy, tuy nhiên mỗi hàm sẽ có một chức năng khác nhau và được sử dụng vào từng trường hợp khác nhau.

Khái niệm về Private

Private Sub sẽ quy định phạm vi cho phép của một hàm thủ tục sao cho các hàm thủ tục khác không thuộc một mô-đun lệnh sẽ không thể kích hoạt được hàm thủ tục đó. Nói cách khác, một hàm thủ tục nằm trong mô-đun 1 sẽ không thể kích hoạt được một hàm Private Sub thuộc mô-đun 2 (Lưu ý: Nếu như bạn bắt đầu từ bước Application, bạn có thể sử dụng lệnh Run để chép đè lên quy tắc trên và từ đó có thể truy cập Private Sub như bình thường).

Private [chèn tên biến số ở đây] là lệnh quy định rằng biến số đó sẽ không thể truy xuất hoặc được sử dụng bởi bất kỳ hàm thủ tục nào trong các mô-đun khác. Để có thể sử dụng được nó, bạn phải khai báo biến ấy nằm bên ngoài hàm thủ tục (tức là có thể ở phần đầu tiên trong mô-đun lệnh). Dạng biến số này trở nên hữu ích khi bạn có một giá trị biến được xuất từ một hàm thủ tục và bạn muốn chuyển giá trị ấy sang một hàm khác trong cùng một mô-đun lệnh.

Dim [chèn tên biến số ở đây] là lệnh quy định phạm vi hoạt động bên trong một hàm thủ tục (bạn không thể dùng hàm Private để thay thế). Dim có thể được dùng ở trong cũng như ở ngoài phạm vi nội dung hàm thủ tục (khi được sử dụng ở ngoài nội dung hàm thì Dim sẽ có chức năng hoạt động tương tự với Private).


VBA101 92019 nho

Khái niệm về Public

Public Sub có nghĩa là hàm thủ tục của bạn có thể được kích hoạt bởi một hàm khác trong một mô-đun khác. Public là phạm vi mặc định cho tất cả các hàm cho nên bạn không cần thiết phải điền từ “public” trước từ “sub”. Tuy vậy, việc này giúp người đọc có thể dễ dàng phân biệt hơn. Thường thì ta sẽ ghi đầy đủ là “Public Sub” nếu như chuỗi lệnh trở nên quá phức tạp do chứa nhiều hàm thuộc nhiều phạm vi khác nhau.

Public [chèn tên biến số ở đây] là lệnh quy định rằng biến số đó có thể truy xuất hoặc được sử dụng bởi bất kỳ hàm thủ tục nào trong các mô-đun khác. Để có thể sử dụng được nó, bạn phải khai báo biến ấy nằm ngoài hàm thủ tục (tức là có thể ở phần đầu tiên trong mô-đun lệnh). Dạng biến số này trở nên hữu ích khi bạn có một giá trị biến được xuất từ một hàm thủ tục và bạn muốn chuyển giá trị ấy sang một hàm khác trong cùng một mô-đun lệnh.

Sắp xếp private và public đồng thời

Giả sử trong ví dụ dưới đây, ta có 2 mô-đun khác nhau trong cùng 1 bảng tính Excel:

Mô-đun 1

Dim x As Integer
Public y As Integer

Sub Start_Process()

  x = 15
  y = 12

  Call Print_Values

End Sub

‘=========================================================

Private Sub Display_Message()

  MsgBox “We ran all three subroutines!”

End Sub

Mô-đun 2

Sub Print_Values()

Debug.Print x
Debug.Print y

Call Display_Message

End Sub

Trước khi chạy macro, ta để ý thấy có 2 biến số x và y được khai báo bên ngoài hàm thủ tục. Điều đó có nghĩa là các macro có thể sử dụng giá trị của 2 biến này. Biến x nằm trong phạm vi giá trị riêng tư, vì thế chỉ những hàm thủ tục thuộc cùng mô-đun với nó mới có thể truy cập giá trị x được. Ngược lại, biến y lại có phạm vi giá trị phổ thông, tức là tất cả các hàm thủ tục bất kể đến từ mô-đun nào đều có thể trích xuất giá trị của nó.

Mở đầu ta sẽ khởi chạy macro Start_Process. Macro này có tác dụng gán giá trị cho x và y rồi sau đó sẽ tiếp tục kích hoạt macro Print_Values. Ta có thể khởi chạy nó kể cả khi macro này không nằm trong cùng mô-đun lệnh, đơn giản bởi vì đây là một Public Sub.

Chuyển sang macro có tên Print_Values . Ta sẽ dùng nó để in giá trị x và y ra cửa sổ tạm thời (bằng tổ hợp phím Ctrl + G). Lưu ý rằng nếu bạn in trực tiếp giá trị của x ra thì kết quả sẽ không có gì cả. Điều này là bởi x không tồn tại trong mô-đun 2. Do đó một biến x mới sẽ được tạo ở bên mô-đun 2 và bởi vì biến mới này chưa được gán bất kỳ giá trị nào, vì thế nên khi in giá trị x ra sẽ không có kết quả.

Để ý thấy khi in các giá trị của y thì số 12 sẽ xuất hiện ở bên cửa sổ tạm thời. Lý do là bởi các hàm ở mô-đun 2 được quyền truy cập các biến phổ thông được khai báo ở bên mô-đun 1.

Dòng lệnh cuối của macro Print_Values khi chạy thì không may là sẽ xuất hiện lỗi. Lý do là vì ta đang cố gắng khởi động macro Display_Message ngay từ mô-đun 1. Do macro này được khai báo dưới dạng hàm riêng tư (Private sub), cho nên Print_Values không có quyền tự khởi chạy nó. Dưới đây là các bước để xử lý vấn đề này:

  • Xóa bỏ từ “Private” trong hàm Display_Message
  • Thay từ “Private” bằng “Public”
  • Hoặc ta có thể tiếp cận từ bước Application và đồng thời sử dụng lệnh Call, khi đó ta có thể viết lại hàm này dưới dạng Application.Run “Display_Message ” (phương pháp này có tác dụng viết đè lên lệnh cũ trong trường hợp ta vẫn muốn hàm Display_Message  là hàm riêng tư)

Đến đây bạn đã có thể bắt đầu tìm hiểu những điều thú vị của VBA được rồi. VBA giúp ích rất nhiều trong công việc: giúp bạn tăng tốc trong quá trình xử lý trên excel, giúp lập các báo cáo tự động, điều khiển các chương trình khác như Word, Power Point, Outlook… giúp biến file Excel của bạn trở thành 1 phần mềm chuyên nghiệp…

Để có thể học VBA một cách đầy đủ, có hệ thống, bạn hãy tham gia khoá học VBA101 – VBA cơ bản dành cho người mới bắt đầu của hệ thống Học Gia Sư Kế Toán. Hiện nay hệ thống đang có nhiều ưu đãi khi bạn đăng ký khóa học này. Chi tiết xem tại:


@
·
·
·
Bài viết khác của cùng tác giả

  • Tất cả
  • Python
  • SQL
  • VBA

3.000.000VND 1.800.000VND
PYXL101
Xem chi tiết

3.000.000VND 1.600.000VND
SQL100
Xem chi tiết

499.000VND 199.000VND
PY100
Xem chi tiết

Bài viết liên quan

Tạo công cụ theo dõi Portfolio tiền điện tử với Excel và Power Query

Đối tượng Range trong Excel VBA

Power Automate Desktop là gì, ứng dụng thực tế của Power Automate Desktop

Đối tượng Worksheet trong Excel VBA

Đối tượng Workbook trong Excel VBA

Đối tượng Application trong Excel VBA


Khóa học liên quan

Khóa học Tự động hóa Excel với lập trình VBA cho người mới bắt đầu
Chi tiết khóa học

Khóa học Lập trình VBA nâng cao trong Excel
Chi tiết khóa học

  

© Học Gia Sư Kế Toán. All rights reserved.

My Lê

My Lê

My Lê tên thật là Mê Ly đã có 10 năm kinh nghiệm trong ngành kế toán.

Next Post
Hướng dẫn định dạng form trong Access 2016

Hướng dẫn định dạng form trong Access 2016

Recommended

Hàm Text và các ứng dụng tuyệt vời của hàm Text trong Excel

Hàm Text và các ứng dụng tuyệt vời của hàm Text trong Excel

1 tháng ago
Sử dụng bộ lọc nâng cao trong Excel – Ví dụ và công thức vùng điều kiện

Sử dụng bộ lọc nâng cao trong Excel – Ví dụ và công thức vùng điều kiện

1 tháng ago

Tin mới nhất

    Fanpage

    • Liên hệ
    • Giới thiệu
    • Đặt quảng cáo
    Liên hệ chúng tôi qua email : hocgiasuketoan.com@gmail.com

    © 2022 Hocgiasuketoan Premium magazine by Hocgiasuketoan

    No Result
    View All Result
    • Trang chủ
    • Giới thiệu
      • Học gia sư kế toán tại Hà Nội
    • Excel
    • Kế toán
    • Kinh nghỉệm
    • DAX
    • VBA
    • Văn bản
    • Access
    • Liên hệ
      • Chính sách bảo mật

    © 2022 Hocgiasuketoan Premium magazine by Hocgiasuketoan

    Welcome Back!

    Login to your account below

    Forgotten Password?

    Retrieve your password

    Please enter your username or email address to reset your password.

    Log In