【问题标题】:Overcome VBA InputBox Character Limit克服 VBA 输入框字符限制
【发布时间】:2011-02-27 12:15:39
【问题描述】:

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

【问题讨论】:

  • 为什么是输入框?一个小的表单和文本框几乎总是一个更好的主意。
  • @Remou ~ 因为这需要更多的代码,而且对于新开发人员来说并不总是很容易使用,而 InputBox 是高度可访问的。否则 +1
  • ~ 我不认为它需要更长的字符串,SOL... 遵循@Remou 的建议。

标签: excel vba limit character inputbox


【解决方案1】:

为了迂腐,输入框最多允许您输入 255 个字符,但它只会返回 254 个字符。

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

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

或类似的东西......

【讨论】:

  • 不应该在frmBigInputBox.myLabel.caption = prompt 这样的标签中,否则所有内容都在表单/窗口的顶部栏中。
【解决方案2】:

感谢 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

【讨论】:

    【解决方案3】:

    我没有足够的代表发表评论,但您可以在助手的子 form_load 中添加:

    me.AutoCenter = True
    

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 2012-11-16
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多