riempimento automatico di INPUTBOX
Hai un problema con Excel? 
riempimento automatico di INPUTBOX
di nichicanta data: 29/04/2014 12:32:26
Buongiorno amici, vi chiedo, se è possibile inserire in automatico delle cifre (e non testo) separate dalla virgola (es. 614,615,650,689, ecc.) in una Inputbox, magari prelevandoli in automatico da un range di celle di una sola colonna che utilizzerei come base dati.
Ora questo risultato lo ottengo inserendo manualmente nella Inputbox le cifre separate dalla virgola, poichè le cifre cambiano mensilmente, io avrei pensato a ciò come velocizzazione dell'operazione lavorativa, al posto di inserirle sempre manualmente.
Spero di essere stato chiaro e comprensibile.
Vi saluto e vi ringrazio per tutto ciò che fate per (me/noi).
di Lucas87 data: 29/04/2014 12:54:50
Usare una combobox (menù a tendina)?
nichicanta
di nichicanta data: 29/04/2014 13:29:38
Ciao Lucas87, ho richiesto ciò poichè eseguo un filtro ed un eliminazione dei dati tramite inputbox, ti allego il codice per poter decidere se vale la pena fare ciò che ho richiesto oppure lasciare cosi com'è.
Grazie per il tuo interessamento e aiuto.
Sub Scegli_colonna()
Dim nStart As Single
Dim col As String, criterio As String
Dim arr As Variant, cr As Variant, ur As Integer
ActiveWorkbook.Worksheets("FILTRO").Select
nStart = Timer
input_colonna:
col = InputBox("Inserisci la lettera della colonna che vuoi filtrare!")
If col = "" Then Exit Sub
Beep
criterio = InputBox("HAI SELEZIONATO LA COLONNA " & UCase(col) & vbCrLf & vbCrLf & _
"INSERISCI FLOTTANTE DA ELIMINARE" & vbCrLf & _
"ANNULLA PER RISELEZIONARE LA COLONNA")
If criterio = "" Then GoTo input_colonna
Application.ScreenUpdating = False
ur = Cells(Rows.Count, col).End(xlUp).Row
arr = Split(criterio, ",")
Columns(col).AutoFilter
For Each cr In arr
ActiveSheet.Range(col & "1:" & col & ur).AutoFilter Field:=1, Criteria1:=Trim(cr)
On Error Resume Next
Rows("2:" & ur).SpecialCells(xlCellTypeVisible).Delete
Next
Columns(col).AutoFilter
Application.ScreenUpdating = True
MsgBox "Cancellazione dei seguenti dati : " & criterio & " eseguita con successo!!!" _
& Chr(13) & "Tabella copiata in " & Timer - nStart
End Sub
|
di lepat (utente non iscritto) data: 29/04/2014 14:16:12
puoi utilizzare DefaultResponse
h t t p://msdn.microsoft.com/it-it/library/6z0ak68w%28v=vs.90%29.aspx
di nichicanta data: 29/04/2014 14:31:56
Ciao Lepat ( mi correggano i più esperti se sto dicendo una stronz......ta), sapevo delle funzioni della InputBox sul sito di Microsoft, avevo già pensato di inserire le cifre di mio interesse ( es. 614,615 ecc nel codice VBA, anzichè digitarle ogni volta nella InputBox, in modo da poter direttamente eliminare le righe corrispondenti) ma ho pensato di creare una lista di codici ( che all'occorrenza vario, senza entrare sempre nel codice VB e apportare qui le dovute modifiche) elencati in una colonna da cella X a cella Y, come fa una combobox con RowsSource.
Il tutto è scaturito dal fatto che il codice che ho postato fa elegantemente il suo compito, era solo per eliminare gli inserimneti manuali di quei codice che mi permettono di eliminare le righe con i dati correlati.
Mi pare ( parere mio personale, può non essere cosi)che sia più semplice variare i dati in u n range di celle che variali nel codice VBA ogni qualvolta si presenti l'esigenza.
Ti ringrazio e ti saluto, attendo notizie di altri amici del forum su quanto ho indicato.
di lepat (utente non iscritto) data: 29/04/2014 17:30:47
metti la lista nelle celle A1-A4 e prova questo codice
Sub a()
s = Join(Application.WorksheetFunction.Transpose(Range("A1:A4")), ",")
criterio = InputBox("domanda", "titolo", s)
End Sub |
di nichicanta (utente non iscritto) data: 30/04/2014 09:06:10
Ciao lepat, innanzitutto ti ringrazio per il tuo prezioso e ottimo codice, ti chiedo solo una cortesia, se puoi ( io ci sto provando ad integrare il tuo codice nel mio per poter ottenere il risultato sperato ma va sempre in errore poichè sono un autodidatta e non riesco a risolvere gli errori che si presentano, tipo variabile non dichiarate, righe che si evidenziano di giallo ecc.) inserire il tuo codice nel punto prima di eliminare le righe corrispondenti ( al codice che ho postato) ai codice inseriti nella InpuBox (con il tuo codice).
Se puoi te ne sono immensamente grato, altrimenti ci proverò da solo fino a quando non riesco e colgo l'occasione per rinnovarti/vi il mio apprezzamento e ringraziamento.
di lepat (utente non iscritto) data: 30/04/2014 18:43:57
non ho capito cosa fa il tuo codice, non mi sembra vada d'accordo con quanto hai chiesto
di nichicanta (utente non iscritto) data: 01/05/2014 18:38:29
Ciao lepat, in pratica il mio codice mi permette di scegliere la colonna su cui effettuare il filtro delle cifre ( che inserisco manualmente separati dalla virgola, è qui che deve essere inserito il tu codice che mi deve già inserire le cifre che prende da un range di celle, questo tu già lo hai realizzato) e poi elimina la rghe correlate.
Quindi bisogna inserire il tuo codice al posto dell'inserimneto manuale delel cifre all'inpterno della InputBox.
Spero die ssere stato chiaro e comprensibile, se hai bisogno di ulteriori informazioni chiedimele pure. Grazie e buona giornata lepat.
di lepat (utente non iscritto) data: 01/05/2014 21:58:25
prova così
Sub Scegli_colonna()
Dim nStart As Single
Dim col As String, criterio As String
Dim arr As Variant, cr As Variant, ur As Integer
ActiveWorkbook.Worksheets("FILTRO").Select
nStart = Timer
input_colonna:
col = InputBox("Inserisci la lettera della colonna che vuoi filtrare!")
If col = "" Then Exit Sub
LR = Cells(Rows.Count, col).End(xlUp).Row
s = Join(Application.WorksheetFunction.Transpose(Range(col & 1 & ":" & col & LR)), ",")
Beep
criterio = InputBox("HAI SELEZIONATO LA COLONNA " & UCase(col) & vbCrLf & vbCrLf & _
"INSERISCI FLOTTANTE DA ELIMINARE" & vbCrLf & _
"ANNULLA PER RISELEZIONARE LA COLONNA", "", s)
If criterio = "" Then GoTo input_colonna
Application.ScreenUpdating = False
ur = Cells(Rows.Count, col).End(xlUp).Row
arr = Split(criterio, ",")
Columns(col).AutoFilter
For Each cr In arr
ActiveSheet.Range(col & "1:" & col & ur).AutoFilter Field:=1, Criteria1:=Trim(cr)
On Error Resume Next
Rows("2:" & ur).SpecialCells(xlCellTypeVisible).Delete
Next
Columns(col).AutoFilter
Application.ScreenUpdating = True
MsgBox "Cancellazione dei seguenti dati : " & criterio & " eseguita con successo!!!" _
& Chr(13) & "Tabella copiata in " & Timer - nStart
End Sub |
di nichicanta (utente non iscritto) data: 02/05/2014 17:21:08
Grazie lepat, benissimo, funziona, solo una piccola modifica e cioè : le cifre da eliminare si trovano sempre in un foglio a parte ( nel file allegato io li ho inseriti nel foglio2) che utilizzo come base dati, quindi la InputBox deve prelevare sempre quelle cifre e poi eliminarle dal foglio 1 in base alla colonna scelta. Spero di essere stato chiaro, ti ringrazio tantissimo.
P.S. allego il file chiamato prova.
di lepat (utente non iscritto) data: 02/05/2014 18:26:43
alora così
Sub Scegli_colonna()
Dim nStart As Single
Dim col As String, criterio As String
Dim arr As Variant, cr As Variant, ur As Integer
Set sh2 = Worksheets("Foglio2")
ActiveWorkbook.Worksheets("Foglio1").Select
nStart = Timer
input_colonna:
col = InputBox("Inserisci la lettera della colonna che vuoi filtrare!")
If col = "" Then Exit Sub
LR = sh2.Cells(Rows.Count, "A").End(xlUp).Row
s = Join(Application.WorksheetFunction.Transpose(sh2.Range("A1:A" & LR)), ",")
Beep
criterio = InputBox("HAI SELEZIONATO LA COLONNA " & UCase(col) & vbCrLf & vbCrLf & _
"INSERISCI FLOTTANTE DA ELIMINARE" & vbCrLf & _
"ANNULLA PER RISELEZIONARE LA COLONNA", "", s)
If criterio = "" Then GoTo input_colonna
Application.ScreenUpdating = False
ur = Cells(Rows.Count, col).End(xlUp).Row
arr = Split(criterio, ",")
Columns(col).AutoFilter
For Each cr In arr
ActiveSheet.Range(col & "1:" & col & ur).AutoFilter Field:=1, Criteria1:=Trim(cr)
On Error Resume Next
Rows("2:" & ur).SpecialCells(xlCellTypeVisible).Delete
Next
Columns(col).AutoFilter
Application.ScreenUpdating = True
MsgBox "Cancellazione dei seguenti dati : " & criterio & " eseguita con successo!!!" _
& Chr(13) & "Tabella copiata in " & Timer - nStart
End Sub
|
di nichicanta (utente non iscritto) data: 02/05/2014 18:51:29
Bingo, complimenti lepat, grazie per il tuo prezioso lavoro e la tua professionalità.
Grazie infintite, non so come ripagarvi per tutto quello che fate per noi, non posso dire altro che questo: grazie di esistere .
Vuoi Approfondire?