2010-06-03 19 views
5

La funzione corrente che utilizzo per raccogliere il testo di InputBox non può accettare più di 255 caratteri a quanto pare e devo essere in grado di raccogliere più di quello? C'è un parametro o una funzione diversa che posso usare per aumentare questo limite?Superato il limite di caratteri VBA InputBox

+1

Perché un InputBox? Una piccola forma e una casella di testo è quasi sempre un'idea migliore. – Fionnuala

+0

@Remou ~ perché richiede molto più codice e non è sempre facile da usare per il nuovo sviluppatore, mentre InputBox è altamente accessibile. Altrimenti +1 – jcolebrand

+0

~ Non credo che ci vorrà una stringa più lunga, SOL ... Segui @ il consiglio di Remou. – jcolebrand

risposta

4

Per essere pedante, Inputbox consente di digitare fino a 255 caratteri, ma restituirà solo 254 caratteri.

Oltre a ciò, sì, è necessario creare un modulo semplice con una casella di testo. Poi basta fare un po 'di qualcosa di "funzione di supporto", come:

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

o qualcosa del genere ...

+0

non dovrebbe essere in un'etichetta come questa 'frmBigInputBox.myLabel.caption = prompt' altrimenti tutto è nella barra in alto della maschera/finestra. – mountainclimber

2

Grazie BradC per le informazioni che. Il mio codice finale era approssimativamente il seguente: ho un pulsante che chiama il modulo che ho creato e lo posiziona un po 'perché avevo alcuni problemi con il modulo che si trovava nel posto sbagliato ogni volta che lo usavo dopo la prima volta.

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

Il form utente era un TextBox e due CommandButtons (Annulla e Ok). Il codice per i pulsanti è stata la seguente:

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

io non ho abbastanza rep di commentare, ma nel Sub Form_Load per l'assistente è possibile aggiungere:

me.AutoCenter = True 

Al di fuori di quella forma, si può fare in questo modo:

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

mie forme di accesso ottenere tutto confuso quando vado dai miei due monitor in più al lavoro per il mio un monitor supplementare a casa, e sono a volte persi in un angolo. Questo AutoCenter è diventato proprietà di ogni modulo.

+0

Benvenuti nel sito! Questo non tenta di rispondere alla domanda posta, come sai, e dovrebbe essere un commento. [Utilizzare Risposte esclusivamente per rispondere alla domanda] (// meta.stackoverflow.com/q/92107). Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post - puoi sempre commentare i tuoi post, e una volta che hai [sufficiente reputazione] (// stackoverflow.com/help/whats-reputation) sarai in grado [commentare qualsiasi post] (// stackoverflow.com/help/privileges/comment). Nel frattempo, non utilizzare le risposte per inviare commenti. – Mogsdad

Problemi correlati