Mình cần giúp về "Giới hạn ký tự" trong excel! (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

ntrung.niit

Thành viên mới
Tham gia
29/5/08
Bài viết
2
Được thích
0
Hiện mình muốn tạo 1 file excel có 2 cột. Mà 2 cột đó chỉ giới hạn trong khoảng 150 ký tự. Nếu nhiều hơn sẽ bị cắt bỏ phần đuôi.
Và muốn có lệch Enter xuống dòng là sẽ tự ngắt chuỗi hoặc khi gõ đến ký tự 150 thì sẽ không gõ được nữa. Bạn nào giúp mình với.

Mình cảm ơn.
 
Bạn xem ứng dụng phần Validation trong chữ ký của tôi nhé.
 
Upvote 0
Hiện mình muốn tạo 1 file excel có 2 cột. Mà 2 cột đó chỉ giới hạn trong khoảng 150 ký tự. Nếu nhiều hơn sẽ bị cắt bỏ phần đuôi.
Và muốn có lệch Enter xuống dòng là sẽ tự ngắt chuỗi hoặc khi gõ đến ký tự 150 thì sẽ không gõ được nữa. Bạn nào giúp mình với.

Mình cảm ơn.
Xem File, 2 cột A và B chỉ nhận tối đa 150 ký tự.
 

File đính kèm

Upvote 0
Lở người ta không nhập mà copy nơi khác paste vào thì sao?
............

Nếu không nhập mà Copy thì tác giả ráng chịu vì tác giả chỉ yêu cầu: "...Và muốn có lệch Enter xuống dòng là sẽ tự ngắt chuỗi...", mình hiểu câu này là nhập liệu thủ công!?.
quote_icon.png
Nguyên văn bởi ntrung.niit
Hiện mình muốn tạo 1 file excel có 2 cột. Mà 2 cột đó chỉ giới hạn trong khoảng 150 ký tự. Nếu nhiều hơn sẽ bị cắt bỏ phần đuôi.
Và muốn có lệch Enter xuống dòng là sẽ tự ngắt chuỗi hoặc khi gõ đến ký tự 150 thì sẽ không gõ được nữa. Bạn nào giúp mình với.

Mình cảm ơn.
........
Nghĩ cũng lạ nhỉ! Excel mà cứ làm như Word, nhập giống gì mà đến 150 ký tự thế ta?
Chuyện lạ bốn phương, cái gì cũng có, ... Lo xa quá vậy "Bạn Hiền"?
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu không nhập mà Copy thì tác giả ráng chịu vì tác giả chỉ yêu cầu: "...Và muốn có lệch Enter xuống dòng là sẽ tự ngắt chuỗi...", mình hiểu câu này là nhập liệu thủ công!?.

Chuyện lạ bốn phương, cái gì cũng có, ... Lo xa quá vậy "Bồ"?
Đâu có được!
Nếu dùng Validation thì chẳng nói làm gì, ở đây là CODE mà ---> Phải lường trước những sự cố mà ta có thể khống chế được! Vã lại chẳng thấy ai xài Excel mà chỉ... NHẬP và không copy paste bao giờ (quyền lợi cơ mà)
Dạng bài toán dùng sự kiện CHANGE này đã từng đề cập nhiều lần rồi, nói chung là ta có thể viết code để thực thi ý đồ ngay cả khi người ta copy luôn
Đó là chưa kể người ta còn cái vụ chèn dòng và xóa dòng nữa nha ---> Code lỗi chẳng lẽ... ĐÀNH CHỊU à?
 
Lần chỉnh sửa cuối:
Upvote 0
Đâu có được!
Nếu dùng Validation thì chẳng nói làm gì, ở đây là CODE mà ---> Phải lường trước những sự cố mà ta có thể khống chế được! Vã lại chẳng thấy ai xài Excel mà chỉ... NHẬP và không copy paste bao giờ (quyền lợi cơ mà)
Dạng bài toán dùng sự kiện CHANGE này đã từng đề cập nhiều lần rồi, nói chung là ta có thể viết code để thực thi ý đồ ngay cả khi người ta copy luôn
Đó là chưa kể người ta còn cái vụ chèn dòng và xóa dòng nữa nha ---> Code lỗi chẳng lẽ... ĐÀNH CHỊU à?
Nếu vậy thì có rảnh rỗi, Bạn ra tuyệt chiêu dùng Validation và Code đi. Thật sự là tôi muốn học hỏi chứ không có ý gì khác.
Mình là "Bạn Hiền" mà.
 
Upvote 0
Nếu vậy thì có rảnh rỗi, Bạn ra tuyệt chiêu dùng Validation và Code đi. Thật sự là tôi muốn học hỏi chứ không có ý gì khác.
Mình là "Bạn Hiền" mà.
Bạn thử viết đi (đâu có khó)
Nguyên tắc:
- Giới hạn vùng dữ liệu bằng Intersect (hay gì gì đó) ---> Nhập liệu tại vùng này thì code mới chạy ----> If Not Intersect(Range(...), Target) is Nothing then....
- Dùng vòng lập duyệt qua tất cả các cell thuộc Target (đây là phòng trường hợp người ta copy chứ không nhập) ---> For Each Clls in Target...
- Đoạn code chính để chuyển thì... gần giống như bạn đang làm ---> If Clls.Value <> "" then Clls.Value = Left(Clls.Value,150)
- Vì code hoạt động trực tiếp trên Target nên buộc phải có dòng Application.EnableEvent = False ở đầu code và Application.EnableEvent = True ở cuối code (nếu không coi chừng code chạy mãi không ngừng)
- Phòng thêm trường hợp bất trắc khác: On Error Goto... gì gì đó ở đầu code
Gần giống cách tôi viết tại đây nè: http://www.giaiphapexcel.com/forum/...í-tự-đặc-biệt-trong-chuỗi&p=287059#post287059
------------------
Vậy thôi ---> Viết hoài sẽ.. thuộc lòng luôn
(dạo này thấy bạn đang quan tâm đến code, vậy còn chờ gì nữa mà không thí nghiệm)
Ẹc... Ẹc...
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử viết đi (đâu có khó)
Nguyên tắc:
- Giới hạn vùng dữ liệu bằng Intersect (hay gì gì đó) ---> Nhập liệu tại vùng này thì code mới chạy ----> If Not Intersect(Range(...), Target) is Nothing then....
- Dùng vòng lập duyệt qua tất cả các cell thuộc Target (đây là phòng trường hợp người ta copy chứ không nhập) ---> For Each Clls in Target...
- Đoạn code chính để chuyển thì... gần giống như bạn đang làm ---> If Clls.Value <> "" then Clls.Value = Left(Clls.Value,150)
- Vì code hoạt động trực tiếp trên Target nên buộc phải có dòng Application.EnableEvent = False ở đầu code và Application.EnableEvent = True ở cuối code (nếu không coi chừng code chạy mãi không ngừng)
- Phòng thêm trường hợp bất trắc khác: On Error Goto... gì gì đó ở đầu code
Gần giống cách tôi viết tại đây nè: http://www.giaiphapexcel.com/forum/...í-tự-đặc-biệt-trong-chuỗi&p=287059#post287059
------------------
Vậy thôi ---> Viết hoài sẽ.. thuộc lòng luôn
(dạo này thấy bạn đang quan tâm đến code, vậy còn chờ gì nữa mà không thí nghiệm)
Ẹc... Ẹc...
Thí nghiệm rồi và code chạy rồi, Cảm ơn ndu.. nhiều!
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Clls As Range, Rngs As Range
On Error GoTo ExitSub
    If Not Intersect(Target, [A2:B1000]) Is Nothing Then
        Set Rngs = Intersect(Range("A2:B1000"), Target)
            Application.EnableEvents = False
                For Each Clls In Rngs
                If Clls.Value <> "" Then Clls.Value = Trim(Left(Clls.Value, 150))
                Next
ExitSub:
            Application.EnableEvents = True
    End If
End Sub
 
Upvote 0
Sao End If để trong label "ExitSub" (bên dưới) mà "chạy rồi" được. Chỉ có 1 khả năng là trong quá trình chạy chưa gặp "Error" để "On". Hoặc bản chất code không có Error nào để "On".

Thông thường, label để Exit phải đặt dưới cùng, mọi cấu trúc If - End If, For - Next, Do - Loop, ... phải kết thúc trước label này.
Dù không xảy ra lỗi, nhưng nhìn code nó sao sao ấy.
 
Upvote 0
Sao End If để trong label "ExitSub" (bên dưới) mà "chạy rồi" được. Chỉ có 1 khả năng là trong quá trình chạy chưa gặp "Error" để "On". Hoặc bản chất code không có Error nào để "On".

Thông thường, label để Exit phải đặt dưới cùng, mọi cấu trúc If - End If, For - Next, Do - Loop, ... phải kết thúc trước label này.
Dù không xảy ra lỗi, nhưng nhìn code nó sao sao ấy.
Em thấy đâu có vấn đề gì đâu sư phụ! Cùng lắm là sẽ không làm gì ở những đoạn trong khu vực If và End If thôi
Ví Application.EnableEvents = False nằm trong IF nên bằng mọi giá, dù có ExitSub thì cũng phải Application.EnableEvents = True trước cái đã
Thế thì em không nghĩ sẽ đặt ExitSub nằm ở đâu hợp lý hơn
 
Upvote 0
Cảm ơn các đại ca sư huynh đã giúp em về vấn đề giới hạn ký tự ạ. :D
Em còn 1 vấn đề nhỏ ở đây nữa ạ.

Ví dụ: Cột A em giới hạn 150 ký tự khi 3 ký tự bắt đầu là 150 và là 100 Nếu 3 ký tự bắt đầu là 100.
Các sư huynh giúp em với nhé.
Em cảm ơn nhiều.
 
Upvote 0
Cảm ơn các đại ca sư huynh đã giúp em về vấn đề giới hạn ký tự ạ. :D
Em còn 1 vấn đề nhỏ ở đây nữa ạ.

Ví dụ: Cột A em giới hạn 150 ký tự khi 3 ký tự bắt đầu là 150 và là 100 Nếu 3 ký tự bắt đầu là 100.
Các sư huynh giúp em với nhé.
Em cảm ơn nhiều.
Còn mấy vấn đề nhỏ nữa Bạn? Phải chuẩn bị tất cả tình huống trước khi hỏi để người khác làm một lần chứ. Có khi "vấn đề nhỏ" này phá vỡ cả "vấn đề lớn" đã làm rồi thì phí công quá! Ví dụ vấn đề nhỏ nữa là 1,2 ký tự bắt đầu...
Thử cái này xem.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Không hẳn là hợp lý hơn, mà là dễ coi hơn:
PHP:
Sub abc()
On Error GoTo ExitSub
    If ... Then
       Application.EnableEvents = False
        ...
    End If
ExitSub:
    Application.EnableEvents = True
End Sub
 
Upvote 0
Không hẳn là hợp lý hơn, mà là dễ coi hơn:
PHP:
Sub abc()
On Error GoTo ExitSub
    If ... Then
       Application.EnableEvents = False
        ...
    End If
ExitSub:
    Application.EnableEvents = True
End Sub
Sư phụ ơi, dù là dễ coi nhưng code này em cho rằng nó... không hợp lý mấy! Ở chổ cho dù ta nhập liệu ở đâu thì cũng sẽ có ít nhất 1 đoạn code chạy, đó là Application.EnableEvents = True
Sư phụ nghĩ sao?
Cái em muốn là: Nhập liệu trong vùng quy định thì code mới làm việc, nhập ngoài vùng sẽ không chạy bất cứ code nào
 
Upvote 0
chao cac dai ca em co chut viec tuong tu nhung chua co huong giai quyet mong cac pro giup do
do la trong 1 o han che chi nhap duoc 9 ky tu (de nhap CMTND) neu nhap qua se bao loi
tran trong cam on!
 
Upvote 0
sorry các pro
ý của tui hà trong ô đó minh chỉ giới hạn cho nhập được 9 ký tự (vd: 141936607 là số CMT ) nếu nhập thêm 1 số nữa thì sẽ hiện lên 1 dòng thông báo lối la đã nhập quá số cần nhập
 
Upvote 0
sorry các pro
ý của tui hà trong ô đó minh chỉ giới hạn cho nhập được 9 ký tự (vd: 141936607 là số CMT ) nếu nhập thêm 1 số nữa thì sẽ hiện lên 1 dòng thông báo lối la đã nhập quá số cần nhập
Cái này đâu cần tời VBA, bạn dùng Data > Validation > Trong ô Allow chọn Text length rồi giới hạn theo ý bạn là được
(nhớ viết có dấu nhé!)
 
Upvote 0
tui xin hỏi các pro 1 câu nữa nhưng không biết có đúng diễn đàn không mong các pro thông cảm và cho câu trả lời sớm nhất
toi muốn đổi dạng ngày tháng sang chữ thì làm như thế nào?
VD tại A1 có dang 23/11/2012 sang A3 đổi thành "ngày hai mươi ba tháng mười một năm hai nghìn mười hai"
mong sớm nhận được câu trả lời
 
Upvote 0
Web KT

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

Back
Top Bottom