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
risposta
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 ...
non dovrebbe essere in un'etichetta come questa 'frmBigInputBox.myLabel.caption = prompt' altrimenti tutto è nella barra in alto della maschera/finestra. – mountainclimber
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
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.
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
Perché un InputBox? Una piccola forma e una casella di testo è quasi sempre un'idea migliore. – Fionnuala
@Remou ~ perché richiede molto più codice e non è sempre facile da usare per il nuovo sviluppatore, mentre InputBox è altamente accessibile. Altrimenti +1 – jcolebrand
~ Non credo che ci vorrà una stringa più lunga, SOL ... Segui @ il consiglio di Remou. – jcolebrand