Nhờ các thầy giúp viết code hide * Unhide colums cho file đính kèm ạ. (1 người xem)

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

Người dùng đang xem chủ đề này

oshi

Thành viên chính thức
Tham gia
5/5/09
Bài viết
51
Được thích
1
Em võ vẽ ko biết VBA là gì đâu ạ. Nhờ các thầy, các bạn gia tay giúp em TH này ạ.
Em muốn unhide hoặc hide một số cột nằm ngoài chu kì tính lương của em.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([b4], Target) Is Nothing Then
Dim Dat As Date, Dauthang As Date, Cuoithang As Date
Dim Ww As Byte
Dim hRng As Range, Clls As Range

HideColumns Target: Range([g17], [an17]).Clear
Dat = Target.Value: Dauthang = DateSerial(Year(Dat), 1, 1)
Cuoithang = DateSerial(Year(Dat), 12, 31)
For Each Clls In Range([g19], [g19].End(xlToRight))
If Clls < Dauthang Or Clls > Cuoithang Then
If hRng Is Nothing Then
Set hRng = Clls.EntireColumn
Else
Set hRng = Union(hRng, Clls.EntireColumn)
End If
End If
If Clls = Dauthang Then Clls.Offset(-3) = Dat
Next Clls
hRng.Select
HideColumns hRng, False
End If
End Sub
Sub HideColumns(Rng As Range, Optional AllCols As Boolean = True)
If AllCols Then
Cells.Select
Selection.EntireColumn.Hidden = False
Else
Rng.EntireColumn.Hidden = True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([b4], Target) Is Nothing Then
HideColumns Target
[b5].Select
End If
End Sub
 

File đính kèm

hic, các bạn, các thầy vào giúp em với ạ :) . Em cần gấp ạ.
 
Upvote 0
hic,
bác nào viết code đó nhìn sao thấy "rắc rối sự đời" --=0

bạn tải file đính kèm, về xem nhé (mình tạm off hết sự kiện của sheet đó rồi)

Link: https://www.mediafire.com/?lr53oqn5xn2gg12
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn anh Phucbugis đã trả lời em sớm.

Th này em phải gửi đi rất nhiều văn phòng ở các nước ạ.
Không phải bạn nào cũng có hiểu biết về Excel. Chu kì tính lương hàng tháng sẽ adjust nên em không biết để button: hide & show thế có ổn không ? Sợ họ tháng nào đó chu kì thay đổi, ko ấn vào hide thì sẽ ko re-fresh duoc bang cham cong cua thang do.
Em muốn có file khi mình type vào phần to: 22/4/2014 (Chốt công vào 22/4/2014) hoặc tháng tiếp theo chốt từ 23/4/2014 - 25/5/2014 là tự động cột sẽ bị hide đi chứ không phải ấn thủ công để hide hoặc show all nữa anh ạ.
Hiện tại file của anh đang để button show & hide, khi in ra cũng sẽ có 2 button đấy mà em thì không muốn có button đó ạ.
Anh nghiên cứu giup em xem co phuong an khac ko a ?
 
Upvote 0
hehe,
vậy bạn thay thế đoạn code bên dưới cho code cũ nhé:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$5" Then Call GPE_hideColumns
End Sub
'- - - - -
khi cài sâu vào bên trong, nếu người dùng mở file mà ko kích hoạt Macro thì sự kiện trên sẽ ko có tác dụng, ---> đặt Nút lệnh như vậy thì họ dễ thấy hơn + chủ động show all or hide -0-/. (bạn thiết kế lại nút đó và bố trí cho hợp lý là được, khi in ra thì nút đó ko có thấy)
 
Upvote 0
Anh Phucbugis ơi,

Em có 2 vấn đề vs file này nữa ạ :)>

1. Em muốn khi chuyển chu kì (CN sẽ thay đổi màu)/ Working day của tháng trước "1" sẽ không còn nằm trong weekday nữa mà nó bị nằm vào ô Chủ nhật. Vậy có cách nào khi chuyển chu kì thì nó tự động đánh "1" vào weekday ko ạ ?

2. Về subtotal (ở cột Total working day)(em định sử dụng subtotal để tính số công ở các cột Show) nhưng hiện tại không làm như vậy được, nó tính tổng theo range toàn bộ cả show và hide ?

3. Một số các kí tự khác em dùng countif để đếm ngày trong tháng vậy có cách nào để đêm cho những cột show trong tháng ko ạ ? nó hiện tại vẫn đang đếm toàn bộ range.


Anh giúp em nhé.
 
Upvote 0
Anh Phucbugis ơi,
Em có 2 vấn đề vs file này nữa ạ :)>
...

chào bạn, mình trả lời 2, 3 trước:
bạn thử công thức:
ô AO20
=SUMIF($G$17:$AN$17;"show";G20:AN20)
ô AP20
=COUNTIFS($G$17:$AN$17;"show";G20:AN20;"AL")+COUNTIFS($G$17:$AN$17;"show";G20:AN20;"0.5AL")*0,5
(nếu xảy ra lỗi ở ; thì đổi lại thành dấu ,)

vđ1, thì mình chưa hiểu, nếu có thể bạn tạo 1 ít số liệu vào đó (gửi lại File) + mô tả lại để mình dễ hình dung hơn ko?
 
Upvote 0
Đây ạ.

Ý của em là khi thay đổi chu kì, em muốn số liệu của em về mặc định là số "1" ở những ô week days.
p1.jpgp3.jpg
 
Upvote 0
chào bạn, mình trả lời 2, 3 trước:
bạn thử công thức:
ô AO20
=SUMIF($G$17:$AN$17;"show";G20:AN20)
ô AP20
=COUNTIFS($G$17:$AN$17;"show";G20:AN20;"AL")+COUNTIFS($G$17:$AN$17;"show";G20:AN20;"0.5AL")*0,5
(nếu xảy ra lỗi ở ; thì đổi lại thành dấu ,)

vđ1, thì mình chưa hiểu, nếu có thể bạn tạo 1 ít số liệu vào đó (gửi lại File) + mô tả lại để mình dễ hình dung hơn ko?

anh ơi, em chụp lên rồi ạ. Anh xem giúp em với .
 

File đính kèm

  • p1.jpg
    p1.jpg
    20.3 KB · Đọc: 3
  • p3.jpg
    p3.jpg
    20.2 KB · Đọc: 1
Upvote 0

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

Back
Top Bottom