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

Liên hệ QC

PhanTuHuong

VBA & VB.NET for Excel & AutoCad
Thành viên danh dự
Tham gia
13/6/06
Bài viết
7,121
Được thích
24,279
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!
 
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!
If Not Application.Intersect(Target, Range("A1:O30")) Is Nothing
 
Upvote 0
Nếu được thì bác Hướng có thể giải thích thêm đoạn code này không? &&&%$R
PhanTuHuong đã viết:
Mã:
  If Not Application.Intersect(Target, Range("A1:O30")) Is Nothing Then
[/quote] 
 - [COLOR=Red]Byval Target [COLOR=Black]ý nghĩa là gì? Có phải là mình khai báo biến [COLOR=Red]Target[/COLOR] là range ko?
Và đoạn code trên có phải là: "nếu Ô target mà mình chọn có giao (intersect) với khối ô đã chọn thì..."?
Thanks bác trước!!!
[/COLOR][/COLOR]
 
Lần chỉnh sửa cuối:
Upvote 0
PhanTuHuong đã viết:
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!

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 !
 
Upvote 0
ThuNghi đã viết:
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!
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.
 
Upvote 0
Hàm UPPER trong Excel có sẳn sao phải dùng đến VBA nhỉ?
 
Upvote 0
anhtuan1066 đã viết:
Hàm UPPER trong Excel có sẳn sao phải dùng đến VBA nhỉ?
Nếu bảng tính của bạn có nhiều Text thì chỉ gõ tên hàm cũng ốm!

Not Application.Intersect(Target, Range("A1:O30")) Is Nothing

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:
Upvote 0
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 ?
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.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim FirstText As String, LastText As String, Text As String
Dim Txt As String
If Not Application.Intersect(Target, Range("A1:A30")) Is Nothing Then
'On Error GoTo bien:
Txt = Target.Value
Txt = Application.WorksheetFunction.Trim(Txt)
FirstText = ""
Text = ""
LastText = Right(Txt, Len(Txt) - InStrRev(Txt, " "))
LastText = UCase(Left(LastText, 1)) & Right(LastText, Len(LastText) - 1)
i = 1
Do While i > 0 And InStr(1, Txt, " ") > 0
FirstText = Application.WorksheetFunction.Trim(Left(Txt, InStr(1, Txt, " ")))
FirstText = UCase(Left(FirstText, 1)) & Right(FirstText, Len(FirstText) - 1)
Text = Text & " " & FirstText
i = Len(FirstText)
Txt = Application.WorksheetFunction.Trim(Right(Txt, Len(Txt) - i))
Loop
Text = Text & " " & LastText
Target.Value = Application.WorksheetFunction.Trim(Text)
'bien:
End If
End Sub
 
Upvote 0
vungoc đã viết:
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 ?
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 !
 
Upvote 0
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.
 
Upvote 0
Chân thành cảm ơn tất cả các bạn !
 
Upvote 0
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!

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 Object, ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:O30")) Is Nothing Then
    Target.Value = LCase(Target.Value)
  End If
End Sub
 
Upvote 0
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 Object, ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:O30")) Is Nothing Then
    Target.Value = LCase(Target.Value)
  End If
End Sub
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
 
Upvote 0
Hãy cẩn thận khi xóa dữ liệu trong vùng ("A1:O30")

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!

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ì ... --=-- --=----=--
 
Upvote 0
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ì ... --=-- --=----=--
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 -=.,,
 
Upvote 0
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.
 
Upvote 0
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ỉ?
 
Upvote 0
Web KT
Back
Top Bottom