Em nhờ các bác giúp em với ạ. Cụ thể em có hàng A39 : A40 em đã đặt công thức nếu hợp đồng có "nạo vét, phát dọn... "thì hiện còn chỉ có "dong dẫn" thì bằng 0. Em tạo 1 VBA để ẩn hàng đó nếu bằng 0, nhưng VBA của em có chạy được nhưng không tự động chạy, trừ khi em ấn đúp vào 1 hàng nào đó rồi enter thì mới chạy. Em cám ơn các bác...
Em nhờ các bác giúp em với ạ. Cụ thể em có hàng A39 : A40 em đã đặt công thức nếu hợp đồng có "nạo vét, phát dọn... "thì hiện còn chỉ có "dong dẫn" thì bằng 0. Em tạo 1 VBA để ẩn hàng đó nếu bằng 0, nhưng VBA của em có chạy được nhưng không tự động chạy, trừ khi em ấn đúp vào 1 hàng nào đó rồi enter thì mới chạy. Em cám ơn các bác...
Em nhờ các bác giúp em với ạ. Cụ thể em có hàng A39 : A40 em đã đặt công thức nếu hợp đồng có "nạo vét, phát dọn... "thì hiện còn chỉ có "dong dẫn" thì bằng 0. Em tạo 1 VBA để ẩn hàng đó nếu bằng 0, nhưng VBA của em có chạy được nhưng không tự động chạy, trừ khi em ấn đúp vào 1 hàng nào đó rồi enter thì mới chạy. Em cám ơn các bác...
Do tập tin có mật khẩu nên không xem được, vậy tiếp theo chỉ là đoán mò.
Công thức trong A39 : A40? Bạn có thể dùng Worksheet_Change để phản ứng với mỗi thay đổi trong A39 : A40 khi và chỉ khi sự thay đổi trong A39 : A40 được thực hiện bằng tay, bằng code, do chọn trong Data Validation ... Nếu trong A39 : A40 có công thức thì không thể dùng Worksheet_Change để phản ứng khi có sự thay đổi về giá trị trong A39 : A40.
"Thủ phạm" những thay đổi trong A39 : A40 là gì? Là sự thay đổi trong một "ô nào đó"? Thì dùng Worksheet_Change để phản ứng với mỗi thay đổi trong "ô nào đó". Thế thôi.
Do tập tin có mật khẩu nên không xem được, vậy tiếp theo chỉ là đoán mò.
Công thức trong A39 : A40? Bạn có thể dùng Worksheet_Change để phản ứng với mỗi thay đổi trong A39 : A40 khi và chỉ khi sự thay đổi trong A39 : A40 được thực hiện bằng tay, bằng code, do chọn trong Data Validation ... Nếu trong A39 : A40 có công thức thì không thể dùng Worksheet_Change để phản ứng khi có sự thay đổi về giá trị trong A39 : A40.
"Thủ phạm" những thay đổi trong A39 : A40 là gì? Là sự thay đổi trong một "ô nào đó"? Thì dùng Worksheet_Change để phản ứng với mỗi thay đổi trong "ô nào đó". Thế thôi.
Kết quả là chuỗi "0" không phải số 0
Chỉnh lệnh: If Rng.Value <> "0" Then
Thêm điều kiện "If Target.Address = "$K$1" Then" nếu không thích thì tự bỏ
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
If Target.Address = "$K$1" Then
Application.ScreenUpdating = False
For Each Rng In [A39:A42]
If Rng.Value <> "0" Then
Rng.EntireRow.Hidden = False
Else
Rng.EntireRow.Hidden = True
End If
Next Rng
Application.ScreenUpdating = True
End If
End Sub
Kết quả là chuỗi "0" không phải số 0
Chỉnh lệnh: If Rng.Value <> "0" Then
Thêm điều kiện "If Target.Address = "$K$1" Then" nếu không thích thì tự bỏ
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
If Target.Address = "$K$1" Then
Application.ScreenUpdating = False
For Each Rng In [A39:A42]
If Rng.Value <> "0" Then
Rng.EntireRow.Hidden = False
Else
Rng.EntireRow.Hidden = True
End If
Next Rng
Application.ScreenUpdating = True
End If
End Sub
Như tôi đã đoán mò ở bài #3, bạn dùng Worksheet_Change. Nhưng sub Worksheet_Change không được gọi để thực thi khi sự thay đổi của ô/vùng là do công thức trong ô/vùng, và vài nguyên nhân khác. Trong A39:A42 có công thức mà như trên tôi viết sự thay đổi trong các ô đó không kéo theo việc thực thi Worksheet_Change. Sự thay đổi trong A39:A42 lại do K1 gây ra. Nhưng sự thay đổi trong K1 cũng không kéo theo việc thực hiện Worksheet_Change do K1 chỉ liên kết với "Spinner 4". Tuy nhiên sự thay đổi trong K1 là do việc nhấn "Spinner 4" gây ra. Vậy có thể gán macro cho "Spinner 4".
Sub Spinner4_Change()
Dim Rng As Range
Application.ScreenUpdating = False
For Each Rng In [A39:A42]
Rng.EntireRow.Hidden = Rng.Value = "0"
Next Rng
Application.ScreenUpdating = True
End Sub
Cách 2.
Giữ nguyên Worksheet_Change nhưng không dùng "Spinner 4" mà tự nhập tay các giá trị vào K1. Khi K1 thay đổi do thao tác bằng tay thì Worksheet_Change được gọi ra để thực thi.
Sửa gọn Worksheet_Change thành
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
If Target.Address = "$K$1" Then
Application.ScreenUpdating = False
For Each Rng In [A39:A42]
Rng.EntireRow.Hidden = Rng.Value = "0"
Next Rng
Application.ScreenUpdating = True
End If
End Sub
Như tôi đã đoán mò ở bài #3, bạn dùng Worksheet_Change. Nhưng sub Worksheet_Change không được gọi để thực thi khi sự thay đổi của ô/vùng là do công thức trong ô/vùng, và vài nguyên nhân khác. Trong A39:A42 có công thức mà như trên tôi viết sự thay đổi trong các ô đó không kéo theo việc thực thi Worksheet_Change. Sự thay đổi trong A39:A42 lại do K1 gây ra. Nhưng sự thay đổi trong K1 cũng không kéo theo việc thực hiện Worksheet_Change do K1 chỉ liên kết với "Spinner 4". Tuy nhiên sự thay đổi trong K1 là do việc nhấn "Spinner 4" gây ra. Vậy có thể gán macro cho "Spinner 4".
Sub Spinner4_Change()
Dim Rng As Range
Application.ScreenUpdating = False
For Each Rng In [A39:A42]
Rng.EntireRow.Hidden = Rng.Value = "0"
Next Rng
Application.ScreenUpdating = True
End Sub
Cách 2.
Giữ nguyên Worksheet_Change nhưng không dùng "Spinner 4" mà tự nhập tay các giá trị vào K1. Khi K1 thay đổi do thao tác bằng tay thì Worksheet_Change được gọi ra để thực thi.
Sửa gọn Worksheet_Change thành
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
If Target.Address = "$K$1" Then
Application.ScreenUpdating = False
For Each Rng In [A39:A42]
Rng.EntireRow.Hidden = Rng.Value = "0"
Next Rng
Application.ScreenUpdating = True
End If
End Sub
Như tôi đã đoán mò ở bài #3, bạn dùng Worksheet_Change. Nhưng sub Worksheet_Change không được gọi để thực thi khi sự thay đổi của ô/vùng là do công thức trong ô/vùng, và vài nguyên nhân khác. Trong A39:A42 có công thức mà như trên tôi viết sự thay đổi trong các ô đó không kéo theo việc thực thi Worksheet_Change. Sự thay đổi trong A39:A42 lại do K1 gây ra. Nhưng sự thay đổi trong K1 cũng không kéo theo việc thực hiện Worksheet_Change do K1 chỉ liên kết với "Spinner 4". Tuy nhiên sự thay đổi trong K1 là do việc nhấn "Spinner 4" gây ra. Vậy có thể gán macro cho "Spinner 4".
Sub Spinner4_Change()
Dim Rng As Range
Application.ScreenUpdating = False
For Each Rng In [A39:A42]
Rng.EntireRow.Hidden = Rng.Value = "0"
Next Rng
Application.ScreenUpdating = True
End Sub
Cách 2.
Giữ nguyên Worksheet_Change nhưng không dùng "Spinner 4" mà tự nhập tay các giá trị vào K1. Khi K1 thay đổi do thao tác bằng tay thì Worksheet_Change được gọi ra để thực thi.
Sửa gọn Worksheet_Change thành
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
If Target.Address = "$K$1" Then
Application.ScreenUpdating = False
For Each Rng In [A39:A42]
Rng.EntireRow.Hidden = Rng.Value = "0"
Next Rng
Application.ScreenUpdating = True
End If
End Sub
Như tôi đã đoán mò ở bài #3, bạn dùng Worksheet_Change. Nhưng sub Worksheet_Change không được gọi để thực thi khi sự thay đổi của ô/vùng là do công thức trong ô/vùng, và vài nguyên nhân khác. Trong A39:A42 có công thức mà như trên tôi viết sự thay đổi trong các ô đó không kéo theo việc thực thi Worksheet_Change. Sự thay đổi trong A39:A42 lại do K1 gây ra. Nhưng sự thay đổi trong K1 cũng không kéo theo việc thực hiện Worksheet_Change do K1 chỉ liên kết với "Spinner 4". Tuy nhiên sự thay đổi trong K1 là do việc nhấn "Spinner 4" gây ra. Vậy có thể gán macro cho "Spinner 4".
Sub Spinner4_Change()
Dim Rng As Range
Application.ScreenUpdating = False
For Each Rng In [A39:A42]
Rng.EntireRow.Hidden = Rng.Value = "0"
Next Rng
Application.ScreenUpdating = True
End Sub
Cách 2.
Giữ nguyên Worksheet_Change nhưng không dùng "Spinner 4" mà tự nhập tay các giá trị vào K1. Khi K1 thay đổi do thao tác bằng tay thì Worksheet_Change được gọi ra để thực thi.
Sửa gọn Worksheet_Change thành
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
If Target.Address = "$K$1" Then
Application.ScreenUpdating = False
For Each Rng In [A39:A42]
Rng.EntireRow.Hidden = Rng.Value = "0"
Next Rng
Application.ScreenUpdating = True
End If
End Sub
Như tôi đã đoán mò ở bài #3, bạn dùng Worksheet_Change. Nhưng sub Worksheet_Change không được gọi để thực thi khi sự thay đổi của ô/vùng là do công thức trong ô/vùng, và vài nguyên nhân khác. Trong A39:A42 có công thức mà như trên tôi viết sự thay đổi trong các ô đó không kéo theo việc thực thi Worksheet_Change. Sự thay đổi trong A39:A42 lại do K1 gây ra. Nhưng sự thay đổi trong K1 cũng không kéo theo việc thực hiện Worksheet_Change do K1 chỉ liên kết với "Spinner 4". Tuy nhiên sự thay đổi trong K1 là do việc nhấn "Spinner 4" gây ra. Vậy có thể gán macro cho "Spinner 4".
Sub Spinner4_Change()
Dim Rng As Range
Application.ScreenUpdating = False
For Each Rng In [A39:A42]
Rng.EntireRow.Hidden = Rng.Value = "0"
Next Rng
Application.ScreenUpdating = True
End Sub
Cách 2.
Giữ nguyên Worksheet_Change nhưng không dùng "Spinner 4" mà tự nhập tay các giá trị vào K1. Khi K1 thay đổi do thao tác bằng tay thì Worksheet_Change được gọi ra để thực thi.
Sửa gọn Worksheet_Change thành
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
If Target.Address = "$K$1" Then
Application.ScreenUpdating = False
For Each Rng In [A39:A42]
Rng.EntireRow.Hidden = Rng.Value = "0"
Next Rng
Application.ScreenUpdating = True
End If
End Sub
Từ này giành cho bên cao nói với bên thấp.
Ngang hàng chỉ được dùng khi thân nhau, không thân mà dùng là sổ sàng. Nói với người lớn tuổi hơn mình là hỗn.
Đúng thuật ngữ: Ơ mây ging! Gút gióp. (có ngăn ở giữa; tức là lúc nói, người ta phân biệt hai nhóm từ)
Từ này giành cho bên cao nói với bên thấp.
Ngang hàng chỉ được dùng khi thân nhau, không thân mà dùng là sổ sàng. Nói với người lớn tuổi hơn mình là hỗn.
Đúng thuật ngữ: Ơ mây ging! Gút gióp. (có ngăn ở giữa; tức là lúc nói, người ta phân biệt hai nhóm từ)
Tôi không biết dành cho ai vì tôi không hiểu "Ơ mây zing gút chóp" là gì. Rất nhiều khi tôi không hiểu những cách nói như thế nhưng tôi không hỏi vì những kiến thức kiểu đó không hữu ích với tôi.
Tôi không biết dành cho ai vì tôi không hiểu "Ơ mây zing gút chóp" là gì. Rất nhiều khi tôi không hiểu những cách nói như thế nhưng tôi không hỏi vì những kiến thức kiểu đó không hữu ích với tôi.
Tôi không chủ ý nói với thớt.
Tôi chỉ cảnh báo những bạn nào thấy "hay hay" muốn bắt chước. Nhiều điều những thằng/mụ làm trên các chương trình "Ghêm xô" là bậy bạ nhưng do lên mạng được nhiều "lai" nên người thường bắt chước theo vì ngỡ là hay.
Tôi không chủ ý nói với thớt.
Tôi chỉ cảnh báo những bạn nào thấy "hay hay" muốn bắt chước. Nhiều điều những thằng/mụ làm trên các chương trình "Ghêm xô" là bậy bạ nhưng do lên mạng được nhiều "lai" nên người thường bắt chước theo vì ngỡ là hay.
Tôi không biết dành cho ai vì tôi không hiểu "Ơ mây zing gút chóp" là gì. Rất nhiều khi tôi không hiểu những cách nói như thế nhưng tôi không hỏi vì những kiến thức kiểu đó không hữu ích với tôi
Không nên như thế đối với người giúp mình, người lớn tuổi hơn (hoặc không biết có lớn hơn không), và quan trọng là trên diễn đàn này, viết như vậy là vi phạm nội quy.
Tôi không chủ ý nói với thớt.
Tôi chỉ cảnh báo những bạn nào thấy "hay hay" muốn bắt chước. Nhiều điều những thằng/mụ làm trên các chương trình "Ghêm xô" là bậy bạ nhưng do lên mạng được nhiều "lai" nên người thường bắt chước theo vì ngỡ là hay.
Không nên như thế đối với người giúp mình, người lớn tuổi hơn (hoặc không biết có lớn hơn không), và quan trọng là trên diễn đàn này, viết như vậy là vi phạm nội quy.
Đó là tác hại của truyền thông mà các "ngài" bên thông tin văn hoá không học không biết thậm chí cho là hay
Dạ vâng. Lần sau em sẽ rút kinh nghiệm ạ. Vì em còn trẻ có thể chưa hiểu chuyện lắm. Ko biết trên diễn đàn này có các anh các chị khác tầm tuổi mình nên nói những từ ko đúng chỗ. Nhưng chỉ mong các bác hiểu là em đc tham gia vào diễn đàn và nhờ các anh chị giúp đỡ, chỉ bảo là vinh dự của em. Vì em với anh chị chả quen biết gì mà anh chị bỏ thời gian giúp đỡ em cũng như mọi người khác ko công là điều rất đáng quý ạ
Dạ vâng. Lần sau em sẽ rút kinh nghiệm ạ. Vì em còn trẻ có thể chưa hiểu chuyện lắm. Ko biết trên diễn đàn này có các anh các chị khác tầm tuổi mình nên nói những từ ko đúng chỗ. Nhưng chỉ mong các bác hiểu là em đc tham gia vào diễn đàn và nhờ các anh chị giúp đỡ, chỉ bảo là vinh dự của em. Vì em với anh chị chả quen biết gì mà anh chị bỏ thời gian giúp đỡ em cũng như mọi người khác ko công là điều rất đáng quý ạ
Các thành viên sẽ vui hơn nếu bạn chịu khó không viết tắt trong bài viết vì không chắc tất cả đều hiểu được nghĩa từ viết tắt của bạn, điều đó có thể dẫn đến sự hạn chế thời gian hoàn thành công việc nói riêng cũng như sự hiểu lầm về các vấn đề khác nói chung. Mong bạn lưu ý hơn.
Các thành viên sẽ vui hơn nếu bạn chịu khó không viết tắt trong bài viết vì không chắc tất cả đều hiểu được nghĩa từ viết tắt của bạn, điều đó có thể dẫn đến sự hạn chế thời gian hoàn thành công việc nói riêng cũng như sự hiểu lầm về các vấn đề khác nói chung. Mong bạn lưu ý hơn.
Như tôi đã đoán mò ở bài #3, bạn dùng Worksheet_Change. Nhưng sub Worksheet_Change không được gọi để thực thi khi sự thay đổi của ô/vùng là do công thức trong ô/vùng, và vài nguyên nhân khác. Trong A39:A42 có công thức mà như trên tôi viết sự thay đổi trong các ô đó không kéo theo việc thực thi Worksheet_Change. Sự thay đổi trong A39:A42 lại do K1 gây ra. Nhưng sự thay đổi trong K1 cũng không kéo theo việc thực hiện Worksheet_Change do K1 chỉ liên kết với "Spinner 4". Tuy nhiên sự thay đổi trong K1 là do việc nhấn "Spinner 4" gây ra. Vậy có thể gán macro cho "Spinner 4".
Sub Spinner4_Change()
Dim Rng As Range
Application.ScreenUpdating = False
For Each Rng In [A39:A42]
Rng.EntireRow.Hidden = Rng.Value = "0"
Next Rng
Application.ScreenUpdating = True
End Sub
Cách 2.
Giữ nguyên Worksheet_Change nhưng không dùng "Spinner 4" mà tự nhập tay các giá trị vào K1. Khi K1 thay đổi do thao tác bằng tay thì Worksheet_Change được gọi ra để thực thi.
Sửa gọn Worksheet_Change thành
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
If Target.Address = "$K$1" Then
Application.ScreenUpdating = False
For Each Rng In [A39:A42]
Rng.EntireRow.Hidden = Rng.Value = "0"
Next Rng
Application.ScreenUpdating = True
End If
End Sub
Bác ạ, bác ơi bác giúp em thêm 1 vấn đề nữa được không ạ. Sau khi em là xong và khóa Protect Sheet lại, nhưng khi ấn Spinner 4 thì báo lỗi : " runtime error #1004 "unable to set hidden property of range class". Có cách nào khắc phục không bác. Vì em dùng máy tính cơ quan, dữ liệu liên quan đến kinh phí xin công ty hỗ trợ tiền cho bà con làm ruộng, ai mà vui tính thêm vài số 0 là em bán nhà nên bắt buộc em phải khóa bác ạ. Em xin chân thành cám ơn bác ạ
...Vì em dùng máy tính cơ quan, dữ liệu liên quan đến kinh phí xin công ty hỗ trợ tiền cho bà con làm ruộng, ai mà vui tính thêm vài số 0 là em bán nhà nên bắt buộc em phải khóa bác ạ. Em xin chân thành cám ơn bác ạ
Làm từ thiện thì cái mục đích từ thiện là chính. Tìm cách quản lý dữ liệu trong khả năng của mình.
Bày trò Vê Bê A với tự động chi vậy? Có muốn bày trò thì cũng phải biết tự bày các chỗ chính, chỉ hỏi một vài chỗ bị vướng thôi.
Làm từ thiện thì cái mục đích từ thiện là chính. Tìm cách quản lý dữ liệu trong khả năng của mình.
Bày trò Vê Bê A với tự động chi vậy? Có muốn bày trò thì cũng phải biết tự bày các chỗ chính, chỉ hỏi một vài chỗ bị vướng thôi.
bác ơi, em cũng tự mò các chỗ hết rồi, ngồi nghiên cứu từ hôm qua tới giờ mà ngu quá không nghĩ ra, chỗ nào em ngu em mới hỏi thôi bác ạ, chứ em biết các bác cũng bận mà. Khổ cái máy cơ quan, đã từng có người bị nghịch tài liệu rồi em mới bày vẽ ra như thế bác ạ, 1 năm em làm 3 lần hồ sơ nếu không vba làm cho nhanh thì làm không kịp bác ạ