Chức năng hiện tại tôi sử dụng để thu thập văn bản InputBox không thể chấp nhận hơn 255 ký tự, và tôi cần có khả năng thu thập nhiều hơn thế? Có một tham số hoặc chức năng khác mà tôi có thể sử dụng để tăng giới hạn này?Vượt qua giới hạn ký tự đầu vào VBA
Trả lời
Để trở nên phổ biến, Hộp nhập liệu sẽ cho phép bạn nhập tối đa 255 ký tự, nhưng nó sẽ chỉ trả lại 254 ký tự.
Ngoài ra, có, bạn cần phải tạo một biểu mẫu đơn giản với hộp văn bản. Sau đó chỉ cần làm một chút "chức năng helper" một cái gì đó như:
Function getBigInput(prompt As String) As String
frmBigInputBox.Caption = prompt
frmBigInputBox.Show
getBigInput = frmBigInputBox.txtStuff.Text
End Function
hoặc một cái gì đó như thế ...
không nên nằm trong nhãn như thế này 'frmBigInputBox.myLabel.caption = prompt' nếu không mọi thứ nằm trong thanh trên cùng của biểu mẫu/cửa sổ. – mountainclimber
Cảm ơn BradC cho các thông tin đó. Mã cuối cùng của tôi là gần như sau, tôi có một nút gọi biểu mẫu mà tôi đã tạo và định vị nó một chút khi tôi gặp một số vấn đề với biểu mẫu nằm sai chỗ mỗi lần sau lần đầu tiên tôi sử dụng.
Sub InsertNotesAttempt()
NoteEntryForm.Show
With NoteEntryForm
.Top = 125
.Left = 125
End With
End Sub
Biểu mẫu người dùng là một TextBox và hai CommandButton (Hủy và Ok). Các mã cho các nút như sau:
Private Sub CancelButton_Click()
Unload NoteEntryForm
End Sub
Private Sub OkButton_Click()
Dim UserNotes As String
UserNotes = NotesInput.Text
Application.ScreenUpdating = False
If UserNotes = "" Then
NoteEntryForm.Hide
Exit Sub
End If
Worksheets("Notes").ListObjects("Notes").ListRows.Add (1)
Worksheets("Notes").Range("Notes").Cells(1, 1) = Date
Worksheets("Notes").Range("Notes").Cells(1, 2) = UserNotes
Worksheets("Notes").Range("Notes").Cells(1, 2).WrapText = True
' Crap fix to get the wrap to work. I noticed that after I inserted another row the previous rows
' word wrap property would kick in. So I just add in and delete a row to force that behaviour.
Worksheets("Notes").ListObjects("Notes").ListRows.Add (1)
Worksheets("Notes").Range("Notes").Item(1).Delete
NotesInput.Text = vbNullString
NotesInput.SetFocus ' Retains focus on text entry box instead of command button.
NoteEntryForm.Hide
Application.ScreenUpdating = True
End Sub
tôi không có đủ đại diện cho bình luận, nhưng trong Form_Load phụ cho helper bạn có thể thêm:
me.AutoCenter = True
Ngoài hình thức đó, bạn có thể làm như sau:
NoteEntryForm.Show
Forms("NoteEntryForm").AutoCenter = True
Biểu mẫu truy cập của tôi bị lẫn lộn khi tôi đi từ hai màn hình phụ làm việc thêm một màn hình phụ ở nhà và đôi khi bị mất ở góc. AutoCenter này đã biến nó thành các thuộc tính biểu mẫu của mỗi một trong các biểu mẫu của tôi.
Chào mừng bạn đến với trang web! Điều này không cố gắng trả lời câu hỏi đã đăng, như bạn biết và phải là nhận xét. [Vui lòng sử dụng Câu trả lời dành riêng để trả lời câu hỏi] (// meta.stackoverflow.com/q/92107). Để phê bình hoặc yêu cầu làm rõ từ tác giả, để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của riêng bạn và sau khi bạn có [đủ danh tiếng] (// stackoverflow.com/help/whats-reputation), bạn sẽ có thể để [nhận xét về bất kỳ bài đăng nào] (// stackoverflow.com/help/privileges/comment). Trong thời gian chờ đợi, vui lòng không sử dụng câu trả lời để đăng nhận xét. – Mogsdad
Tại sao hộp nhập liệu? Một hình thức nhỏ và hộp văn bản gần như luôn luôn là một ý tưởng tốt hơn. – Fionnuala
@Remou ~ bởi vì phải mất nhiều mã hơn và không phải lúc nào cũng dễ dàng cho nhà phát triển mới sử dụng, trong khi InputBox rất dễ truy cập. Nếu không +1 – jcolebrand
~ Tôi không nghĩ rằng nó sẽ mất một chuỗi dài hơn, SOL ... Làm theo lời khuyên của @ Remou. – jcolebrand