2013-05-26 39 views
15

Tôi muốn gọi một phụ từ một phụ bên trong cùng một mô-đun. Phụ đầu tiên sẽ là mã chính của tôi và ở đó tôi sẽ gọi chương trình con thứ hai. Thứ hai chương trình con nhận nhiều đầu vào như số nguyên, đôi, mảng đôi và ma trận đôi. Kích thước của mảng và ma trận được biết và được lưu trữ trong một biến số nguyên. Phụ cũng trả về một số kết quả đầu ra. Vì vậy, tôi muốn làm một cái gì đó như thế này.Excel VBA gọi phụ từ một phụ khác với nhiều đầu vào, đầu ra có kích thước khác nhau

sub Main() 
    Nc As integer 
    Dim kij(1 To Nc, 1 To Nc), xi(1 to Nc), a1 As Double 
    'I assign values to my variables from the excelsheet e.g. Nc=Cells(1,1) etc. 

    CalculateA(Nc,kij, xi, a1, a) 
    Cells(5,5)=a 
end sub 

sub CalculateA(Nc as integer,kij as matrix double, xi as array double, a as Double) 
    a=0 
    For i=1 To Nc 
     For j=1 To Nc 
      a = a + kij(i,j)*x(i)*x(j) 
     Next j 
    Next i 
    a = a*a1 
end sub 

Làm cách nào để biết phụ nào là phụ chính nơi bắt đầu chạy. Tôi có thể đặt phụ phụ trên đầu trang và mã bằng cách nào đó bắt đầu từ chương trình con dưới cùng?

+0

có thể trùng lặp của [Gọi một phụ trong VBA] (http://stackoverflow.com/questions/7715044/calling-a-sub-in-vba) – MackM

Trả lời

27

Để gọi một tiểu bên trong một tiểu bạn chỉ cần thực hiện:

Call Subname() 

Vì vậy, nơi bạn có CalculateA(Nc,kij, xi, a1, a) bạn cần phải có call CalculateA(Nc,kij, xi, a1, a)

Khi chạy vấn đề đầu tiên đó là để bạn có thể quyết định, khi bạn muốn chạy một phụ bạn có thể vào danh sách macro chọn một trong những bạn muốn chạy và chạy nó, bạn cũng có thể cung cấp cho nó một phím tắt jey và chỉ cần bấm các phím, trên subs phụ tôi thường làm như Private sub CalculateA(...) gây ra theo cách này nó không xuất hiện trong danh sách macro và nó dễ dàng hơn để làm việc

Hy vọng nó giúp, Bruno

PS: Nếu bạn có bất kỳ câu hỏi khác chỉ cần hỏi, nhưng đây không phải là một cộng đồng nơi bạn yêu cầu mã, bạn đến đây với một câu hỏi hoặc một mã mà isn' t chạy và yêu cầu giúp đỡ, không giống như bạn đã làm "Nó sẽ là tuyệt vời nếu bạn có thể viết nó ở định dạng Excel VBA."

2

Đây thực sự là hai câu hỏi.

Người đầu tiên được trả lời ở đây: Calling a Sub in VBA

Để thứ hai một, protip: không có chương trình con chính trong VBA. Hãy quên đi các ngôn ngữ mang tính thủ tục, đa năng. VBA subs là "macro" - bạn có thể chạy chúng bằng cách nhấn Alt + F8 hoặc bằng cách thêm một nút vào trang tính của bạn và gọi lên phụ bạn muốn từ phụ "ButtonX_Click" được tạo tự động.

2

VBA không có macro. Một VBA phụ có thể là một vĩ mô, nhưng nó không phải là một phải.

Thuật ngữ "macro" chỉ được sử dụng cho hành động người dùng được ghi lại. từ những hành động này, một mã được tạo ra và được lưu trữ trong một phụ. Mã này rất đơn giản và không cung cấp các cấu trúc mạnh mẽ như vòng lặp, ví dụ: Do .. cho đến khi, cho .. tiếp theo, trong khi .. làm và những thứ khác.

Cách thanh lịch hơn là thiết kế và viết mã VBA của riêng bạn mà không cần sử dụng các tính năng macro!

VBA là ngôn ngữ hướng đối tượng và sự kiện. Subs, hoặc bette gọi nó là "sub routine", được bắt đầu bởi các sự kiện chuyên dụng. Sự kiện có thể là cách nhấn nút hoặc mở sổ làm việc và nhiều sự kiện rất cụ thể khác.

Nếu bạn tập trung vào VB6 và không để VBA, sau đó bạn có thể nhà nước, rằng luôn luôn có một cửa sổ chính hoặc hình thức chính. Biểu mẫu này được bắt đầu nếu bạn bắt đầu tệp thực thi được biên dịch "xxxx.exe".

Trong VBA bạn không có gì giống như thế này, nhưng bạn có tệp XLSM được khởi động bởi Excel. Bạn có thể đính kèm một số mã vào sự kiện Workbook_Open.Sự kiện này được tạo ra, nếu bạn mở tập tin excel mong muốn của bạn được gọi là một bảng tính. Bên trong sổ làm việc bạn có bảng tính.

Có ích khi làm quen với mô hình đối tượng được gọi là excel. Sổ làm việc có một số sự kiện và phương pháp. Ngoài ra bảng tính có một số sự kiện và phương pháp.

Trong mô hình dựa trên đối tượng, bạn có đối tượng, có các sự kiện và phương pháp. phương pháp là hành động bạn có thể làm với một đối tượng. các sự kiện là những thứ có thể xảy ra với một đối tượng. Một đối tượng có thể chứa một đối tượng khác, v.v. Bạn có thể tạo các đối tượng mới, như trang tính hoặc biểu đồ.

+0

Làm thế nào để bạn tạo một chương trình con trong VBA sau đó gọi nó từ Tính năng macro của tab nhà phát triển? Nếu Excel không cung cấp khả năng này, nó sẽ thiếu sót nghiêm trọng. –

Các vấn đề liên quan