Lớp học GPE tháng 10 - TPHCM: Conditional Formatting và Data Validation (tối 4, 6/10) | Excel cơ bản (tối 9, 11, 13/10) |
Thuần thục các hàm dò tìm (tối 10, 12/10) | Tất tần tật về PivotTable (tối 16, 18, 20/10) |
Tất tần tật về Filter và Advanced Filter (tối 23, 25/10) | Name động và biểu đồ (tối 24, 26, 28/10)

Đăng ký học Khởi đầu cùng Google Spreadsheet - 2 chủ nhật 1 và 8/10 - TPHCM

Đăng ký học Xây dựng ứng dụng Form bằng VBA - 2 chủ nhật 15 và 22/10 - TPHCM

Luôn mặc định chữ in hoa khi nhập dữ liệu vào bảng tính

Thảo luận trong 'Lập Trình với Excel' bắt đầu bởi PhanTuHuong, 5 Tháng tám 2007.

  1. PhanTuHuong

    PhanTuHuong Excel & AutoCad & VBA

    Khi sử dụng kiểu gõ Unicode, để nhập chữ in hoa, thông thường phải sử dụng phím Caps Lock. Nhưng tôi có 1 cách chuyển tự động chuyển chữ thường thành chữ hoa bằng cách sử dụng VBA. Đầu tiên ấn Alt+F11, cửa sổ MVB hiện ra, sau đó chọn Sheet nào bạn muốn rồi bấm đúp để hiện cửa sổ code, sau đó copy dòng này vào:

    Mã:
    Private Sub Worksheet_Change(ByVal Target As Range)
      If Not Application.Intersect(Target, Range("A1:O30")) Is Nothing Then
        Target.Value = UCase(Target.Value)
      End If
    End Sub
    Range("A1:O30") là vùng tuỳ chọn, hãy thử xem sao!
     
  2. ThuNghi

    ThuNghi Hãy cho rồi sẽ nhận!

    Nhờ anh Hướng giải thích thêm về câu sau, tôi chỉ hiểu lờ mờ.
    Và thuật ngữ recordset, thấy đâu đó mà không hiểu.
    Cám ơn nhiều!
     
  3. funnyzui

    funnyzui Thành viên mới

    Nếu được thì bác Hướng có thể giải thích thêm đoạn code này không? &&&%$R
     
    Lần chỉnh sửa cuối: 6 Tháng tám 2007
  4. ongtrungducmx25

    ongtrungducmx25 Thành viên gạo cội

    Lần chỉnh sửa cuối: 6 Tháng tám 2007
  5. vungoc

    vungoc Thành viên tiêu biểu

    Anh Hướng cho mình hỏi: Nếu muốn chuyển chữ thường sang chữa Hoa (các chữ đầu từ) thì sửa code như thế nào ?

    Cảm ơn anh !
     
  6. OverAC

    OverAC Đỗ Nguyên Bình Staff Member

    Gởi anh ThuNghi,
    Intersect trong đoạn code của bác hướng nghĩa là phép giao (phép tính logic). Chứ không liên quan đến recordset. Để tìm hiểu về recordset bác hãy thử tìm các topic về ADO nhé.

    Em nói thêm về ý nghĩa đoạn code:
    Mã:
    Not Application.Intersect(Target, Range("A1:O30")) Is Nothing
    Đoạn này có ý nghĩa xem xét khu vực nhập liệu. Nếu vược ra ngoài vùng A1:O30 thì không sét. Chỉ có vậy thôi àh.
     
  7. anhtuan1066

    anhtuan1066 Thành viên gạo cội

    Hàm UPPER trong Excel có sẳn sao phải dùng đến VBA nhỉ?
     
  8. PhanTuHuong

    PhanTuHuong Excel & AutoCad & VBA

    Nếu bảng tính của bạn có nhiều Text thì chỉ gõ tên hàm cũng ốm!

    Intersect lấy giao của Target với vùng ta đặt, hai lần của phủ định có nghĩa là khẳng định (có giao nhau), khi đó lệnh mới có tác dụng. Ngoài vùng giao nhau thì vô tác dụng. Bác SD_AQ đã đề cập đến phương thức Intersect rồi đó.
     
    Lần chỉnh sửa cuối: 6 Tháng tám 2007
  9. ThuNghi

    ThuNghi Hãy cho rồi sẽ nhận!

    Tôi xào nấu các code của các bạn tạo ra code này cho Vũ Ngọc.
    Nhờ các Mod trau chuốt hộ để tôi có thể làm tốt hơn.
     
  10. tedaynui

    tedaynui (*_*)

    Chào Anh
    Anh dùng thử code này xem sao nhé
    Mã:
    Private Sub Worksheet_Change(ByVal Target As Range)
      If Not Application.Intersect(Target, Range("A1:O30")) Is Nothing Then
        Target.Value = Application.Proper(Application.Trim(Target.Value))
      End If
    End Sub
    Thân !
     
  11. ThuNghi

    ThuNghi Hãy cho rồi sẽ nhận!

    Công nhận mình máy móc thiệt, có hàm proper mà làm lung tung. Cám ơn tedaynui nhiều.
    Thôi kệ, cũng là cơ hội học viết hàm. Nguyên liệu như trên, thêm mắm muối -> other code.
     
  12. vungoc

    vungoc Thành viên tiêu biểu

    Chân thành cảm ơn tất cả các bạn !
     
  13. ongtrungducmx25

    ongtrungducmx25 Thành viên gạo cội

    Vậy luôn mặc định chữ hoa đầu từ thì sao nhỉ!
    đây là code cho mặc định chữ thường
    PHP:
    Private Sub Workbook_SheetChange(ByVal Sh As ObjectByVal Target As Range)
    If 
    Not Application.Intersect(TargetRange("A1:O30")) Is Nothing Then
        Target
    .Value LCase(Target.Value)
      
    End If
    End Sub
     
  14. DOSNET

    DOSNET Thành viên danh dự

    Thì bài #10 nói rồi đó bác. Biến Sh khai báo làm gì vậy bác? Code của bác khác code của bác Hướng chữ U và chữ L --=0
     
  15. boyxin

    boyxin Members actively

    Hãy cẩn thận khi xóa dữ liệu trong vùng ("A1:O30")

    Hãy cẩn thận khi xóa dữ liệu trong vùng ("A1:O30")
    Nếu muốn xóa thì chọn và xóa từng cell. Nếu chọn cả vùng ("A1:O30") rồi nhấn nút Delete thì ... --=-- --=----=--
     
  16. DOSNET

    DOSNET Thành viên danh dự

    Thêm vào đầu thủ tục On error resume next là OK bác Boyxin à, cái này Dosnet được Hoangdanh mách cho -=.,,
     
  17. sudden_death

    sudden_death Thành viên mới

    Có một vấn đề nữa là nếu làm theo cách này thì khi em link dữ liệu từ ô khác sang thì ô mình mặc định viết hoa sẽ không cập nhật dữ liệu khi dữ liệu nguồn thay đổi. Các bác xem lại giúp em.
     
  18. stao

    stao Thành viên mới

    Có cách nào khắc phục lỗi khi xóa trên cột cần chuyển đổi chữ thường thành hoa không nhỉ?
     
  19. dongducnhiem

    dongducnhiem Thành viên tiêu biểu

    Bài #16 đã có hướng dẫn đó bạn!
     
  20. stao

    stao Thành viên mới

    Mình làm rồi nhưng vẫn bị :(
     

Chia sẻ trang này