克服VBA InputBox字符限制

时间:2010-06-03 20:26:10

标签: excel vba limit character inputbox

我用来收集文本的当前函数InputBox显然不能接受超过255个字符,我需要能够收集更多吗?我可以用一个参数或不同的函数来增加这个限制吗?

3 个答案:

答案 0 :(得分:4)

要迂腐,输入框最多可以输入255个字符,但只返回254个字符。

除此之外,是的,您需要使用文本框创建一个简单的表单。然后只需制作一个“辅助功能”,如:

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

或类似的......

答案 1 :(得分:2)

感谢BradC提供的信息。我的最终代码大致如下,我有一个按钮,调用我创建的表单并稍微定位,因为我在第一次使用后每次都遇到错误的表单问题。

Sub InsertNotesAttempt()
    NoteEntryForm.Show
    With NoteEntryForm
        .Top = 125
        .Left = 125
    End With
End Sub

userform是一个TextBox和两个CommandButtons(取消和确定)。按钮的代码如下:

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 :(得分:1)

我没有足够的回复来评论,但在辅助者的sub form_load中你可以添加:

me.AutoCenter = True

在该表单之外,你可以这样做:

NoteEntryForm.Show
Forms("NoteEntryForm").AutoCenter = True

当我从工作时的两台额外显示器转到家中的一台额外显示器时,我的访问表格变得混乱,有时会在角落里丢失。这个AutoCenter已经成为我每个表单的表单属性。