Giúp em lập trình hàm tích (product) cho dãy số và hiển thị lên Status bar

Liên hệ QC

thanhit.humg

Thành viên mới
Tham gia
21/12/10
Bài viết
5
Được thích
0
Chào các bác, em đang tự học lập trình vba cho excel, bây giờ em muốn lập 1 chương trình hiển thị lên status bar, tức là ví dụ em có dãy số, khi em quét chọn dãy số đó thì nó sẽ hiển thị tích của các số đó lên status bar, bản thân excel có hàm sum, count........... rồi, nhưng em muốn có hàm tích thì làm sao ạ, các bác code hộ em xem đc ko.
Thanks!
 
Chào các bác, em đang tự học lập trình vba cho excel, bây giờ em muốn lập 1 chương trình hiển thị lên status bar, tức là ví dụ em có dãy số, khi em quét chọn dãy số đó thì nó sẽ hiển thị tích của các số đó lên status bar, bản thân excel có hàm sum, count........... rồi, nhưng em muốn có hàm tích thì làm sao ạ, các bác code hộ em xem đc ko.
Thanks!

ý bạn là như thế này hay thế nào ?
[GPECODE=vb]
Arr= Selection
For i = 1 To UBound(Arr,1)
Product = tich * Arr(i,1)
Next
Application.StatusBar = Product
[/GPECODE]
 
Upvote 0
tôi thử thấy tốt. Nên sửa

Arr= Selection
tich =1

For i = 1 To UBound(Arr,1)

tich = tich * Arr(i,1)

Next

Application.StatusBar = tich

Nhưng phải đặt trong 1 Sub.
Tôi muốn tự động hiện thị lên StatusBar như hàm Sum thì làm sao
 
Upvote 0
ý em là giả sử em có 1 dãy số, bây giờ em quét chọn cả dãy đấy thì thanh Status bar sẽ hiển thị tích của dãy số đó lên. Cái này hình như không được bác ạ, giúp em với
 
Upvote 0
ý em là giả sử em có 1 dãy số, bây giờ em quét chọn cả dãy đấy thì thanh Status bar sẽ hiển thị tích của dãy số đó lên. Cái này hình như không được bác ạ, giúp em với

Tại sheet muốn hiển thị, thực hiện nháy phải (Right Click) lên tên sheet -> chọn View Code --> rui copy và dán nội dung code sau vào vùng trắng trang làm việc đó:

[GPECODE=vb]Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.StatusBar = ""
If Selection.Cells.Count = 1 Then Exit Sub
Dim Tic, Pt
Tic = 1
For Each Pt In Selection
If Not (IsError(Pt)) And Not (IsEmpty(Pt)) And IsNumeric(Pt) Then Tic = Tic * Pt
Next
Application.StatusBar = "Product=" & Tic
End Sub
[/GPECODE]

kết quả của code này bỏ qua các cell lỗi và cell trống - cũng như khi chỉ chọn 1 cell
 
Upvote 0
Tại sheet muốn hiển thị, thực hiện nháy phải (Right Click) lên tên sheet -> chọn View Code --> rui copy và dán nội dung code sau vào vùng trắng trang làm việc đó:


kết quả của code này bỏ qua các cell lỗi và cell trống - cũng như khi chỉ chọn 1 cell

Cũng tương tự, nhưng bổ sung, khi không có ô nào là số tính toán được thì không báo kết quả, THÌ DÙNG CODE MỚI SAU

Tại sheet muốn hiển thị, thực hiện nháy phải (Right Click) lên tên sheet -> chọn View Code --> rui copy và dán nội dung code sau vào vùng trắng trang làm việc đó:
[GPECODE=vb]Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.StatusBar = ""
If Selection.Cells.Count = 1 Then Exit Sub
Dim Tic, Pt, b As Boolean
Tic = 1: b = False
For Each Pt In Selection
If Not (IsError(Pt)) And Not (IsEmpty(Pt)) And IsNumeric(Pt) Then _
Tic = Tic * Pt: b = True
Next
If b Then Application.StatusBar = "Product=" & Tic
End Sub
[/GPECODE]


HOẶC thế này cho nó bài bản hơn

[GPECODE=vb]Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.StatusBar = ""
If Target.Cells.Count = 1 Then Exit Sub
Dim Tic, Pt, b As Boolean
Tic = 1: b = False
For Each Pt In Target
If Not (IsError(Pt)) And Not (IsEmpty(Pt)) And IsNumeric(Pt) Then _
Tic = Tic * Pt: b = True
Next
If b Then Application.StatusBar = "Product=" & Tic
End Sub[/GPECODE]
 
Lần chỉnh sửa cuối:
Upvote 0
Tiện thể anh cho em hỏi thêm 1 chút, em muốn code này của em sẽ có tác dụng không chỉ trong 1 sheet mà tất cả các sheet của file, hay rộng hơn là muốn cho các file khác nữa thì có cách nào nhanh nhất không ạ
 
Upvote 0
Tiện thể anh cho em hỏi thêm 1 chút, em muốn code này của em sẽ có tác dụng không chỉ trong 1 sheet mà tất cả các sheet của file,

thay vì đặt vào sheet bạn đặt vào this workbook là được, cụ thể như sau

Bấm Alt+F11 (ra màn hình VBE) --> chọn thisWorkBook -->copy đoạn code sau vào trang trắng làm việc đó

[GPECODE=vb]Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.StatusBar = ""
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.StatusBar = ""
If Target.Cells.Count = 1 Then Exit Sub
Dim Tic, Pt, b As Boolean
Tic = 1: b = False
For Each Pt In Target
If Not (IsError(Pt)) And Not (IsEmpty(Pt)) And IsNumeric(Pt) Then _
Tic = Tic * Pt: b = True
Next
If b Then Application.StatusBar = "Product=" & Tic
End Sub[/GPECODE]


hay rộng hơn là muốn cho các file khác nữa thì có cách nào nhanh nhất không ạ

Cái này bạn đặt vào Addin nội dung sub trên vào 1 tên sub khác nào đó --> rùi file muốn sử dụng thì gọi subs tương ứng ra

(muốn tạo AddIns thì bạn tự search và làm nhé)
 
Upvote 0
Cảm ơn bác nhiều, em sẽ kiểm tra nó xem thế nào.
Thanks!
 
Upvote 0
Đưa code trên vào Add-Ins cho bạn luôn đây:
Nếu tác giả xem xong code trong file của anh thì sẽ biết rằng cái code PRODUCT gì gì đó chỉ mới là "nữa đoạn đường"
Ẹc... Ẹc....
------------------------------
Với cái Add-In này, lý ra anh nên đưa lên menu bar thì sẽ hoàn hảo hơn (khi người ta cần, người ta bấm vào Button, không thì thôi)
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu tác giả xem xong code trong file của anh thì sẽ biết rằng cái code PRODUCT gì gì đó chỉ mới là "nữa đoạn đường"
Ẹc... Ẹc....
------------------------------
Với cái Add-In này, lý ra anh nên đưa lên menu bar thì sẽ hoàn hảo hơn (khi người ta cần, người ta bấm vào Button, không thì thôi)

Thì làm theo "đơn đặt hàng" mà
hay rộng hơn là muốn cho các file khác nữa thì có cách nào nhanh nhất không ạ
. ==> đạt yêu cầu rồi, sao gọi nửa đường nhỉ, đưa lên menu bar đơn giản mà.
Làm hơn yêu cầu biết người ta có chịu ko, hi hi.
 
Upvote 0
Xin hỏi: Sau khi chạy code Application.StatusBar = "Noi dung dung gì do"
thì thanh trạng thái lưu giá trị đó mãi, không hiện trạng thái như Enter, Point .... Muốn trở về trạng thái bình thường như vốn có của Excel thì làm thế nào (không tính khởi động lại Excel).
 
Upvote 0
Xin hỏi: Sau khi chạy code Application.StatusBar = "Noi dung dung gì do"
thì thanh trạng thái lưu giá trị đó mãi, không hiện trạng thái như Enter, Point .... Muốn trở về trạng thái bình thường như vốn có của Excel thì làm thế nào (không tính khởi động lại Excel).
Đó là câu lệnh Application.StatusBar = False
----------

Ai dùng code các bài trên cũng nên thay câu này cho câu Application.StatusBar = ""
 
Upvote 0
Web KT

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

Back
Top Bottom