Преодолейте предел символа VBA InputBox

Текущая функция, которую я использую для сбора текста InputBox, не может принять больше чем 255 символов, по-видимому, и я должен смочь собрать больше, чем это? Существует ли параметр или другая функция, которую я могу использовать для увеличения этого предела?

5
задан Ryan B 3 June 2010 в 20:26
поделиться

2 ответа

Чтобы быть педантичным, Inputbox позволит вам ввести до 255 символов, но вернет только 254 символа.

Кроме этого, да, вам нужно создать простую форму с текстовым полем. Затем просто сделайте небольшую "вспомогательную функцию", что-то вроде:

Function getBigInput(prompt As String) As String
    frmBigInputBox.Caption = prompt
    frmBigInputBox.Show
    getBigInput = frmBigInputBox.txtStuff.Text
End Function

или что-то в этом роде...

4
ответ дан 14 December 2019 в 08:43
поделиться

Спасибо BradC за информация что. Мой окончательный код был примерно следующим: у меня есть кнопка, которая вызывает созданную мной форму и немного позиционирует ее, поскольку у меня были некоторые проблемы с тем, что форма находилась в неправильном месте каждый раз после первого использования.

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
2
ответ дан 14 December 2019 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: