2013-06-21 37 views
13

Tôi chỉ đăng bài này vì tôi không thể tìm thấy giải pháp ở bất cứ đâu. Cuối cùng tôi đã tìm nó ra. Loại ngớ ngẩn thực sự.Macro truy cập MS RunCode không thể tìm thấy thủ tục của tôi

Khi sử dụng thuộc tính RunCode trong Macro truy cập, tôi đã cố gắng chạy một Tiểu từ mô-đun chung của mình. Tôi đã nhận được lỗi "Biểu thức bạn đã nhập có tên hàm mà cơ sở dữ liệu không thể tìm thấy." Tôi không thể tìm ra vấn đề là gì. Tôi làm theo các lời khuyên của tất cả mọi người đã đăng về vấn đề này, đó là chủ yếu như sau:

  1. sử dụng() ở phần cuối của tên thủ tục
  2. KHÔNG sử dụng "=" trước tên thủ tục

Vẫn không hoạt động!

Trả lời

27

THEN Tôi đọc kỹ thông báo lỗi. Nó đề cập rằng nó không thể tìm thấy tên FUNCTION. Rõ ràng, tài sản RunCode đặc biệt yêu cầu một "chức năng" không phải là một phụ. Vì vậy, tôi chỉ đơn giản là thay đổi Sub của tôi thành chức năng và nó hoạt động tốt!

Hy vọng điều này sẽ hữu ích.

+2

Gosh, điều này đã khiến tôi điên rồ nửa ngày! Tôi không sử dụng để truy cập lập trình, và chỉ cần một chút mã để bao gồm. không có lỗi, nhưng "subs" của tôi thậm chí không hiển thị trong bộ chọn (chỉ báo khác là cái gì đó sai) .Chỉ cần thay thế "Sub" bằng "Function" thực sự đã giải quyết được vấn đề! Không cần phải nói rằng "MS Access (context)) Trợ giúp "thậm chí không thể chỉ hướng ... – Izzy

+2

Chỉ muốn cho bạn biết rằng năm sau đó, điều này vẫn tiết kiệm thịt xông khói của mọi người – Hambone

+0

Cảm ơn. Tôi thấy không cần phải trả lại bất cứ điều gì hoặc có một defa loại ult. Bạn chỉ có thể thay thế từ "Sub" bằng từ "Function". – durette

1

Tôi gặp sự cố tương tự với thông báo lỗi. mã VBA của tôi đã khai báo như sau:

private function MyFunction() 

.... 

end function 

Tôi đã gỡ bỏ private khai để có được những Macro Runcode để thực hiện MyFunction()

Ví dụ:

Function MyFunction() 

End Function 
0

truy cập năm 2013: Một chức năng gọi với MyFunction () từ RunCode nơi MyFunction không tồn tại mang lại cho tôi lỗi 2425. Tuy nhiên, không có công việc nào ở trên cho tôi và tôi vẫn nhận được Error Number 2001 khi chức năng tồn tại và được công khai. Cơ sở dữ liệu ở một Vị trí đáng tin cậy. Không có lỗi biên dịch, nhưng một cái gì đó trong MyFunction không hoạt động, cụ thể là

DoCmd.ShowAllRecords 

sau GoToControl đã làm việc để chọn biểu mẫu con của tôi. Vấn đề thực sự là mã của tôi để loại bỏ một bộ lọc với VBA. Hướng dẫn sử dụng cho ShowAllRecords dường như chỉ ra rằng điều này sẽ hoạt động, nhưng thay thế DoCmd.ShowAllRecords bằng

khắc phục sự cố của tôi.

+1

Như đã lưu ý, chức năng này phải được công khai, không thể ở trong mô-đun lớp (bao gồm các mô-đun mã báo cáo biểu mẫu/báo cáo). Trong thực tế, bạn không thể gọi các subs hoặc các hàm nằm trong một module class. Vì vậy, điều quan trọng cần lưu ý là các mô-đun mã (hoặc báo cáo) biểu mẫu nằm trong các đối tượng lớp thực tế. Để gọi mã trong một mô-đun lớp, bạn phải FIRST tạo hoặc có một thể hiện đang chạy của đối tượng đó. Tuy nhiên, bạn có thể gọi các hàm công khai trong một biểu mẫu bằng cách sử dụng dịch vụ biểu thức và bao gồm trình đơn tùy chỉnh hoặc mã ribbon. –

2

Một giải pháp mà làm việc cho tôi:

Tên mô-đun không thể có cùng tên với thủ tục (s) trong module (s).

0

Cơ sở dữ liệu dường như cần phải có các đối tượng trong nó ngoài chức năng VBA được gọi là tốt. Nếu không có các đối tượng khác (cụ thể là một bảng trong trường hợp của tôi), hàm không thể được tìm thấy từ bên trong môi trường gọi (ví dụ: Excel VBA).

0

Tôi muốn cảm ơn John Tipton ở trên và thêm một số thông tin mới. Tôi đã sử dụng MS Access 2016 và bắt đầu có vấn đề này nên vấn đề này vẫn đang nuôi đầu xấu xí của nó. Đối với tôi để làm việc tên chức năng và tên vĩ mô phải khác nhau và trong mã sau khi Function myFunc() tên phải có khác với tên mô-đun mà bạn thấy trong thanh bên Access. Một điều kỳ lạ khác.Khi tôi chọn RunCode trong Macro nó sẽ cho tôi thấy chức năng (nó sẽ không hiển thị cho tôi các mô-đun VBA phụ) Tôi đã cố gắng để chọn nhưng khi tôi chọn nó, Macro được mã hóa nó như tên hàm với một dấu ngoặc đơn bên trái "(". Điều này đã được chạy trên một máy Windows 8 Pro