Преодолеть ограничение на количество символов сайт inputbox в VBA
Текущая функция, которую я использую для сбора текста InputBox, по-видимому, не может принимать более 255 символов, и мне нужно уметь собирать больше, чем это? Есть ли параметр или другая функция, которую я могу использовать для увеличения этого предела?
3 ответа:
Чтобы быть педантичным, Inputbox позволит вам ввести до 255 символов, но он будет возвращать только 254 символа.
Помимо этого, да, вам нужно будет создать простую форму с текстовым полем. Тогда просто сделайте небольшую "вспомогательную функцию" что-то вроде:
Function getBigInput(prompt As String) As String frmBigInputBox.Caption = prompt frmBigInputBox.Show getBigInput = frmBigInputBox.txtStuff.Text End Function
Или что-то в этом роде...
Спасибо BradC за информацию, что. Мой окончательный код был примерно следующим: у меня есть кнопка, которая вызывает форму, которую я создал, и немного позиционирует ее, поскольку у меня были некоторые проблемы с формой, находящейся в неправильном месте каждый раз после первого использования.
Форма пользователя представляла собой текстовое поле и две кнопки командной строки (Отмена и Ok). Код для кнопок был следующим:Sub InsertNotesAttempt() NoteEntryForm.Show With NoteEntryForm .Top = 125 .Left = 125 End With End Sub
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
У меня недостаточно репутации, чтобы комментировать, но в sub form_load для помощника вы можете добавить:
me.AutoCenter = True
Вне этой формы, вы можете сделать это так:
NoteEntryForm.Show Forms("NoteEntryForm").AutoCenter = True
Мои формы доступа путаются, когда я иду от двух дополнительных мониторов на работе к одному дополнительному монитору дома, и иногда теряются в углу. Этот Автоцентр превратил его в свойства формы каждой из моих форм.