Không chạy được hàm mới tạo bằng VBA (1 người xem)

  • Thread starter Thread starter the dr
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

the dr

Thành viên mới
Tham gia
27/7/11
Bài viết
9
Được thích
0
Mình mới học VBA được ít hôm. Bài giảng có phần tạo hàm mới, mình thấy code có vẻ đơn giản nhưng lúc ra bảng cel thì máy vẫn không nhận hàm mới mình tạo. Nhờ mọi người xem giúp xem mình làm sai ở đâu. Đây là công thức tính Dện tích hình chữ nhật. Xin cảm ơn

Public Function Dien_Tich(Rong As Double, Cao As Double) As Double
'Ham tinh dien tich hinh chu nhat
Dien_Tich = Rong * Cao
End Function
 
Mình mới học VBA được ít hôm. Bài giảng có phần tạo hàm mới, mình thấy code có vẻ đơn giản nhưng lúc ra bảng cel thì máy vẫn không nhận hàm mới mình tạo. Nhờ mọi người xem giúp xem mình làm sai ở đâu. Đây là công thức tính Dện tích hình chữ nhật. Xin cảm ơn

Public Function Dien_Tich(Rong As Double, Cao As Double) As Double
'Ham tinh dien tich hinh chu nhat
Dien_Tich = Rong * Cao
End Function
Bạn kiểm tra lại vấn đề: Hàm này phải được đặt trong 1 Module của file có sử dụng nó (Module được tạo bằng cách chọn Insert\Module hoặc cách tương tự).
 
Upvote 0
Vẫn được mà, nhớ để trong module :

untitled.JPG
 
Upvote 0
Mình làm ở cel 2k7,mình làm như thế này:
Vào thẻ developer, mở hộp Visual basic, tiếp theo mình vào insert, ở phần Name mình gõ Dien_Tich, Type chọn funtion, Scope chọn Public rồi OK
Tiếp đó mình đánh đoạn code như trên vào. Mình làm theo y hướng dẫn.
Mong mọi người bỏ chút thời gian giúp đỡ newbie như mình
Xin cảm ơn
 
Upvote 0
Làm gì co insert Name nhỉ, bạn chọn insert Module như hình ở bài 3 nhé
 
Upvote 0
Name ở Insert phần procedure bạn ạ, cái này mình làm theo hướng dẫn
 
Upvote 0
File của mình cũng hiện ra module y hệt bạn, nhưng đến khi mình chuyển sang cel bằng phím alt+Q, gõ công thức thì cel báo không nhận được đoạn text mình gõ.
 
Upvote 0
File của mình cũng hiện ra module y hệt bạn, nhưng đến khi mình chuyển sang cel bằng phím alt+Q, gõ công thức thì cel báo không nhận được đoạn text mình gõ.
Bạn gõ như thế nào?
Nhập thử = Dien_tich(2,3) xem kết quả có bằng 6 không?
 
Upvote 0
Không được bạn ạ, ra lỗi #Name không hiểu text.Làm phiền bạn quá
 
Upvote 0
Không được bạn ạ, ra lỗi #Name không hiểu text.Làm phiền bạn quá
Phát sinh lỗi #NAME chứng tỏ Excel không nhận ra hàm tự tạo Dien_tich của bạn. Có thể chế độ Security trong Excel của bạn đang được thiết lập ở mức Disable all macros without nofitication, nó chặn không cho Macro hoạt động. Bạn thử làm theo hướng dẫn ở bài này xem có được không nhé.
 
Upvote 0
Đây là file của mình,nhờ mọi người check dùm
cảm ơn
 

File đính kèm

Upvote 0
File xlsx thì làm gì có code chứ? Làm VBA xong khi lưu lại nó có hỏi mà không xem nó hỏi gì, nhắm mắt bấm Yes nên mất hết code rồi.

Yes Or No.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn mọi người, mình đã sửa được rồi
 
Upvote 0
Em lập hàm trên Excel dùng VBA không tự cập nhật dữ liệu. Mỗi lần sửa dữ liệu lại phải nhấp đúp vào ô dữ liệu sử dụng hàm rồi Bấm Enter thì mới cập nhật dữ liệu. Các bác giải quyết E nhé. Tks
 

File đính kèm

Upvote 0
Em lập hàm trên Excel dùng VBA không tự cập nhật dữ liệu. Mỗi lần sửa dữ liệu lại phải nhấp đúp vào ô dữ liệu sử dụng hàm rồi Bấm Enter thì mới cập nhật dữ liệu. Các bác giải quyết E nhé. Tks
Thêm dòng Application.Volatile vào đầu code nhé
Mà nè: hàm gì mà kỳ cục thế nhỉ? Dùng LOOKUP cũng được vậy:
PHP:
=LOOKUP("chuyen",DuLieu!$A$2:$AY$2,DuLieu!$A$1:$AY$1)
 
Upvote 0
Thêm dòng Application.Volatile vào đầu code nhé
Mà nè: hàm gì mà kỳ cục thế nhỉ? Dùng LOOKUP cũng được vậy:
PHP:
=LOOKUP("chuyen",DuLieu!$A$2:$AY$2,DuLieu!$A$1:$AY$1)

Theo cách đó được đoạn code

Mã:
Application.Volatile
Public Function thamchieu00()
Dim i As Integer
i = 1

Do While i < 51
    
    If Worksheets("DuLieu").Cells(2, i) = "Chuyen" Then
        thamchieu00 = Worksheets("DuLieu").Cells(1, i)
    End If
    i = i + 1
Loop
End Function

Sau khi thêm KQ là: #NAME?

Nếu bài toán chỉ là tìm đối tượng theo một loại dữ liệu như vậy thì E cũng sẽ dùng hàm VLOOKUP hoặc HLOOKUP. Ví dụ E upload lê chỉ là dẫn chứng để các bác dễ bắt bệnh. Chờ ý kiến khác của các bác.
 
Upvote 0
Theo cách đó được đoạn code

Mã:
Application.Volatile
Public Function thamchieu00()
Dim i As Integer
i = 1

Do While i < 51
    
    If Worksheets("DuLieu").Cells(2, i) = "Chuyen" Then
        thamchieu00 = Worksheets("DuLieu").Cells(1, i)
    End If
    i = i + 1
Loop
End Function

Sau khi thêm KQ là: #NAME?

Nếu bài toán chỉ là tìm đối tượng theo một loại dữ liệu như vậy thì E cũng sẽ dùng hàm VLOOKUP hoặc HLOOKUP. Ví dụ E upload lê chỉ là dẫn chứng để các bác dễ bắt bệnh. Chờ ý kiến khác của các bác.
Má ơi! Bạn... thật thà ghê!
Người ta nói thêm "cái gì đó" vào đầu code là ý muốn nói đến code của bạn đấy
Dù ở ĐẦU thì ít nhất nó cũng phải nằm DƯỚI dòng Public Function thamchieu00() chứ +-+-+-+
Trên diễn đàn người ta hay hướng dẫn theo kiểu: Thêm On Error Resume Next vào đầu code ---> Nếu bạn quá thật thà mà cho dòng ấy lên tận trên đầu thật thì.. code nó "điên" luôn
--------------------------
Nói thêm: So sánh theo kiểu If Worksheets("DuLieu").Cells(2, i) = "Chuyen" Then là có phân biệt HOA thường à nha
 
Lần chỉnh sửa cuối:
Upvote 0
E đang tìm hiểu VBA để làm chương trình tách lọc TKB cho Giáo viên mà.
Băn khoăn của E đã được giải đáp.
Cám ơn A. Chúc thành công
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom