Chào các bác trên GPE.
Các bác cho em hỏi làm thế nào để độ rộng của cột tự động thay đổi theo số ký tự ta nhập vào. Trong excel em thấy chỉ gõ số thì cột mới tự động thay đổi còn text .. thì không.
Em xin cám ơn!
Cũng đơn giản thôi... Đầu tiên tôi gõ nhăng nhít gì đó vào 1 cell trong cột B, tiếp theo record macro, tôi bấm vào cột B, rà chuột vào ngay biên của cột B và C rồi Double Click ...đễ AutoFit... tắt record, tôi sẽ dc 1 code như sau:
Mã:
Sub Macro1()
'
' Macro1 Macro
' Macro recorded 12/10/2007 by VTT
'
'
Columns("B:B").EntireColumn.AutoFit
End Sub
Giờ thì sửa lại
Mã:
Sub Macro1() --->[COLOR=red] [/COLOR][COLOR=#000000][COLOR=#0000bb][/COLOR][COLOR=black][COLOR=#007700]Private [/COLOR][COLOR=#0000bb]Sub WorkSheet_Change[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]ByVal target [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000bb]Range[/COLOR][/COLOR][COLOR=#007700][COLOR=black])
[/COLOR][/COLOR][/COLOR] cho nó tự động theo sự thay đổi của dử liệu nhập vào.. và....
Để ứng dụng cho tất cả các sheets trong workbook làm như sau. Xin chia sẽ với bạn:
1> Bấm Alt + F11 vào cửa sổ VBE
2> Khung bên trái chọn This Workbook
3> Khung bên phải, phía trên có 2 mục, mục bên trái đang mặc định chọn General... Click chọn mũi tên xổ xuống và chọn Workbook
4> Nhìn mục bên phải... chọn mũi tên xổ xuống bạn sẽ thấy cả 1 rừng các sự kiện... Kéo từ từ đễ tìm cho mình 1 sự kiện phù hợp..
Như yêu cầu này thì ta sẽ tìm cái gì đó có liên quan đến Change... Vậy thì có ngay mục "SheetChange"... Bấm chọn vào ta sẽ dc "nguyên con"
Mã:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
End Sub
Giờ thì quá dễ... điền code vào giữa là xong
ANH TUẤN
Mạn phép Bác Tuấn nhé em thêm cái Unprotect Sheet vào cho trường hợp sheet đã protect. (không có password)
Private Sub WorkSheet_Change(ByVal target As Range)
ActiveSheet.Unprotect
ActiveCell.EntireColumn.AutoFit
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,Scenarios:=True
End sub
Em bắt đầu học VBA các bác thông cảm nhé có gì sai sót các bác chỉ bảo cho.
Xin hỏi thêm các bác về " mở rộng " đề tài này:
Nếu ta chọn 1 cel thì AutoFit Column ở fomat là được như ý các bác như phần trên rồi ( kể cả dùng MRo). Tuy nhiên nếu ta làm động thái sáp nhập ô ( merge cels ) và độ rộng cột không thay đổi, thì làm thế nào để động rộng của dòng cũng tự động điều chỉnh cho hợp lý ( đồng thời canh đều như đánh trong word thì càng tốt ).
Bác nào biết thì chỉ giáo giúp. Xin cảm ơn!
To Salam
Bạn dùng thử code sau để áp dụng trên mọi sheet của workbook. Nhưng theo mình làm kiểu này chỉ khiến bảng tính chạy chậm hơn mà thôi. Bạn cân nhắc nhé.
PHP:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
ActiveCell.EntireColumn.AutoFit
End Sub