Addtextbox vao một cell khi được chọn và tạo ra sự kiện textchange khi gõ chữ

Liên hệ QC

hoanganhcuong87

Thành viên mới
Tham gia
28/3/10
Bài viết
20
Được thích
4
Em đang dùng VSTO viết C# lập trình trên excel, nhưng dang vướng mắc. Em muốn thiết lập sự kiện textchage khi gõ ký tự vào trong cell, range. Anh chị nào giúp đỡ em vói. Em cảm ơn!
 
Bạn nên cho biết chi tiết hơn một chút về yêu cầu đi
 
Upvote 0
Thực ra mình đang làm một cái Tìm kiếm động tức là khi đánh một ký tự vào trong 1 cell thì tìm kiếm sẽ cuốn theo từng ký tự gõ vào ý. giống trong ảnh mình gửi kèm. Nên minh muốn hỏi sự kiện khi ta gõ chữ, đánh chữ vào 1 cell ( Nó giống sự kiện Textchange trong textbox.). mong được sự góp ý giúp đỡ của mọi người. Xin cảm ơn
 

File đính kèm

  • Capture.JPG
    Capture.JPG
    32 KB · Đọc: 100
Upvote 0
Xin cho hỏi bạn muốn làm điều này trong .NET hay trong Excel, nếu làm trong VS.Net thì sự kiện TextChange của một TextBox là có sẵn và trong Excel sự kiện tương ứng là Change (mình dùng Excel 2010)
 
Upvote 0
Mình dùng VSTO 3.0 với Excel 2003 cuongdoannhat ah. Bạn có giải pháp nào gợi ý cho mình ko? . Mong mọi người giúp đỡ.
 
Upvote 0
Mình đã có ý tưởng khi select một cell thì sẽ thực hiện addtextbox cho cell đó và và tạo ra sự kiện Textchange nhưng chưa thực hiên được. Mình dùng VSTO 3.0 viết C# .
 
Upvote 0
Rất tiếc, mình cảm thấy vấn đề của bạn nên giải quyết theo hướng khác. Theo mình nghĩ Cells không phải là object nên không thể tạo sự kiện TextChange như TextBox cho Cells được. Nhưng lại có vấn đề xảy ra với việc đưa TextBox vào Sheet, bởi vì khi bạn nhập vào TextBox sự kiện Change xảy ra và Cell có dữ liệu phù hợp với dữ liệu nhập được chọn gây ra việc mất focus của TextBox làm cho bạn không thể tiếp tục quá trình được nữa. Ví dụ: ở 2 cells A100, A101 kề cận có dữ liệu là "xe" và "xem", bạn muốn nhập "xem", nhưng khi bạn vừa nhập xong "xe" cell A100 được chọn làm cho TextBox bị mất focus và bạn bị mất quá trình. Nhưng nếu bạn cố gắng cho TextBox nhận lại focus thì cell A100 lại không có con trỏ bảng tính mặc dù cell A100 đã được chọn do đó tính trực quan cũng không còn. Một cách cưỡng ép, bạn có thể Fill Color vào ô này để tạo tính trực quan thì cũng là một giải pháp.
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu mình đặt cell thanh một range và dữ liệu để tìm kiếm với sự kiện textchange không lấy từ tronng bảng excel mà tìm kiếm từ CSDL Access thi sao? Có giải pháp nào giải quyết không hả Bạn?
 
Upvote 0
Không biết bạn tổ chức dữ liệu như thế nào, tôi đưa ra một ví dụ:
Giả sử cột A của bạn có một dãy dữ liệu Text được sắp xếp theo thứ tự. Bạn đặt một TextBox trên cùng (hàng 1 và 2). Thiết lập Freeze Panes từ hàng 3. Có phải khi nhập vào TextBox, dữ liệu tìm kiếm của bạn được show ra trên bảng tính
 
Upvote 0
Mình không biết ví dụ này có giúp gì được bạn không? Chỉ là ý tưởng của mình không biết có phải đúng như mong muốn của bạn không. Code để tìm kiếm còn phải sửa lại nhiều
 

File đính kèm

  • a.xls
    40.5 KB · Đọc: 35
Upvote 0
Chào hoanganhcuong87,

Trong Excel không có sự kiện nào để nhận biết được người dùng đang nhập phím nào.
Nếu bạn lập trình trong VSTO cho Excel tôi nghĩ bạn có thể giả lập như sau:

_ Mỗi khi người dùng di chuyển đến một ô xác định, bạn đưa một textbox vào vị trí ô đó và cho textbox này active.
_ Như vậy dựa vào những gì mà người dùng nhập vào textbox này mà bạn xử lý.

Cách khác:

Bắt sự kiện nhập liệu trên một ô của rollover79

Lê Văn Duyệt
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn cuongdoannhatlevanduyet và mọi người trong GPE đã giúp đỡ.

GPE thật là tuyệt!!!
 
Upvote 0
Mình thấy khi liên kết 1 ô với Textbox thì thay đôỉ của ô cũng chính là thay đổi của Cell. Vậy thì ta lấy luôn sự kiện của textbox change là sự kiện của ô có sao đâu.
Mình có 1 ví dụ:
-Trên sheet1 muốn hiện Textbox cho ô đang chọn, nhấn Ctrl+m
-Bạn gõ gì vào Txtbox để ý stastusBar thay đổi gõ xong nhấn Enter

Vạy là ta mượn được TextboxChange rồi
Nói chung, cái gì cao xa quá thì ta đánh du kích miễn là đạt ý. Còn chuẩn mưc có lẽ phải viết Class Module. Mình như ai đó đã có bài trên GPE rồi (Bạn tìm đi chắc thấy, thử tìm 3 nick Nguyen Duy Tuan , Domfootwear, Ndu)
 

File đính kèm

  • TextBox.xls
    30 KB · Đọc: 34
Lần chỉnh sửa cuối:
Upvote 0
Ko hiểu sao mình ko được nhỉ. Sao mình ko bắt được textchange của cell thông qua liên kết với textbox nhỉ?
 
Upvote 0
Mình định dùng phương pháp Bắt sự kiện bàn phím như anh Duyệt tư vấn nhưng phức tạp và sơ xảy một cái là đơ ứng dụng ngay. hj.
 
Upvote 0
Bạn ơi giúp mình chút nha! Mình đã liên kết một ô trong bảng tính với textbox. Khi mình gõ vào ô đó mà vẫn không lấy được changetext thông qua textbox này. chỉ khi nhấn enter mới nhận. Ý mình là bắt sự kiện changetext mà.
Đây là code dùng để hook bàn phím, bạn xem trong file đính kèm nhé
Code thuộc dạng còn sơ khai, phải cải tiến thêm rất nhiều
 

File đính kèm

  • KeySpy_4.xls
    41 KB · Đọc: 36
Upvote 0
Web KT
Back
Top Bottom