Thay đổi cỡ chữ và kích thước bảng tính bằng Macros.

Liên hệ QC

thanhaka

Thành viên mới
Tham gia
4/11/07
Bài viết
12
Được thích
0
Nghề nghiệp
Student
Mình có một bảng thống kê những khách hàng nợ tiền. Mỗi lần in ra mình chỉ để cỡ chữ 7 thôi, vì có nhiều cột quá mà mình muốn in toàn bộ danh sách trong 1 tờ giấy A4 thôi. Nhưng mỗi lần nhập số liệu mới mình toàn phải chỉnh cỡ chữ to hơn và căn lại cột cho dễ nhìn để dễ nhập. Mình muốn dùng macros để thay đổi cỡ chữ cũng như thay đổi kích thước cột 1 cách nhanh chóng, bạn nào biết giúp mình với. Mình chảng biết gì về Macros cả. Viết cho mình đoạn code mẫu nhé. +-+-+-+
 
Bạn có thể sử dụng đoạn code đơn giản sau:
Mã:
Sub Macro1()
    Cells.Select
    Range("A1").Activate
    With Selection.Font
    If .Size = 14 Then
        .Size = 26
       Selection.ColumnWidth = 11
    Else
       .Size = 14
       Selection.ColumnWidth = 6
    End If
  End With
  End Sub
Bạn có thể đặt lại cỡ chữ và độ rộng cột theo ý của bạn. Sau đó gắn cho macro này một nút. Đặt trên thanh công cụ và khi muốn chuyển đổi nhấn nút là xong
 
Tự động sắp xếp cột tên theo vần ABC, và cột STT, ô chứa tên và công thức...

Cảm ơn bạn Tú Anh nhiều,
Vấn đề thứ nhất: Nếu bạn biết chỉ dùm luôn, mình phải nhập và xóa dữ liệu của nhiều người hàng ngày. Khách hàng của mình đã trả tiền mình rồi, mình phải xóa hết các khoản nợ của họ nhưng mình muốn giữ lại tên họ và công thức trong các ô. Cũng vì có nhiều mặt hàng lắm thế nên xóa từng mặt hàng một là hơi mất thời gian. Làm cách nào để xóa 1 cách nhanh nhất ko? VD như là mình chỉ vào đầu hàng thì sẽ bôi đen được cả hàng đó và ấn delete là xóa toàn bộ hàng đó nhưng những ô: STT, tên và công thức sẽ vẫn giữ nguyên như cũ mỗi lẫn mình ấn nút delete.
Vấn đề thứ 2: Nếu mình xóa hoặc thêm 1 khách hàng ( xóa hoặc thêm 1 hàng ), có cách nào để cột tên tự sắp xếp 1 cách tự động và cột STT tự điền số thứ tự như thế không nhỉ? ( Nếu bạn nào biết làm bằng Macros thì chỉ giúp nha )
Mình nghĩ ra nhiều cái hay không? Hi......
 
Vấn đề thứ hai, bạn đọc ở đây nè, nhiều lắm.
 
Xin lỗi bạn thanhaka. Lâu rối mới vào lại diễn đàn nên giờ mới đọc bài thắc mắc của bạn.
Vấn đề để xóa hết các khoản nợ của khách nhưng vẫn giữ lại tên của họ thì có thể giải quyết bằng đoạn mã đơn giản sau:
Mã:
Sub xoadulieu()
Cells(ActiveCell.Row, ActiveCell.Column + 2).ClearContents
Cells(ActiveCell.Row, ActiveCell.Column + 3).ClearContents
Cells(ActiveCell.Row, ActiveCell.Column + 4).ClearContents
End Sub
khi đó bạn bấm chọn ô có tên khách hàng cần xóa các khoản nợ và cho chạy macro nó sẽ xóa dữ liệu trong các ô ở trên cùng hàng đó và nằm ở cột cách cột chứa tên khách hàng 2, 3, 4 cột (cái này bạn điều chỉnh cho phù hợp với bảng của bạn.
Còn việc giưc lại công thức mình nghĩ nếu bạn xóa hết các ô chỉ có dự liệu nhập vào thì tự động các ô có dùng công thức để tính sẽ trả về giá trị 0 thì cần gì phải xóa, còn nếu bạn vẫn muốn xóa dữ liệu ở ô đó và giữ lại công thức thì dùng đoạn mã sau:
Mã:
Sub Xoa()
    Cells(ActiveCell.Row, ActiveCell.Column + 2).Select
    Selection.Copy
    Sheet1.Cells(1, 1).PasteSpecial Paste:=xlPasteFormulas
    Selection.ClearContents
    Sheet1.Cells(1, 1).Copy
    Selection.PasteSpecial Paste:=xlPasteFormulas
End Sub
bản chất của đoạn mã này là nó sẽ tạm thời chép công thức sang một ô ở sheet khác, sau khi xóa xong dự liệu sẽ chép lại công thức về ô cũ.
Chúc bạn làm tốt công việc của mình.
 
- Theo tớ kể cả khi xóa dữ liệu nhập, vì việc xóa dữ liệu bằng Macro, dữ liệu ko lưu trong clipboard không thể phục hồi bằng cách Undo được. Để an toàn, nên tạo một UserForm để xác nhận việc xóa (CÓ hay KHÔNG). Nếu CÓ thì cho chạy đoạn macro xóa, nếu KHÔNG thì hide UserForm.

-Còn việc giưc lại công thức mình nghĩ nếu bạn xóa hết các ô chỉ có dự liệu nhập vào thì tự động các ô có dùng công thức để tính sẽ trả về giá trị 0 thì cần gì phải xóa
- Đúng như Tú Anh nói, chỉ nên xóa vùng dữ liệu nhập, vùng chứa công thức sẽ hiển thị kết quả theo dữ liệu nhập. Bất kể hiển thị là như nào thì việc xóa vùng này là không thể. Việc chuyển đổi từ vùng này qua vùng khác cũng không có ý nghĩa gì vì nó luôn tham chiếu tới vùng dữ liệu nhập.
 
Web KT
Back
Top Bottom