2010-06-03 194 views
5

我用来收集文本InputBox的当前函数显然不能接受超过255个字符,而且我需要能够收集比这更多的东西?是否有一个参数或不同的功能可以用来增加此限制?克服VBA输入框字符限制

+1

为什么使用InputBox?小型表单和文本框几乎总是一个更好的主意。 – Fionnuala 2010-06-03 20:31:02

+0

@Remou〜因为这需要更多的代码,并且对于新开发人员来说并不总是很容易使用,而InputBox具有高度的可访问性。否则+1 – jcolebrand 2010-06-03 20:33:57

+0

〜我不认为这会花费更长的字符串,SOL ...按照@ Remou的建议。 – jcolebrand 2010-06-03 20:34:21

回答

4

要迂回,Inputbox将允许您键入最多255个字符,但它只会返回254个字符。

除此之外,是的,你需要创建一个带有文本框的简单表单。接下来,只要一点点“辅助函数”是这样的:

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

或类似的东西...

+0

不应该像这样''frmBigInputBox.myLabel.caption = prompt'这样的标签,否则一切都在窗体/窗口的顶部栏中。 – mountainclimber 2017-09-11 15:34:09

2

感谢BradC的信息说。我的最终代码大致如下,我有一个按钮,用于调用我创建的表单,并定位它,因为我在第一次使用后每次都发现表单存在一些问题。

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

userform是一个TextBox和两个CommandButtons(Cancel和Ok)。对于按钮的代码如下:

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 
1

我没有足够的代表处发表评论,但在子的Form_Load的助手,你可以添加:

me.AutoCenter = True 

之外的形式,你可以做这样的:

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

我的访问形式让所有困惑,当我从我的两个额外的显示器去上班时我一个额外的显示器在家里,并在角落里有时会丢失。这个AutoCenter已经将它变成了我的每一个表单的表单属性。

+0

欢迎来到本网站!如你所知,这不会尝试回答发布的问题,而应该是一条评论。 [请仅使用Answers来回答问题](// meta.stackoverflow.com/q/92107)。要批评或要求作者澄清,在他们的帖子下留下评论 - 你总是可以评论你自己的帖子,一旦你有足够的声誉(// stackoverflow.com/help/whats-reputation),你将能够[评论任何帖子](// stackoverflow.com/help/privileges/comment)。同时,请不要使用回复来发表评论。 – Mogsdad 2016-05-13 14:05:03