Tặng thủ tục ĐỊNH DẠNG NUMBER TRỰC TIẾP KHI GÕ TRÊN TEXTBOX

Liên hệ QC

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,662
Được thích
16,717
Giới tính
Nam
Nhân dịp đón Tết Dương lịch, tôi đã viết các thủ tục để định dạng số trên TextBox mà không cần thoát khỏi nó mới định dạng, các bạn chỉ cần gõ và gõ, nó định dạng như bạn mong muốn.

Ở các thủ tục dưới đây, tôi dùng 2 kiểu định dạng, kiểu Quốc tế (#,##0.00) và kiểu của Việt Nam (#.##0,00). Với Control Panel, khi bạn chọn 1 trong 2 kiểu này thì thủ tục của tôi sẽ hoạt động hiệu quả.

Cũng vì tiếp theo yêu cầu của bài dưới đây, cho nên tôi đã nghĩ đến các đặc điểm của TextBox và tôi đã gần như thành công hoàn toàn.

Nói chung đây là vấn đề khá phức tạp đấy, yêu cầu đầy đủ phải là:
-Khi gõ các số đã gõ xong phải được định dang ngay để ngươi nhập biết đã nhập đến đâu
-Khi gõ phần thập phân nếu gõ quá số ký tự không nhận.
-Khi gõ đến đâu thì con trỏ luôn ở vị trí tiếp theo chứ không bi văng ra vị trí khác.
-khi cần sửa chữa thì tiến trình bình thường.
Tóm lại là giống trong các phần mềm Việt Nam khác đã làm được. Mình cũng đã để tâm theo dõi nhưng chưa học được chiêu này vì đa số các phần mềm đã được biên dịch.
Trong VB6 có lẽ có mask edit hỗ trợ nên việc sử lý có thể thuận lợi hơn. Còn VBA theo mình chỉ có viết hàm chuyển đổi hoặc sử dụng Class Module áp dụng chung các điều khiển dạng này. Rất mong các cao thủ ra tay để anh em có cơ hội học tập.

Có điều vì trình độ vẫn còn hạn chế, chắc có lẽ cũng vẫn có thể còn "sạn" vì một mình tôi test không thể lường hết mọi trường hợp.

Qua thủ tục này, cũng là khởi đầu của những cải tiến mới, hy vọng những ai giỏi hơn sẽ điều chỉnh ngắn gọn hơn nữa để chúng được hoàn thiện hơn.

[video=youtube;twMyhG3uTbU]https://www.youtube.com/watch?v=twMyhG3uTbU[/video]

Các bạn xem file nhé!
 

File ở đâu vậy Nghĩa ơi, chắc quên kèm rồi.
Nhưng trong Video thì có lẽ nhầm hay sao ấy: Nhóm hàng ngàn,triệu...là dấu chấm và dấu thập phân là dấu phảy chứ.
 
Lần chỉnh sửa cuối:
Upvote 0
File ở đâu vậy Nghĩa ơi, chắc quên kèm rồi.
Nhưng trong Video thì có lẽ nhầm hay sao ấy: Nhóm hàng ngàn,triệu...là dấu chấm và dấu thập phân là dấu phảy chứ.

Nãy gửi file video lên, mà tưởng gửi file rồi. Xin lỗi mọi người nhé!

Ở đây em làm theo Number hệ thống Anh à, nếu Anh có chỉnh hệ thống Number kiểu của Việt Nam (#.##0,00) thì sẽ được như ý. Còn kiểu của bài kia nếu ai có nhu cầu thì viết thêm kiểu của Thầy Ndu vào nữa là xong, mà em thì chẳng thích định dạng hệ thống một đằng, file lại định dạng một nẽo, thà đồng bộ hết dễ làm hơn.

Em gửi file lên Anh xem nhé! Thức cả đêm mới tính toán được như vậy đó Anh ạ.

À, còn như Anh nói hạn chế phần thập phân đó, theo em nghĩ là để nó thoải mái mới khó viết code, chứ hạn chế nó thì quy luật ký tự sau dấu phân cách được tạo ra rất dễ cho mình viết nữa là đằng khác.

[note]Nên tải file tại bài NumFormat_HTN_2.xls (đã được cải tiến)[/note]
 

File đính kèm

  • NumFormat_HTN.xls
    66 KB · Đọc: 41
  • NumFormat_HTN_2.xls
    91 KB · Đọc: 119
Lần chỉnh sửa cuối:
Upvote 0
Có 2 vấn đề Nghĩa nghiên cứu thêm 1 chút cho nó bình dân Việt:
-Không cần biết Control Parnel thiết lập ra sao, tiêu chuẩn VN thế nào ra như vậy.
-Không cần biết đã gõ thập phân chưa, nhưng đều phải định dạng ngay khi gõ là 2 số thập phân với đối tượng nhập tiền và 3 số thập phân với đối tượng nhập số lượng.
 
Upvote 0
Có 2 vấn đề Nghĩa nghiên cứu thêm 1 chút cho nó bình dân Việt:
-Không cần biết Control Parnel thiết lập ra sao, tiêu chuẩn VN thế nào ra như vậy.
-Không cần biết đã gõ thập phân chưa, nhưng đều phải định dạng ngay khi gõ là 2 số thập phân với đối tượng nhập tiền và 3 số thập phân với đối tượng nhập số lượng.

Em nghĩ, dẫu sao cũng xuất ra số thực, mà số thực không đúng định dạng thì sao tính toán được Anh. Lúc đầu em làm cả đêm trên Laptop, làm đã đời xong, vào cơ quan thử máy bàn, cái bàn phím số nó cũng hại mình cái nút dấu chấm, làm chỉnh sửa lại cho phù hợp muốn điên đầu luôn, cũng từ cái nút đó mà xảy ra lắm chuyện dỡ khóc dỡ cười.

OK, nếu Anh muốn không quan tâm đến hệ thống thì em thêm phần code của bài vừa rồi ở Topic kia gửi lên cho Anh. Nhưng chắc hơi lâu vì em nghỉ Tết.

Vậy đi Anh nhé!

Happy New Year to All.
 
Upvote 0
Có 2 vấn đề Nghĩa nghiên cứu thêm 1 chút cho nó bình dân Việt:
-Không cần biết Control Parnel thiết lập ra sao, tiêu chuẩn VN thế nào ra như vậy.
-Không cần biết đã gõ thập phân chưa, nhưng đều phải định dạng ngay khi gõ là 2 số thập phân với đối tượng nhập tiền và 3 số thập phân với đối tượng nhập số lượng.

Giờ mới đọc kỹ lời anh viết:

Phần tô đỏ được hiểu như thế nào?

Cứ gõ 1| buông phím ra nó thành 1|,00 và cứ mãi như thế phải không? (Với | là con trỏ chuột)

Giả sử ta gõ 123456| thì nó sẽ hiểu rằng: 123.456|,00 phải không? Vậy khi muốn gõ phần thập phân thì phải dùng phím mũi tên bên phải hoặc dùng chuột để sửa 2 số 0 ở phần thập phân lại hay sao? (mệt mõi vậy ta? mất thời gian hơn cho người dùng vậy ta?).

Cũng là gõ như vậy, 123456|, khi buông phím ra thì nó thành 123.456|,00 bây giờ muốn số thập phân là 56 của dãy số đó nên ta đặt con trỏ tại đây:123.4|56,00 thì với định dạng chỉ được 2 số thập phân thôi, thì sao sửa để thêm 1 dấy phẩy nữa ta????

Giả sử ta gõ: 123.456.999| , giờ ta muốn số thập phân tại đây: 123.456.|999 thì sẽ như thế nào nếu lấy định dạng 2 số? Sẽ là 123.457,00 (vì bản thân muốn lấy 2 con số nên nó tự làm tròn số, mà như vậy thì sai số vì tăng lên 1) hay vẫn giữ nguyên 123.456,999 (mà như vầy thì không đúng kiểu định dạng của chúng ta quy định) hoặc 123.456,99 ???

Nếu Anh có chương trình nào làm được phần định dạng "ngộ ngộ" như vậy thì quay video màn hình và gửi lên cách thao tác gõ em xem như thế nào anh nhé!
 
Upvote 0
Không hẳn vậy, khi ta sửa số thì côn trỏ vẫn tuân thủ nguyên tắc Edit bình thường của Textbox là nguyên vị trí chỉ đổi định dạng thôi.
Nói chung chẳng có gì để Nghĩa nói là "ngồ ngộ" cả mà đấy là cách nhập gần như 100% các phần mềm Kế toán Made in VN đều áp dụng.
Không Việt "hoá" thì thôi, đã Việt "hoá " thì làm sao người Việt làm một cách thuận tiện.
 
Lần chỉnh sửa cuối:
Upvote 0
Giờ mới đọc kỹ lời anh viết:
Phần tô đỏ được hiểu như thế nào?

Rất đơn giản. Khi bắt đầu gõ 1 ký tự số bất kỳ sẽ được 3|,00
Gõ tiếp ta được 3.200|,00. Đây là phương thức ghi chèn (Insert)

Gõ dấu phẩy thập phân, con trỏ nhảy ra sau dấu phẩy có sẵn 3.200,|00
Gõ tiếp 15, trở thành 3.200,15|

Nghĩa là từ khi gõ dấu phẩy trở về sau, bắt đầu phương thức ghi overwrite. (tương đương nhấn phím Insert 1 lần)

Gõ xong, dịch chuyển con trỏ để sửa, sẽ tùy tình huống trước hoặc sau dấu phẩy để ghi insert hay ghi overwrite.

Cũng có thể thay phương thức overwrite bằng cách ghi đẩy lùi ra sau, dư thì xóa
 
Upvote 0
Không hẳn vậy, khi ta sửa số thì côn trỏ vẫn tuân thủ nguyên tắc Edit bình thường của Textbox là nguyên vị trí chỉ đổi định dạng thôi.
Nói chung chẳng có gì để Nghĩa nói là "ngồ ngộ" cả mà đấy là cách nhập gần như 100% các phần mềm Kế toán Made in VN đều áp dụng.
Không Việt "hoá" thì thôi, đã Việt "hoá " thì làm sao người Việt làm một cách thuận tiện.

Rất đơn giản. Khi bắt đầu gõ 1 ký tự số bất kỳ sẽ được 3|,00
Gõ tiếp ta được 3.200|,00. Đây là phương thức ghi chèn (Insert)

Gõ dấu phẩy thập phân, con trỏ nhảy ra sau dấu phẩy có sẵn 3.200,|00
Gõ tiếp 15, trở thành 3.200,15|

Nghĩa là từ khi gõ dấu phẩy trở về sau, bắt đầu phương thức ghi overwrite. (tương đương nhấn phím Insert 1 lần)

Gõ xong, dịch chuyển con trỏ để sửa, sẽ tùy tình huống trước hoặc sau dấu phẩy để ghi insert hay ghi overwrite.

Cũng có thể thay phương thức overwrite bằng cách ghi đẩy lùi ra sau, dư thì xóa

Thể theo yêu cầu của "Quý Khách Hàng", qua mô tả của Sư phụ ptm0412 thì Nghĩa đã thử làm như sau, mặc dù không thấy một chương trình nào của Kế toán bao giờ, hãy nhìn hình ảnh trước, nếu thấy OK thì post bài lên.

[video=youtube;Y7JV99y0_VI]http://www.youtube.com/watch?v=Y7JV99y0_VI&feature=youtu.be[/video]

Với việc gõ dấu thập phân, lúc đầu đã làm theo kiểu overwrite (gõ và thay thế trực tiếp trên số, mà không phải select), nhưng sau đó thấy nó bất tiện vì khó kiểm soát khi gõ nên dùng kiểu Insert (select một ký số trước khi thay thế) cho nó hiển thị chắc ăn mà lại đẹp nữa.
 
Lần chỉnh sửa cuối:
Upvote 0
về cơ bản thì đó cũng là overwrite, chẳng qua là dùng selStart và selLenght để ứng dụng phương thức typing overwrite selection thôi.
 
Upvote 0
Nghĩa lưu ý trường hợp Paste nhiều số và Paste all nha
 
Upvote 0
Nghĩa lưu ý trường hợp Paste nhiều số và Paste all nha

Anh giải thích trường hợp trên dùm tí.

Ý anh là sao hả anh? Ngoài thao tác gõ, nó cũng thay đổi khi copy/ paste trên textbox nữa à?

OK, lại thêm thuộc tính Change vô nữa rồi.

Em sẽ post file lên khi thực hiện xong.
 
Upvote 0
Cho hỏi thêm là làm sao biết được khi nào copy và khi nào không copy không nhỉ? Trên sheet mình còn có thể dùng Application.CutCopyMode còn trên form thì chẳng biết nhận dạng nó thế nào nữa!?
 
Upvote 0
Cho hỏi thêm là làm sao biết được khi nào copy và khi nào không copy không nhỉ? Trên sheet mình còn có thể dùng Application.CutCopyMode còn trên form thì chẳng biết nhận dạng nó thế nào nữa!?

Mình phải dùng "chiêu" mới có thể nhận dạng được anh PASTE này thôi!

Ta có thể thấy rằng nếu Copy thì kệ nó đi, chẳng có thay đổi gì cả, nhưng với PASTE thì lại khác. Thế bằng cách nào mình mới nhận ra nó Paste đây? Nếu trên Textbox thì chắc chắn không thể dùng nút Paste để sử dụng, vậy chỉ có thể dùng phím tắt Ctrl+V.

Vậy thì mình tạo một biến Boolean để "gài" anh này với thủ tục sau đây:

Khi nhấn nút Ctrl ta có KeyCode là 17

Và tiếp theo đó là nhấn nút V ta có KeyCode là 86

Nhưng không thể nhận định anh ta dễ dàng được, vậy thì với sự kiện KeyDown nếu nhấn vào Ctrl thì ta có 17, sau đó dùng sự kiện KeyUp nếu nhấn thêm V thì ta có 86, kết hợp 2 điều này lại ta đã có 17-86 tức Ctrl+V. Nếu xảy ra sự kiện này, lập tức TextBox sẽ được thực hiện thủ tục của mình.

[GPECODE=vb]Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 17 Then isCopyCut = True
End Sub

Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If isCopyCut And KeyCode = 86 Then
MsgBox "Ban vua Paste vao TextBox2"
isCopyCut = False
Exit Sub
End If
End Sub

[/GPECODE]

Đây chỉ là dùng "thủ thuật" chứ nếu là người lập trình chuyên nghiệp họ nhìn vào chắc là cười mình cho!
 
Upvote 0
Mình phải dùng "chiêu" mới có thể nhận dạng được anh PASTE này thôi!

Ta có thể thấy rằng nếu Copy thì kệ nó đi, chẳng có thay đổi gì cả, nhưng với PASTE thì lại khác. Thế bằng cách nào mình mới nhận ra nó Paste đây? Nếu trên Textbox thì chắc chắn không thể dùng nút Paste để sử dụng, vậy chỉ có thể dùng phím tắt Ctrl+V.

Vậy thì mình tạo một biến Boolean để "gài" anh này với thủ tục sau đây:

Khi nhấn nút Ctrl ta có KeyCode là 17

Và tiếp theo đó là nhấn nút V ta có KeyCode là 86

Nhưng không thể nhận định anh ta dễ dàng được, vậy thì với sự kiện KeyDown nếu nhấn vào Ctrl thì ta có 17, sau đó dùng sự kiện KeyUp nếu nhấn thêm V thì ta có 86, kết hợp 2 điều này lại ta đã có 17-86 tức Ctrl+V. Nếu xảy ra sự kiện này, lập tức TextBox sẽ được thực hiện thủ tục của mình.

[GPECODE=vb]Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 17 Then isCopyCut = True
End Sub

Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If isCopyCut And KeyCode = 86 Then
MsgBox "Ban vua Paste vao TextBox2"
isCopyCut = False
Exit Sub
End If
End Sub

[/GPECODE]

Đây chỉ là dùng "thủ thuật" chứ nếu là người lập trình chuyên nghiệp họ nhìn vào chắc là cười mình cho!

Chả nhẽ như sau không đủ sao? "Người ta" cung cấp cho bạn cả KeyCode cả Shift mà

[GPECODE=vb]
Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 86 And Shift = 2 Then MsgBox "Ban vua Paste vao TextBox2"
End Sub
[/GPECODE]

Tôi chỉ nhìn code và "đoán" thế thôi. Tất nhiên đoán có cơ sở chứ không đoán mò
 
Upvote 0
Chả nhẽ như sau không đủ sao? "Người ta" cung cấp cho bạn cả KeyCode cả Shift mà

[GPECODE=vb]
Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 86 And Shift = 2 Then MsgBox "Ban vua Paste vao TextBox2"
End Sub
[/GPECODE]

Tôi chỉ nhìn code và "đoán" thế thôi. Tất nhiên đoán có cơ sở chứ không đoán mò

Cám ơn Thầy, em lo nghĩ đến vụ Paste mà quên luôn vụ SHIFT (vụ này đã từng làm trong Calendar với các phím tắt hic hic).
 
Upvote 0
Bây giờ tôi chính thức gửi lên các thủ tục mà tôi cải tiến như sau:

Vì dùng định dạng trong VBA về số rắc rối với việc Việt Nam, Quốc tế, ... nên tôi làm hẳn một hàm để thực hiện việc định dạng này.

[warning]Cũng vì giá trị trên TextBox luôn là dạng Text nên hàm này của tôi cũng trả về dạng Text chứ không phải dạng Number.
[/warning]

[GPECODE=vb]Function NumberFormat(ByVal NumberInString As String, _
ByVal DigiMark As String, _
ByVal DeciMark As String, _
Optional ByVal DecimalPlaces As Variant) As String

If Trim(NumberInString) = "" Then Exit Function

On Error GoTo ExitFunction

Dim sDecimal As String, sDigital As String, lenNum As Long
NumberInString = Replace(Replace(NumberInString, " ", ""), DigiMark, "")
lenNum = InStr(NumberInString, DeciMark)
sDecimal = IIf(lenNum = 0, "", Right(NumberInString, _
Len(NumberInString) - lenNum + 1))
sDigital = Val(Replace(NumberInString, sDecimal, ""))

If IsMissing(DecimalPlaces) = False Then

Dim Dcm As String: Dcm = Mid(1 / 2, 2, 1)
If DeciMark <> Dcm Then sDecimal = Replace(sDecimal, DeciMark, Dcm)

NumberInString = Round(CDbl(sDigital & sDecimal), DecimalPlaces)
NumberInString = Format(NumberInString, "###0." & String(DecimalPlaces, "0"))
NumberInString = Replace(NumberInString, Dcm, DeciMark)
sDecimal = Right(NumberInString, Len(NumberInString) - _
InStr(NumberInString, DeciMark) + 1)
sDigital = Replace(Replace(NumberInString, sDecimal, ""), DeciMark, "")

End If

lenNum = Len(sDigital)

If lenNum < 4 Then

If lenNum = 0 Then sDigital = 0

If IsMissing(DecimalPlaces) Then
NumberFormat = sDigital & sDecimal
Else
NumberFormat = sDigital & IIf(DecimalPlaces = 0, "", sDecimal)
End If

Else

Dim NumArr As Variant, lenDig As Long, i As Long, j As Long, n As Long
lenDig = lenNum Mod 3

If lenDig = 0 Then

ReDim NumArr(1 To lenNum / 3)
For i = 1 To lenNum Step 3
n = n + 1
NumArr(n) = Mid(sDigital, i, 3)
Next

If IsMissing(DecimalPlaces) Then
NumberFormat = Join(NumArr, DigiMark) & sDecimal
Else
NumberFormat = Join(NumArr, DigiMark) & _
IIf(DecimalPlaces = 0, "", sDecimal)
End If

Else

Dim fstNum As String, aftNum As String
fstNum = Left(sDigital, lenDig)
aftNum = Right(sDigital, Len(sDigital) - lenDig)
j = Len(aftNum)

ReDim NumArr(1 To j / 3)
For i = 1 To j Step 3
n = n + 1
NumArr(n) = Mid(aftNum, i, 3)
Next

If IsMissing(DecimalPlaces) Then
NumberFormat = fstNum & DigiMark & Join(NumArr, DigiMark) & sDecimal
Else
NumberFormat = fstNum & DigiMark & Join(NumArr, DigiMark) & _
IIf(DecimalPlaces = 0, "", sDecimal)
End If

End If

End If

ExitFunction:
End Function
[/GPECODE]

[infonotitle]Như vậy, với các thủ tục chính như sau:[/infonotitle]

[GPECODE=vb]Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

With TextBox1

Dim Mrk As Long: Mrk = InStr(.Text, DauThapPhan)

If Mrk > 0 Then

''Neu con tro (|) dung truoc DauThapPhan thi con tro doi ve phia sau, nut Delete vo hieu
If KeyCode = 46 Then
If .SelStart = Mrk - 1 Then KeyCode = 3: .SelStart = Mrk
End If

''Neu con tro (|) dung truoc DauThapPhan thi nut Delete vo hieu
' If KeyCode = 46 Then
' If .SelStart = Mrk - 1 Then KeyCode = 3
' End If

''Khi dung ban phim so, voi dau cham (.) se chuyen dau:
If (optVN And KeyCode = 188) _
Or (optQT And KeyCode = 190) _
Then GoTo StopWorking

If KeyCode = 110 Then
KeyCode = IIf(CheckType, 188, 190)
StopWorking:
If .SelStart = Mrk - 1 Then
KeyCode = 3
.SelStart = Mrk
.SelLength = 1
ElseIf .SelStart < Mrk - 1 _
Or .SelStart >= Mrk _
Or .SelStart = 0 Then
KeyCode = 3
End If
End If

End If

End With

End Sub
''*************************************************************************************************

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Dim Mrk As Long: Mrk = InStr(TextBox1.Text, DauThapPhan)

If Mrk > 0 And IsNumeric(Chr(KeyAscii)) Then
If KhoangCachThapPhan > 0 Then
If TextBox1.SelStart > Mrk + KhoangCachThapPhan - 1 Then
KeyAscii = 0
End If
End If
ElseIf Not IsNumeric(Chr(KeyAscii)) Then
KeyAscii = 0
End If

End Sub
''*************************************************************************************************

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

With TextBox1

If KeyCode = 86 And Shift = 2 Then
.Text = NumberFormat(.Text, DauPhanCach, DauThapPhan, KhoangCachThapPhan)
Exit Sub
End If

If .Text = "" Then Exit Sub

Dim iSelStart As Long, lenTxt As Long, lenDcm As Long, _
Mrk As Long, isMrk As Boolean

iSelStart = .SelStart: lenTxt = Len(.Text)
Mrk = InStr(.Text, DauThapPhan)

Select Case KeyCode

Case 8

If iSelStart < Mrk Or KhoangCachThapPhan = 0 Then GoTo NextStep
.Text = NumberFormat(.Text, DauPhanCach, DauThapPhan, KhoangCachThapPhan)
.SelStart = IIf(iSelStart, iSelStart - 1, iSelStart)
.SelLength = IIf(.SelStart < Mrk, 0, 1)
Exit Sub

Case 46

If iSelStart < Mrk Then GoTo NextStep
.Text = NumberFormat(.Text, DauPhanCach, DauThapPhan, KhoangCachThapPhan)
.SelStart = iSelStart
If KhoangCachThapPhan Then .SelLength = 1
Exit Sub

Case 48 To 57, 96 To 105

If Mrk > 0 Then
If iSelStart > Mrk Then
isMrk = True: GoTo NextStep
ElseIf iSelStart = Mrk Then
.SelLength = 1: Exit Sub
End If
End If

iSelStart = .SelStart: lenTxt = Len(.Text)
NextStep:
.Text = NumberFormat(.Text, DauPhanCach, DauThapPhan, KhoangCachThapPhan)

If KhoangCachThapPhan Then
lenDcm = IIf(lenTxt = 1, KhoangCachThapPhan + 1, 0)
End If

lenTxt = Len(.Text) - lenTxt - lenDcm
iSelStart = IIf(iSelStart + lenTxt < 0, 0, iSelStart + lenTxt)
.SelStart = iSelStart
If isMrk Then .SelLength = 1: isMrk = False

End Select

End With

End Sub
[/GPECODE]


[note]Tải file về tại bài số 3 của topic này:[/note]
http://www.giaiphapexcel.com/forum/...-TIẾP-KHI-GÕ-TRÊN-TEXTBOX&p=464323#post464323
 
Lần chỉnh sửa cuối:
Upvote 0
Sau khi gửi file lên (ở bài 3) không biết người tải về và dùng thử có bị vấn đề gì không ạ? Nếu có thì thông báo để biết mà hoàn thiện nhé!
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom