Loại khoảng trắng & bỏ dấu tiếng việt

Liên hệ QC

Thien

Thành viên thường trực
Tham gia
23/6/06
Bài viết
352
Được thích
112
Nhờ các bác viết code ứng dụng trong việc Loại khoảng trắng & bỏ dấu tiếng việt. Hiện tại ứng dụng hàm LoaiDauUni & AllTrim thấy phải mở thêm cột khó khăn quá.

ví dụ: khi chọn chữ Tàu Hủ và chạy macro sẽ thành TauHu.

Ứng dụng hàm trên chỉnh sửa tá lả để thành marco chẳng được như ý. Tiện cho mình hướng dẫn sự khác nhau giữa hàm & macro & cách chuyển đổi chúng.

TC.
 
BNTT đã viết:
Hàm Trim chỉ có thể dùng trong cell của Excel thôi.
Mình làm cái này để gài vào mấy ô nhập liệu trong cái Form.
Gán vào cái sự kiện AfterUpdate()ấy.
Nếu chỉ có yêu cầu như thế thì anh nên dùng luôn hàm Trim của Excel để thực hiện việc loại khoảng trắng.

Ví dụ:
PHP:
 Private Sub TextBox1_AfterUpdate()
    Sheets(1).Cells(1, 1).Value = Application.WorksheetFunction.Trim(TextBox1.Value)
End Sub
Anh xem thêm file đính kèm.

FB.
 

File đính kèm

  • TestForm.zip
    12.2 KB · Đọc: 175
Upvote 0
Không phải rồi bạn ơi, tôi dùng cái này cho riêng cái Textbox thôi:
PHP:
Sub Textbox1_AfterUpdate()
Textbox1 = BoKhoangTrang(Textbox1)
End Sub
Chớ không phải dùng cho 1 cell ở ngoài Excel sau khi nhập vào Textbox1.
 
Upvote 0
BNTT đã viết:
Không phải rồi bạn ơi, tôi dùng cái này cho riêng cái Textbox thôi:
PHP:
Sub Textbox1_AfterUpdate()
Textbox1 = BoKhoangTrang(Textbox1)
End Sub
Chớ không phải dùng cho 1 cell ở ngoài Excel sau khi nhập vào Textbox1.

Bác xem nhé :
PHP:
Sub Textbox1_AfterUpdate()
    Textbox1.Value = WorksheetFunction.Trim(Textbox1.Value)
End Sub

Thân!
 
Upvote 0
Hình như tớ đã dùng cái này 1 lần, nhưng hồi đó còn rất dốt VBA, nó cứ làm sau ấy nên mới sử dụng cái hàm BoKhoangTrang kia. Để tớ xem thử nhé.
Cảm ơn Bap nhiều. Hôm nào xuống Saigon đi ăn lẩu dê nữa nhé! ...
 
Upvote 0
FunnyBoy đã viết:
Nếu chỉ có yêu cầu như thế thì anh nên dùng luôn hàm Trim của Excel để thực hiện việc loại khoảng trắng.

Ví dụ:
PHP:
 Private Sub TextBox1_AfterUpdate()
Sheets(1).Cells(1, 1).Value = Application.WorksheetFunction.Trim(TextBox1.Value)
End Sub
Anh xem thêm file đính kèm.

FB.

cái này của pác loại bỏ khoảng trắng rất tốt nhưng bạn có cách nào thêm vào khi chọn row hoặc colum một cách tùy ý có được không,hơn nữa cái của bạn làm thì mình chỉ gõ một dòng thôi nhưng xuống dòng thì không được (còn trong 1cell khi muốn gõ dòng kế tiếp thì nhấn Alt+ẻnter là gõ được rồi ), không có nút insert để chuyển ra ngoài cho thuận tiện, mỗi lần nhập xong thì đóng lại thì khó lắm bạn nhé! mong bạn cải tiến tiếp tục nhé
 
Upvote 0
Macro của các bác chạy ngon rồi, nhưng làm sao để cho nó chuyển tự động được không
VD: khi điền tên vào A1: Nguyễn Văn Bình thì tự động B1: Nguyen Van Binh
 
Upvote 0
làm thế nào khi nhập tên vào cột Họ & Tên thì Excel biết được thừa khoảng trắng
vd:
stt|Họ và Tên|thừa khoảng trắng
1|Nguyễn Văn A n| chữ An (tên)
2|Trần M inh Phi|chữ Minh (chư lót)
3| D ương Hùng Minh|chữ Dương (họ)
loại bỏ khoảng trắng
stt| Họ và Tên 1| Nguyễn Văn An 2| Trần Minh Phi 3| Dương Hùng Minh

có như thế thì hay biết mấy có thể nào dùng VBA được không
 
Lần chỉnh sửa cuối:
Upvote 0
làm thế nào khi nhập tên vào cột Họ & Tên thì Excel biết được thừa khoảng trắng
vd:
stt|Họ và Tên|thừa khoảng trắng
1|Nguyễn Văn A n| chữ An (tên)
2|Trần M inh Phi|chữ Minh (chư lót)
3| D ương Hùng Minh|chữ Dương (họ)
loại bỏ khoảng trắng
stt| Họ và Tên 1| Nguyễn Văn An 2| Trần Minh Phi 3| Dương Hùng Minh
có như thế thì hay biết mấy có thể nào dùng VBA được không

Biết được nghĩa là như thế nào bác nhỉ ??? nghĩa là thông báo ở ô bên cạnh à ??

Nếu thế chỉ cần :

PHP:
=NOT(ISERROR(FIND("  ";A1;1)))
" " : 2 khoảng trắng

Nếu là True thì OK, nếu là False thì nghĩa là có lỗi.

Thân!
 
Upvote 0
Xin các Bro chỉ giúp
Tôi copy 1 sheet "TH" của File A dán vào sheet (trống) file B, đặt tên là "BANG1", khá nhiều cell trong "TH" có truy cập giá trị của cell khác
Tại BANG1 làm sao loại bỏ các đường link này để mỗi khi mở, không hỏi "Update..."
(không dùng paste values, vì muốn copy các công thức hữu ích)
cám ơn nhìu
 
Upvote 0
không cần phải thông báo đâu chỉ cần loại bỏ khoảng là được rồi nếu dùng công thức thì phải thêm cột phục thì rườm rà nhé!
 
Upvote 0
không cần phải thông báo đâu chỉ cần loại bỏ khoảng là được rồi nếu dùng công thức thì phải thêm cột phục thì rườm rà nhé!

Có nghĩa là tại A1, khi nhập họ tên xong thì tư động loại trừ khoảng trắng thừa cũng trên A1 luôn phải không ???

Thân!
 
Upvote 0
Có nghĩa là tại A1, khi nhập họ tên xong thì tư động loại trừ khoảng trắng thừa cũng trên A1 luôn phải không ???
Thân!
Bạn có thể viết thủ tục trong Thisworkbook nếu muốn tất cả các sheet khi nhập xong thì loại khoảng trắng ô mới nhập:
Mã:
[FONT=Verdana][FONT=Verdana]Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)[/FONT]
[FONT=Verdana]Target.Value = Application.WorksheetFunction.Trim(Target.Value)[/FONT]
[FONT=Verdana]End Sub[/FONT]
[/FONT]

Còn nếu muốn chỉ làm việc riêng 1 sheet nào đó thì viết thủ tục trong trong Worksheet đó:
Mã:
[FONT=Verdana][FONT=Verdana]Private Sub Worksheet_Change(ByVal Target As Range)[/FONT]
[FONT=Verdana]Target.Value = Application.WorksheetFunction.Trim(Target.Value)[/FONT]
[FONT=Verdana]End Sub[/FONT]
[/FONT]
 
Lần chỉnh sửa cuối:
Upvote 0
em muốn cập nhật thêm khi gõ vào chữ thường thì chuyển sang Chữ Hoa Đầu Câu thì như thế nào nhỉ!
 
Upvote 0
em muốn cập nhật thêm khi gõ vào chữ thường thì chuyển sang Chữ Hoa Đầu Câu thì như thế nào nhỉ!
Trong VBA không có hàm tương đương với PROPER của Excel nên phải viết thủ tục làm việc này:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
myValue = LCase(Application.WorksheetFunction.Trim(Target.Value))
If myValue <> "" Then
  i = 0
  Do
    Mid(myValue, i + 1, 1) = UCase(Mid(myValue, i + 1, 1))
    i = InStr(i + 1, myValue, " ")
  Loop While i > 0
  Target.Value = myValue
End If
End Sub
Thủ tục trên tương đương với TRIM(PROPER(chuỗi)) của Excel.
Chú ý sau khi chuyển xong nó thành chuỗi (mất công thức)

Đính chính:
Bài số 32 viết sai. bạn xóa Selection
Mã:
Private Sub Worksheet_[B][COLOR=red]Selection[/COLOR][/B]Change(ByVal Target As Range)
Target.Value = Application.WorksheetFunction.Trim(Target.Value)
End Sub
Đúng là:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Value = Application.WorksheetFunction.Trim(Target.Value)
End Sub
Tôi đã chỉnh lại bài 32
 
Upvote 0
Bác nào có hàm chuyển đổi như trên post lên cho em xem với.
Em cũng đang muốn chuyển đổi tên Tiếng Việt sang thành tên không dấu nhưng vẫn giữ lại khoảng trắng.
VD giống như của cool y.
 
Upvote 0
bỏ dấu trong unikey là sao mình chưa hiểu lém
  1. Bạn chọn một đoạn văn muốn bỏ dấu (loại bỏ các dấu thanh), nhấn Copy (Ctrl+C)

  2. Mở cửa sổ Công cụ của Unikey:
    000-131.gif

  3. NguồnĐích, chọn cùng một loại bảng mã.

  4. Đánh dấu kiểm vào tùy chọn Loại bỏ dấu trong nhóm các tùy chọn bên phải.

  5. Nhấn nút Chuyển mã phía dưới bên trái.

  6. Quay lại nơi chứa văn bản cần loại bỏ dấu thanh, nhấn Ctrl+V để dán nội dung đã được loại bỏ hết dấu thanh tiếng Việt.
 
Upvote 0
Cảm ơn anh BNTT nhìu nhìu. Có vậy thôi mà Bé tí xíu hổng biết làm, xưa giờ cứ phải gõ lại cả câu nếu muốn bỏ cái dấu thanh đi.
Nhưng trong đó có cái "Không dùng rich text" là sao hở anh? Rich Text = "chữ giàu" ? hay "nhiều chữ" (giống benhieuchien) ?
 
Upvote 0
Thank bạn nhiều ... đang cần chuyển đổi tên để in bằng ... năm nay mẫu bằng tc có cả tiếng anh
 
Upvote 0
các bác cho em hỏi hàm loại dấu này bị lỗi là do cái gì , dùng hàm rồi mà vẫn còn dấu như thường
 

File đính kèm

  • loai dau.xls
    13.5 KB · Đọc: 40
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom