GPE cho mình hỏi trong vba, SetFocus có ý nghĩa như thế nào vậy, và cách dùng. Mình thấy một số đoạn code sử dụng nhưng không hiểu cho lắm. (mình hiểu như vậy không biết có đúng không. Mình đặt 1 điều kiện, nếu thỏa mãn thì code tiếp tục chạy, còn không thỏa mãng code sẽ dừng lại vị trí đặt SetFocus)
GPE cho mình hỏi trong vba, SetFocus có ý nghĩa như thế nào vậy, và cách dùng. Mình thấy một số đoạn code sử dụng nhưng không hiểu cho lắm. (mình hiểu như vậy không biết có đúng không. Mình đặt 1 điều kiện, nếu thỏa mãn thì code tiếp tục chạy, còn không thỏa mãng code sẽ dừng lại vị trí đặt SetFocus)
Phương pháp SetFocus để thiết lập con trỏ chuột tập trung vào 1 Control cụ thể nào đó, có thể là TextBox chẳng hạn. Nếu chọn Control đó và vào cửa sổ Properties thiết lập Visble=False thì sẽ bị vô hiệu hoặc không hiển thị, phương pháp này sẽ không được thực hiện.
Ví dụ: Trên UserForm sử dụng TextBox có tên là tbxTTVaoSo, nếu không nhập số vào sổ trong TextBox này thì sẽ hiện thông báo.
Mã:
If Me.tbxTTVaoSo.Value = "" Then
MsgBox "Chua Nhap SÓ VÀO SO", vbExclamation, "THEO DOI CÔNG VAN"
Me.tbxTTVaoSo.SetFocus
Exit Sub
End If
Một cách khác cụ thể hơn với 2 cách SetFocus:
- Cách 1: Khi mở Form thì nó chọn TextBox đầu tiên là TextBox1 có tên là Tiền hàng, khi gõ tên hàng và số tiền rồi nhấn nút tính toán để xem kết quả.
- Cách 2: Khi nhấn nút Làm trống Form thì con trỏ chuột trở lại TextBox đầu tiên là TextBox1
Mã:
Private Sub UserForm_Activate()
TextBox1.SetFocus
End Sub
Private Sub cmdLamTrongForm_Click()
TextBox1 = " "
TextBox2 = " "
TextBox3 = " "
TextBox4 = " "
TextBox1.SetFocus
End Sub
SetFocus không phải để thiết lập con trỏ chuột tập trung vào 1 Control cụ thể nào đó.
Ta phân biệt:
1. trỏ chuột: bình thường nó là cái mũi tên mà khi bạn di chuyển con chuột thì bạn nhìn thấy nó di chuyển trên màn hình. Cái này trong Windows gọi là cursor.
2. Trỏ văn bản: khi bạn click vào một chỗ nào đó trong Word, trong notepad, trongTextBox thì bạn nhìn thấy một cái gạch đứng nhấp nháy. Khi bạn gõ lần lượt các phím thì cái gạch đứng nhấp nháy này nó sẽ di chuyển trong văn bản. Cái gạch đứng nhấp nháy nài gọi là caret
SetFocus không phải để thiết lập con trỏ chuột (cursor) hay trỏ văn bản (caret) tập trung vào 1 Control cụ thể nào đó. Nói chính xác thì SetFocus "đưa" focus vào Control. Tức xác định control này sẽ thâu tóm mọi input từ bàn phím. Luôn chỉ có 1 "vị" thâu tóm input từ bàn phím trong mỗi thời điểm.
SetFocus không đưa trỏ chuột (cursor) và cũng không đưa trỏ văn bản (caret) vào control. Không tin thì thử biết ngay
Mã:
Private Sub ComboBox1_Change()
CommandButton1.SetFocus
End Sub
Trong CommandButton1 làm gì có trỏ chuột (cursor) và trỏ văn bản (caret)?
Khái niệm focus chả liên quan gì tới cursor và caret. Tất nhiên trong Windows nếu window nào đó thuộc lớp Edit thì khi window đó có focus thì system sẽ tự hiển thị caret trong window đó. Trong VBA tương tự. Nhưng bản thân SetFocus chỉ là tập trung focus vào control mà thôi.
Nói chuyện với nhau thì thế nào cũng được nhưng giải thích theo yêu cầu thì phải chính xác.
SetFocus không phải để thiết lập con trỏ chuột tập trung vào 1 Control cụ thể nào đó.
Ta phân biệt:
1. trỏ chuột: bình thường nó là cái mũi tên mà khi bạn di chuyển con chuột thì bạn nhìn thấy nó di chuyển trên màn hình. Cái này trong Windows gọi là cursor.
2. Trỏ văn bản: khi bạn click vào một chỗ nào đó trong Word, trong notepad, trongTextBox thì bạn nhìn thấy một cái gạch đứng nhấp nháy. Khi bạn gõ lần lượt các phím thì cái gạch đứng nhấp nháy này nó sẽ di chuyển trong văn bản. Cái gạch đứng nhấp nháy nài gọi là caret
SetFocus không phải để thiết lập con trỏ chuột (cursor) hay trỏ văn bản (caret) tập trung vào 1 Control cụ thể nào đó. Nói chính xác thì SetFocus "đưa" focus vào Control. Tức xác định control này sẽ thâu tóm mọi input từ bàn phím. Luôn chỉ có 1 "vị" thâu tóm input từ bàn phím trong mỗi thời điểm.
SetFocus không đưa trỏ chuột (cursor) và cũng không đưa trỏ văn bản (caret) vào control. Không tin thì thử biết ngay
Mã:
Private Sub ComboBox1_Change()
CommandButton1.SetFocus
End Sub
Trong CommandButton1 làm gì có trỏ chuột (cursor) và trỏ văn bản (caret)?
Khái niệm focus chả liên quan gì tới cursor và caret. Tất nhiên trong Windows nếu window nào đó thuộc lớp Edit thì khi window đó có focus thì system sẽ tự hiển thị caret trong window đó. Trong VBA tương tự. Nhưng bản thân SetFocus chỉ là tập trung focus vào control mà thôi.
Nói chuyện với nhau thì thế nào cũng được nhưng giải thích theo yêu cầu thì phải chính xác.
SetFocus không phải để thiết lập con trỏ chuột tập trung vào 1 Control cụ thể nào đó.
Ta phân biệt:
1. trỏ chuột: bình thường nó là cái mũi tên mà khi bạn di chuyển con chuột thì bạn nhìn thấy nó di chuyển trên màn hình. Cái này trong Windows gọi là cursor.
2. Trỏ văn bản: khi bạn click vào một chỗ nào đó trong Word, trong notepad, trongTextBox thì bạn nhìn thấy một cái gạch đứng nhấp nháy. Khi bạn gõ lần lượt các phím thì cái gạch đứng nhấp nháy này nó sẽ di chuyển trong văn bản. Cái gạch đứng nhấp nháy nài gọi là caret
SetFocus không phải để thiết lập con trỏ chuột (cursor) hay trỏ văn bản (caret) tập trung vào 1 Control cụ thể nào đó. Nói chính xác thì SetFocus "đưa" focus vào Control. Tức xác định control này sẽ thâu tóm mọi input từ bàn phím. Luôn chỉ có 1 "vị" thâu tóm input từ bàn phím trong mỗi thời điểm.
SetFocus không đưa trỏ chuột (cursor) và cũng không đưa trỏ văn bản (caret) vào control. Không tin thì thử biết ngay
Mã:
Private Sub ComboBox1_Change()
CommandButton1.SetFocus
End Sub
Trong CommandButton1 làm gì có trỏ chuột (cursor) và trỏ văn bản (caret)?
Khái niệm focus chả liên quan gì tới cursor và caret. Tất nhiên trong Windows nếu window nào đó thuộc lớp Edit thì khi window đó có focus thì system sẽ tự hiển thị caret trong window đó. Trong VBA tương tự. Nhưng bản thân SetFocus chỉ là tập trung focus vào control mà thôi.
Nói chuyện với nhau thì thế nào cũng được nhưng giải thích theo yêu cầu thì phải chính xác.
Trỏ chuột vào 1 ô (tức là đưa cursor chuột vào đúng vị trí ô đó trên màn hình) thì phức tạp. Còn muốn ô đó hoạt động (tức chỉ cần gõ phím là chữ được nhập ngay vào ô đó) thì chỉ cần lệnh Range("B2"). Activate
đưa lên sheet đó anh, lí do vì em có làm một bảng theo dõi sản lượng của dây chuyền. khi ấn nút thì tăng đơn vị sản phẩm. nhưng trong quá trình hoạt động chuột bị lệch ra khỏi nút ấn.
đưa lên sheet đó anh, lí do vì em có làm một bảng theo dõi sản lượng của dây chuyền. khi ấn nút thì tăng đơn vị sản phẩm. nhưng trong quá trình hoạt động chuột bị lệch ra khỏi nút ấn.
Windows API Declarations and Constants for Visual Basic (Updated for the 64-bit version of Microsoft Office 2010) provides declarations for Microsoft Visual Basic programmers who want to call Windows API routines. This file is updated to include calls to the 64-bit version of Microsoft Office 2010.
www.microsoft.com
-> nhấn Download để tải về và cài đặt Office2010Win32API_PtrSafe.exe. Trong thư mục mới được tạo C:\Office 2010 Developer Resources có 3 tập tin mà trong Win32API_PtrSafe.txt có khai báo các cấu trúc, hằng số và hàm API cho VBA7.
Còn về < VBA7 thì có thể dùng API Text Viewer có khi cài VB6 hoặc tìm trên mạng.