Viết hàm tính chu vi bằng VBA trong excel

Liên hệ QC

thaoquyen144

Thành viên mới
Tham gia
27/1/11
Bài viết
5
Được thích
0
Em muốn viết một hàm đơn giản là tính chu vi=(dài+rộng)*2 trong VBA nhưng không được.
Đoạn mã như sau:
Public Function chu_vi(dai As Double, Rong As Double) As Double
'Chu vi hinh chu nhat'
chu_vi = (dai + Rong) *2
End Function

Hiz...ai giúp em với, viết như vậy sai ở chỗ nào.
Xin cảm ơn trước.
 
Lần chỉnh sửa cuối:
Em muốn viết một hàm đơn giản là tính chu vi=(dài+rộng)/2 trong VBA nhưng không được.
Đoạn mã như sau:
Public Function chu_vi(dai As Double, Rong As Double) As Double
'Chu vi hinh chu nhat'
chu_vi = (dai + Rong) / 2
End Function

Hiz...ai giúp em với, viết như vậy sai ở chỗ nào.
Xin cảm ơn trước.
Lý ra phải là:
chu_vi = (dai + Rong) *2 chứ nhỉ
 
Upvote 0
Bạn dùng thêm 1 hàm if để loại trừ khi kích thước có giá trị âm nữa
 
Upvote 0
(Nhàn cư vi bất thiện:)

(|) Dài & rọng thì kệ họ, không ảnh hưởng gì đến hoà bình thế giới;

(|) Tác giả nên mở rọng đề bài: Tình chi vi toàn thể các hình thông dụng, như

(1) Chữ nhựt & hình vuông
(2) Hình tròn;
(3) Hình thoi
(4) Đường tròn;
(5) Tam giác;( Cân, Vuông, Đều,. . .)
(6) Hình thang,
. . . . .

Theo dạng sau:
PHP:
Public Function chu_vi(dai As Double, Rong As Double, Optional Hinh As String) As Double
 
 Select Case Hinh
 Case "C"
'Chu vi hinh chu nhat'
      chu_vi = (dai + Rong) * 2
  Case "T"
  
  Case "D"
     

  End Select
End Function
Chúc nhiều thành công thêm nữa!
 
Upvote 0
(|) Dài & rọng thì kệ họ, không ảnh hưởng gì đến hoà bình thế giới;

(|) Tác giả nên mở rọng đề bài: Tình chi vi toàn thể các hình thông dụng, như

(1) Chữ nhựt & hình vuông
(2) Hình tròn;
(3) Hình thoi
(4) Đường tròn;
(5) Tam giác;( Cân, Vuông, Đều,. . .)
(6) Hình thang,
. . . . .

Theo dạng sau:
PHP:
Public Function chu_vi(dai As Double, Rong As Double, Optional Hinh As String) As Double
 
 Select Case Hinh
 Case "C"
'Chu vi hinh chu nhat'
      chu_vi = (dai + Rong) * 2
  Case "T"
  
  Case "D"
     

  End Select
End Function
Chúc nhiều thành công thêm nữa!

Cảm ơn chú nhiều!
Nhưng Sao vẫn dùng không dùng được nhỉ...:(:(
Sau khi tạo hàm xong vào File -> Close and return microsoft excel
Sau đó nhập dữ liệu
Dài ô A1 giá trị ở ô B1
Rộng ô A2 giá trị ở ô B2
chu vi ô A3 giá trị được tính bằng công thức =chu_vi(B1,B2) đúng không ạ? Nhưng sao không được nó cứ báo lỗi gì ấy.


moz-screenshot.png
 
Upvote 0
Nếu báo lỗi là "Sub or Function not defined" thì có thể bạn chưa tạo macro trong Modulo.
Trong cửa sổ Visual Basic, chọn Insert \ Modulo . Sau đó nhập macro trong Modulo.
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn chú nhiều!
Nhưng Sao vẫn dùng không dùng được nhỉ...
Sau khi tạo hàm xong vào File -> Close and return microsoft excel
Sau đó nhập dữ liệu
Dài ô A1 giá trị ở ô B1
Rộng ô A2 giá trị ở ô B2
chu vi ô A3 giá trị được tính bằng công thức =chu_vi(B1,B2) đúng không ạ? Nhưng sao không được nó cứ báo lỗi gì ấy.

Công thức phải là =chu_vi(B1,B2,"C")
 
Lần chỉnh sửa cuối:
Upvote 0
hiz hiz...vẫn kô được pác ạ...em up đính kèm file hình kô đc...hiz...:(....sắp phải nộp bài rồi mà vẫn mò chưa ra...:((
nó cứ báo lỗi The formula your typed contains and erro....hiz
Trời ạ! TƯỞNG GIẢI QUYẾT XONG LÂU RỒI CHỨ?!

Bạn chép toàn bộ cái ni vô module 1
PHP:
Option Explicit
Function ChuVi(Dai As Double, Rong As Double, Optional Hinh As String = "C") As Double
 Select Case Hinh
 Case "C"
    ChuVi = (Dai + Rong) * 2
 Case "V"  'Tam Giac Vuong'
    ChuVi = Dai + Rong + (Dai ^ 2 + Rong ^ 2) ^ (1 / 2)
 Case Else
 
 End Select
End Function
Trên trang tính bạn lập bảng sau:
|A|B|C|
1 |Dai|Rong||
2 |1.89|5.6| ? |
3 |8.9|6.14| ?? |

Tại nơi có ? bạn nhập công thức =ChuVi( A2,B2) & nhớ {ENTER}
Tại nơi có ?? bạn lại nhập =ChuVi( A3,B3,"V") & nhớ cũng rứa.

Nếu bạn vẫn chưa làm được sau chỉ dẫn này, thì bạn ngồi nhằm lớp rồi cũng nên!--=0
 
Upvote 0
Trời ạ! TƯỞNG GIẢI QUYẾT XONG LÂU RỒI CHỨ?!

Bạn chép toàn bộ cái ni vô module 1
PHP:
Option Explicit
Function ChuVi(Dai As Double, Rong As Double, Optional Hinh As String = "C") As Double
 Select Case Hinh
 Case "C"
    ChuVi = (Dai + Rong) * 2
 Case "V"  'Tam Giac Vuong'
    ChuVi = Dai + Rong + (Dai ^ 2 + Rong ^ 2) ^ (1 / 2)
 Case Else
 
 End Select
End Function
Trên trang tính bạn lập bảng sau:
|A|B|C|
1 |Dai|Rong||
2 |1.89|5.6| ? |
3 |8.9|6.14| ?? |

Tại nơi có ? bạn nhập công thức =ChuVi( A2,B2) & nhớ {ENTER}
Tại nơi có ?? bạn lại nhập =ChuVi( A3,B3,"V") & nhớ cũng rứa.

Nếu bạn vẫn chưa làm được sau chỉ dẫn này, thì bạn ngồi nhằm lớp rồi cũng nên!--=0
Nhưng khi viết công thức ChuVi=(A2,...chọn típ B2 kô đc....nó báo lỗi như đã nói trên ý...:(...
Thực sự là học Tin học ứng dụng chỉ học excel như tin A...mà thầy bắt làm về VBA....trong khi chẳng bek ji về nó cả....e chỉ học excel cơ bản thôu pác ạ...hux...:(
 
Upvote 0
Nhưng khi viết công thức ChuVi=(A2,...chọn típ B2 kô đc....nó báo lỗi như đã nói trên ý...:(...
Thực sự là học Tin học ứng dụng chỉ học excel như tin A...mà thầy bắt làm về VBA....trong khi chẳng bek ji về nó cả....e chỉ học excel cơ bản thôu pác ạ...hux...:(

/-(ình như bạn không cho các macro & hàm tự tạo hoạt động thì fải?!
 
Upvote 0
Lỗi báo của bạn có thể do:
1. Bạn chưa Enable Macro.
2. Bạn đưa hàm chu_vi vào một module không cùng một workbook.
Bạn xem lại nha. Hàm trên không có lỗi.

Lê Văn Duyệt
 
Upvote 0
Bác thử hai đoạn mã này xem

Đoạn 1: Public Function Dien_Tich(Rong As Double, Cao As Double) As Double
‘Hàm tính diện tích hình chữ nhật
Dien_Tich = Rong * Cao
End Function
Đoạn 2:
Public Function Dien_Tich(Rong As Double, Cao As Double) As Double
‘Hàm tính diện tích hình chữ nhật
Dien_Tich = Rong * Cao
End Function
chúc bác thanh cong
 
Upvote 0
Đặt dòng lệnh sau ở đầu hàm (function)

Mã:
Application.Volatile
Bạn trả lời hơi sớm. Đúng ra cần phải hỏi lại chú Tây con kia xem tại sao phải vậy. Nếu Function dùng ô Excel làm tham số thì tự động nó chạy khi ô tham chiếu thay đổi. Bạn chỉ đặt volatile khi muốn nó chạy với bất cứ thay đổi nào trên bảng tính.
 
Upvote 0
Web KT

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

Back
Top Bottom