Tai sao Sự kiện Worksheet_Caculate không thực hiện

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

vba_gpe

Thành viên thường trực
Tham gia
15/12/10
Bài viết
296
Được thích
44
Nghề nghiệp
Thất nghiệp
Thân Gửi GPE
Mình đặt sự kiện trong
PHP:
Private Sub Worksheet_Caculate()
    Application.Calculation = xlCalculationAutomatic
    Rows("41:41").EntireRow.Hidden = True
    If Cells(41, 4).Value > "0" Then
            Columns("J:K").EntireColumn.Hidden = False
        Else
            Columns("J:K").EntireColumn.Hidden = True
    End If
    If Cells(41, 5).Value > "0" Then
            Columns("L:M").EntireColumn.Hidden = False
        Else
            Columns("L:M").EntireColumn.Hidden = True
    End If
    If Cells(41, 6).Value > "0" Then
            Columns("N:O").EntireColumn.Hidden = False
        Else
            Columns("N:O").EntireColumn.Hidden = True
    End If
    If Cells(41, 7).Value > "0" Then
            Columns("P:Q").EntireColumn.Hidden = False
        Else
            Columns("P:Q").EntireColumn.Hidden = True
    End If
    If Cells(41, 8).Value > "0" Then
            Columns("R:S").EntireColumn.Hidden = False
        Else
            Columns("R:S").EntireColumn.Hidden = True
    End If
    If Cells(41, 9) > "0" Then
            Columns("T:U").EntireColumn.Hidden = False
        Else
            Columns("T:U").EntireColumn.Hidden = True
    End If
End Sub
Không hiểu tại sao Excel không thực hiện đúng (Nghĩa là: Các ô từ D41, E41,...,I41 đảm bảo >0 nhưng không thực hiện lệnh Unhide các cột như yêu cầu (J:K -> T:U)). Lúc trên office 2010, em thử vẫn bình thường. Chuyển qua 2007 không thực hiện được. Khi vao VB Editor. Ấn F5 để run thì nó mới thực hiện. Em nghĩ cái này nó tự động mà pk?
Thân. Em có gửi đính kèm file. Nhờ AC giúp đỡ.
 

File đính kèm

Lần chỉnh sửa cuối:
Thân Gửi GPE
Mình đặt sự kiện trong
PHP:
Private Sub Worksheet_Caculate()
    Application.Calculation = xlCalculationAutomatic
    Rows("41:41").EntireRow.Hidden = True
    If Cells(41, 4).Value > "0" Then
            Columns("J:K").EntireColumn.Hidden = False
        Else
            Columns("J:K").EntireColumn.Hidden = True
    End If
    If Cells(41, 5).Value > "0" Then
            Columns("L:M").EntireColumn.Hidden = False
        Else
            Columns("L:M").EntireColumn.Hidden = True
    End If
    If Cells(41, 6).Value > "0" Then
            Columns("N:O").EntireColumn.Hidden = False
        Else
            Columns("N:O").EntireColumn.Hidden = True
    End If
    If Cells(41, 7).Value > "0" Then
            Columns("P:Q").EntireColumn.Hidden = False
        Else
            Columns("P:Q").EntireColumn.Hidden = True
    End If
    If Cells(41, 8).Value > "0" Then
            Columns("R:S").EntireColumn.Hidden = False
        Else
            Columns("R:S").EntireColumn.Hidden = True
    End If
    If Cells(41, 9) > "0" Then
            Columns("T:U").EntireColumn.Hidden = False
        Else
            Columns("T:U").EntireColumn.Hidden = True
    End If
End Sub
Không hiểu tại sao Excel không thực hiện đúng (Nghĩa là: Các ô từ D41, E41,...,I41 đảm bảo >0 nhưng không thực hiện lệnh Unhide các cột như yêu cầu (J:K -> T:U)). Lúc trên office 2010, em thử vẫn bình thường. Chuyển qua 2007 không thực hiện được. Khi vao VB Editor. Ấn F5 để run thì nó mới thực hiện. Em nghĩ cái này nó tự động mà pk?
Thân. Em có gửi đính kèm file. Nhờ AC giúp đỡ.
Tôi thấy trong file bạn dùng sự kiện Worksheet_Activate thì làm sao mà nó chạy được. Sửa lại là được thôi.
 
Upvote 0
Thân Gửi GPE
Mình đặt sự kiện trong
PHP:
Private Sub Worksheet_Caculate()
    Application.Calculation = xlCalculationAutomatic
    Rows("41:41").EntireRow.Hidden = True
    If Cells(41, 4).Value > "0" Then
            Columns("J:K").EntireColumn.Hidden = False
        Else
            Columns("J:K").EntireColumn.Hidden = True
    End If
    If Cells(41, 5).Value > "0" Then
            Columns("L:M").EntireColumn.Hidden = False
        Else
            Columns("L:M").EntireColumn.Hidden = True
    End If
    If Cells(41, 6).Value > "0" Then
            Columns("N:O").EntireColumn.Hidden = False
        Else
            Columns("N:O").EntireColumn.Hidden = True
    End If
    If Cells(41, 7).Value > "0" Then
            Columns("P:Q").EntireColumn.Hidden = False
        Else
            Columns("P:Q").EntireColumn.Hidden = True
    End If
    If Cells(41, 8).Value > "0" Then
            Columns("R:S").EntireColumn.Hidden = False
        Else
            Columns("R:S").EntireColumn.Hidden = True
    End If
    If Cells(41, 9) > "0" Then
            Columns("T:U").EntireColumn.Hidden = False
        Else
            Columns("T:U").EntireColumn.Hidden = True
    End If
End Sub
Không hiểu tại sao Excel không thực hiện đúng (Nghĩa là: Các ô từ D41, E41,...,I41 đảm bảo >0 nhưng không thực hiện lệnh Unhide các cột như yêu cầu (J:K -> T:U)). Lúc trên office 2010, em thử vẫn bình thường. Chuyển qua 2007 không thực hiện được. Khi vao VB Editor. Ấn F5 để run thì nó mới thực hiện. Em nghĩ cái này nó tự động mà pk?
Thân. Em có gửi đính kèm file. Nhờ AC giúp đỡ.
Sao mà so sánh như vậy được. Ví dụ :
Cells(41, 9) > "0" phải là Cells(41, 9) > 0

Mặt khác
PHP:
    If Cells(41, 4).Value > "0" Then
            Columns("J:K").EntireColumn.Hidden = False
        Else
            Columns("J:K").EntireColumn.Hidden = True
    End If
Sao không viết thế này
PHP:
Columns("J:K").EntireColumn.Hidden=not Cells(41, 4) > 0
TDN
 
Upvote 0
Thân Gửi GPE
Mình đặt sự kiện trong
PHP:
Private Sub Worksheet_Caculate()
    Application.Calculation = xlCalculationAutomatic
    Rows("41:41").EntireRow.Hidden = True
    If Cells(41, 4).Value > "0" Then
            Columns("J:K").EntireColumn.Hidden = False
        Else
            Columns("J:K").EntireColumn.Hidden = True
    End If
    If Cells(41, 5).Value > "0" Then
            Columns("L:M").EntireColumn.Hidden = False
        Else
            Columns("L:M").EntireColumn.Hidden = True
    End If
    If Cells(41, 6).Value > "0" Then
            Columns("N:O").EntireColumn.Hidden = False
        Else
            Columns("N:O").EntireColumn.Hidden = True
    End If
    If Cells(41, 7).Value > "0" Then
            Columns("P:Q").EntireColumn.Hidden = False
        Else
            Columns("P:Q").EntireColumn.Hidden = True
    End If
    If Cells(41, 8).Value > "0" Then
            Columns("R:S").EntireColumn.Hidden = False
        Else
            Columns("R:S").EntireColumn.Hidden = True
    End If
    If Cells(41, 9) > "0" Then
            Columns("T:U").EntireColumn.Hidden = False
        Else
            Columns("T:U").EntireColumn.Hidden = True
    End If
End Sub
Không hiểu tại sao Excel không thực hiện đúng (Nghĩa là: Các ô từ D41, E41,...,I41 đảm bảo >0 nhưng không thực hiện lệnh Unhide các cột như yêu cầu (J:K -> T:U)). Lúc trên office 2010, em thử vẫn bình thường. Chuyển qua 2007 không thực hiện được. Khi vao VB Editor. Ấn F5 để run thì nó mới thực hiện. Em nghĩ cái này nó tự động mà pk?
Thân. Em có gửi đính kèm file. Nhờ AC giúp đỡ.
Không nói đến việc viết sai cú pháp, chỉ nói đến việc suy luận logic thì cách viết thế này tôi cho là.. dở (xin lỗi nếu bạn phật lòng)
Tất cả những sự việc diễn ra có chu kỳ thì ta nên "kết nối" chúng lại bằng "1 sợi dây" nào đó... Cụ thể bài này là VÒNG LẬP
Code của bạn tôi sửa thành vầy:
PHP:
Private Sub Worksheet_Calculate()
  Dim i As Long
  For i = 4 To 9
    Cells(1, (i + 1) * 2).Resize(, 2).EntireColumn.Hidden = (Cells(41, i).Value <= 0)
  Next
End Sub
 
Upvote 0
Không nói đến việc viết sai cú pháp, chỉ nói đến việc suy luận logic thì cách viết thế này tôi cho là.. dở (xin lỗi nếu bạn phật lòng)
Tất cả những sự việc diễn ra có chu kỳ thì ta nên "kết nối" chúng lại bằng "1 sợi dây" nào đó... Cụ thể bài này là VÒNG LẬP
Code của bạn tôi sửa thành vầy:
PHP:
Private Sub Worksheet_Calculate()
  Dim i As Long
  For i = 4 To 9
    Cells(1, (i + 1) * 2).Resize(, 2).EntireColumn.Hidden = (Cells(41, i).Value <= 0)
  Next
End Sub

tedaynui đã viết:
Mặt khác PHP Code:
PHP:
      If Cells(41, 4).Value > "0" Then
            Columns("J:K").EntireColumn.Hidden = False
        Else
            Columns("J:K").EntireColumn.Hidden = True
    End If
Sao không viết thế này
PHP Code:
PHP:
      Columns("J:K").EntireColumn.Hidden=not Cells(41, 4) > 0
Thật lòng cảm ơn anh NDU và anh Tedaynui. Vì em chỉ mới biết VB. Viết code chủ yếu dựa vào Record Macro để tìm hiểu thêm chứ cũng hổng có được kiến thức căn bản VB nữa. Mong nhận được sự chỉ giáo của GPE.

Hihi. Phải có sai rồi mới biết được đúng phải không ạ

Trân trọng.
 
Lần chỉnh sửa cuối:
Upvote 0
Thật lòng cảm ơn anh NDU và anh Tedaynui. Vì em chỉ mới biết VB. Viết code chủ yếu dựa vào Record Macro để tìm hiểu thêm chứ cũng hổng có được kiến thức căn bản VB nữa. Mong nhận được sự chỉ giáo của GPE.

Hihi. Phải có sai rồi mới biết được đúng phải không ạ

Trân trọng.
Bạn nói vậy là sai hoàn toàn (tôi cũng có căn bản gì đâu)
Thuật toán là do suy luận của mỗi người, mà cái THUẬT TOÁN này thì hoàn toàn hổng có liên quan gì đến kiến thức cả
Thuật toán có được từ trí thông minh còn kiến thức chỉ là công cụ hổ trợ, bạn nhớ cho điều này
Trí thông minh cũng có thể rèn luyện qua từng ngày, chỉ cần bạn chịu khó ngay từ những việc nhỏ nhất... Đừng quá ỷ lại vào mọi người
(Tôi cũng thuộc dạng NGU nên vẫn phải cố gắng mỗi ngày)
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom