Hàm do người dùng Excel VBA xác định
Chào bạn,
Tôi đang cố gắng tạo một hàm =CALC(x,y,z), trong đó x và y đều là số, z là văn bản. Tôi đang cố gắng lấy z làm phép cộng hoặc phép nhân hoặc phép chia, sau đó sẽ thực hiện các phép tính trên x và y tương ứng. Tôi đã thử sử dụng cả If/Then và Select/Case tương ứng nhưng đều không hiệu quả. Tôi không thể tìm ra điều gì đã xảy ra trong mã của mình bên dưới ...
Hàm CALC(x là số nguyên, y là số nguyên, z là chuỗi)
Kết quả mờ Dưới dạng số nguyên, z Dưới dạng chuỗi, x Dưới dạng số nguyên, y Dưới dạng số nguyên
Chọn trường hợp z
Trường hợp là = "thêm"
kết quả = x + y
Trường hợp là = "nhiều"
kết quả = x * y
Trường hợp là = "div"
kết quả = x/y
Kết thúc chọn
CALC = kết quả
Chức năng kết thúc
***Bài đăng được người điều hành chuyển đến danh mục diễn đàn thích hợp.***
Trả lời:
Bạn không cần phải khai báo lại z, x và y vì bạn đã chuyển chúng cho hàm rồi. Ngoài ra, bạn không nên khai báo kết quả dưới dạng số nguyên, vì số nguyên không thể chứa giá trị thập phân và bạn có thể nhận được giá trị thập phân khi chia.
Hãy thử chỉ khai báo nó, nó sẽ biến nó thành một biến thể.
Đây là mã được sửa đổi:
Hàm CALC(x là số nguyên, y là số nguyên, z là chuỗi)
Kết quả mờ
Chọn trường hợp z
Trường hợp là = "thêm"
kết quả = x + y
Trường hợp là = "nhiều"
kết quả = x * y
Trường hợp là = "div"
kết quả = x/y
Kết thúc chọn
CALC = kết quả
Chức năng kết thúc
Trả lời:
JYCHNG
re: chức năng do người dùng thiết kế
Ba câu trả lời phải tốt hơn 2?
Kiểu dữ liệu gốc cho các số trên trang tính là "double".
Không nên sử dụng kiểu dữ liệu số nguyên trong phép chia.
Vì thế...
Hàm công cộng CALC(x As Double, y As Double, z As String) As Double
Kết quả mờ Như đôi
Chọn trường hợp z
Trường hợp là = "thêm"
kết quả = x + y
Trường hợp là = "nhiều"
kết quả = x * y
Trường hợp là = "div"
kết quả = x/y
Kết thúc chọn
CALC = kết quả
Chức năng kết thúc
'---
Nó được gọi từ bảng tính như thế này... =CALC(2,3,"div")
Jim Cone
Portland, Oregon Hoa Kỳ
https://goo.gl/IUQUN2 (Dropbox) >(bổ trợ và sổ làm việc excel miễn phí và thương mại)
Comments
Post a Comment