Condividi:        

Inserisci numerico inputbox da una lista

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Inserisci numerico inputbox da una lista

Postdi zanatta77 » 26/02/15 18:55

Buonasera
Quello che vorrei fare è inserire nel foglio1 in base al valore inserito nell'inputbox dei dati presenti nel foglio2 che funge da database dove si trovano dei dati nelle colonne "A" "B" "C" "D"
Come valori minimo e massimo o impostato 1 e 20.
Ad esempio inserendo 3 nell'inputbox venga selezionato foglio2 e ad ogni click (per un massimo di 3) su celle "A1" "A100" mi vada a inserire i dati presenti in corrispondenza della "A" "B" "C" "D" nel foglio1 partendo da cella "A12" fino a formare 3 righe.
Per farmi capire meglio "si spera" se inserisco 2 nell'inputbox si seleziona foglio2 e faccio click su "A7" in automatico i dati presenti in A7 B7 C7 e D7 vengono trascritti su A12 B12 C12 D12 di foglio1 poi faccio click su "A99" allora in automatico i dati presenti in A99 B99 C99 e D99 vengono trascritti su A13 B13 C13 D13 di foglio1.
Inserisco la prima parte ma non ho idea di come fare la seconda :?:
Codice: Seleziona tutto
Private Sub Insert()
Dim message, title, defaultValue As String
Dim myValue As Variant
message = "Valore minimo 1 e massimo 20"
title = "Definisci il totale  da inserire"
defaultValue = "Definisci il numero  che vuoi inserire"
myValue = Application.InputBox(message, title, defaultValue)
If myValue <= 0 Or myValue > 20 Then
    MsgBox "Spiacente il numerico non rientra nel range consentito"
ElseIf myValue >= 0 Or myValue <= 20 Then
    Range("B10:M10").Copy Destination:=Range("B" & myValue)
End If
End Sub
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Sponsor
 

Re: Inserisci numerico inputbox da una lista

Postdi zanatta77 » 26/02/15 20:18

ho sbagliato comunque questo va rivisto :
Codice: Seleziona tutto
Range("B10:M10").Copy Destination:=Range("B" & myValue)

correttamente sarebbe questo ;
Codice: Seleziona tutto
Range("B" & myValue + 1) = "fine"
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: Inserisci numerico inputbox da una lista

Postdi Anthony47 » 26/02/15 23:40

Per farmi capire [...] se inserisco 2 nell'inputbox si seleziona foglio2 e faccio click su "A7" in automatico i dati presenti in A7 B7 C7 e D7 vengono trascritti su A12 B12 C12 D12 di foglio1 poi faccio click su "A99" allora in automatico i dati presenti in A99 B99 C99 e D99 vengono trascritti su A13 B13 C13 D13 di foglio1.
Qui mi sono perso, perche' non ho capito che fine fa il "2" inserito nell' inputbox, ne' ho capito da dove scaturisce la conclusione che la prima copia deve essere fatta su riga 12.

Quindi se non arrivano buoni contributi dovresti provare a spiegare ancora una volta quale e' l' obiettivo finale, omettendo per il momento la modalita' con cui hai pensato di farlo.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserisci numerico inputbox da una lista

Postdi zanatta77 » 27/02/15 06:34

Sul foglio 2 nelle colonne "A" "B" "C" "D" ci sono riportati dei dati.
Quello che vorrei fare è ; Un inputbox iniziale che in base al valore che viene inserito da chi accede al file prende questo valore lo aumenta di una unità e fa comparire un testo. Successivamente a quanto detto finora vorrei riportare nel foglio dove mi trovo cioè foglio1 i dati presenti sul foglio2, il numero di quanti riportarne è quello inserito nell'inputbox, tutto questo inserendoli nel foglio1 sempre dal rigo "A12" a salire.
Praticamente mi serve per non fare copia e incolla manualmente
Un esempio ;
Se viene inserito nell'inputbox 10 devono essere inseriti nel foglio1 a partire dal rigo "A12" fino a "A22" dei dati presenti nel foglio2 che io andrò a scegliere da "A1" fino ad "A100".
Avevo pensato al click ma qualunque cosa va bene.
Grazie
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: Inserisci numerico inputbox da una lista

Postdi Anthony47 » 27/02/15 15:33

Ah, riga 12 era la riga di inizio.
Io userei questa procedura:
-da Foglio2, si seleziona una cella della riga da copiare, poi "tasto destra"
-una macro chiede se si vuole copiare quella riga per il numero di volte che si indica
-il numero digitato viene memorizzato e sara' usato come valoredi default per i tasto destra successivi
La macro e' questa:
Codice: Seleziona tutto
Dim Tot As Long      'QUESTA DEVE trovarsi in testa al Modulo

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
copyarea = "B:M"        '<<< Le colonne che devono essere copiate
If Tot = 0 Then Tot = 1
Cancel = True
mynext = Sheets("Foglio1").Cells(Rows.Count, 1).End(xlUp).Row + 1
If mynext < 12 Then mynext = 12
rispo = Application.InputBox("Ok a copiare in Foglio1, da riga " & mynext & " in avanti, la riga selezionata per il numero di volte sotto indicato?", , Tot, , , , 1)
If Not IsNumeric(rispo) Or rispo = False Then Exit Sub
'Copia in Foglio1:
Application.Intersect(Range(copyarea), Target.EntireRow).Copy _
    Destination:=Sheets("Foglio1").Cells(mynext, 1).Resize(rispo, 1)
'Ricorda le "volte"
Tot = rispo
End Sub

Mi sembra di aver capito che le colonne da copiare sono B:M (prima macro); se non e' cosi' (A:D?) modifica la riga marcata <<<
Operativamente: tasto dx sul tab con la scritta Foglio2, scegli Visualizza codice: ti si aprira' l' editor delle macro; copia il codice e incollalo nel frame "vuoto" di destra (se non e' vuoto, allora bisogna verficare la compatibilita' con quello che c'e' gia'; pubblica il contenuto e vedremo).
Poi torna su Foglio2, seleziona una riga, fai Tasto dx e vedi quel che succede.

Fai sapere, ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserisci numerico inputbox da una lista

Postdi zanatta77 » 27/02/15 19:00

Ok gentilissimo come sempre.
E' esattamente quello che cercavo di fare invano..... unica modifica fatta in quanto non mi serve copiare "il dato" più di una volta
Codice: Seleziona tutto
rispo = 1

Vorrei completarla con il discorso iniziale dell'inputbox e del suo valore contenuto se è possibile.
Nel senso mettere un limite massimo d'inserimento che equivale al valore inserito nell'inputbox.
Nel mio caso l'inputbox verra chiamato in causa "call."alla chiusura di una UserForm dove si andrà a scegliere il numero dei dati che si vogliono inserire nel foglio1 e mi scrive nella riga successiva una frase

Come posso fare ?? si può fare un Set dell'InputBox.value
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: Inserisci numerico inputbox da una lista

Postdi Anthony47 » 28/02/15 00:01

Sinceramente alcune cose non le avevo capite dalla descrizione e le avevo dedotte dal primo codice macro pubblicato.
Ancora adesso non mi e' chiarissimo...
Uno spunto:
-una macro inserita in un Modulo standard fa partire l' inputbox da cui leggi un valore (o lo fai con un textbox della form di cui parli); scrivi questo valore nella variabile Tot
-la variabile Tot e' "dichiarata" in testa a un modulo standard con la riga inserita in testa a tutto
Codice: Seleziona tutto
Public Tot as Long

-modifichi la macro che copia aggiungendo un check sul valore di Tot; ad esempio se continui a usare l' evento BeforeRightClick:
Codice: Seleziona tutto
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'Due righe aggiunte da qui:
If Tot <1 then Exit Sub     
Tot = Tot -1
copyarea = "B:M"        '<<< Le colonne che devono essere copiate


Spero che ti sia utile.
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserisci numerico inputbox da una lista

Postdi zanatta77 » 28/02/15 10:12

Purtroppo non vedo come possano incidere gli ultimi comandi dati con il mio fine.
Quello che vorrei perfezzionare è mettere un limite d'inserimento massimo con il rightclick, al momento continua senza limiti a inserire.... a ogni rightclick
Il limite vorrei che fosse il numero inserito nell'inputbox.
A tal proposito l'inputbox posso anche farlo avviare mettendolo dentro al
Codice: Seleziona tutto
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
il problema è che se lo metto adesso me lo fa uscire a ogni rightclick. A me servirebbe solo al primo rightclick.
questo è l'iputbox che ti ho inserito all'inizio
Codice: Seleziona tutto
Dim message, title, defaultValue As String
Dim myValue As Variant
message = "Valore minimo 1 e massimo 20"
title = "Definisci il totale  da inserire"
defaultValue = "Definisci il numero  che vuoi inserire"
myValue = Application.InputBox(message, title, defaultValue)
If myValue <= 0 Or myValue > 20 Then
    MsgBox "Spiacente il numerico non rientra nel range consentito"
ElseIf myValue >= 0 Or myValue <= 20 Then
    Range("B" & myValue +1)= "-------fine--------"
End If
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: Inserisci numerico inputbox da una lista

Postdi Anthony47 » 01/03/15 00:12

Purtroppo io non capisco che cosa fai tu e tu non capisci che cosa suggerisco (in linea di principio) io...

Quello che ti avevo suggerito era di mettere un contatore, che si inizializza quando fai partire il tuo inputbox e che viene "scalato" ogni volta che fai la procedura di "TastoDestro"
La macro che visualizza l' inputbox mettila su un Modulo a piacere (diciamo Modulo1).
In testa a questo Modulo1 metterai la riga
Codice: Seleziona tutto
Public Tot as Long


In coda alla macro dell' inputbox, subito prima di End Sub, aggiungi
Codice: Seleziona tutto
Tot = myValue
(myValue e' la variabile in cui, nell'esempio, hai messo il valore dell'inputbox)

In testa alla macro del tasto dx inserisci la gestione del contatore Tot:
Codice: Seleziona tutto
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'Due righe aggiunte da qui:
If Tot <1 then Exit Sub     'AGGIUNTA
Tot = Tot -1                'AGGIUNTA


Poiche' ho capito max la meta' di quello che in realta' fai devi adattare questi codici a quello che fai...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserisci numerico inputbox da una lista

Postdi zanatta77 » 01/03/15 10:46

OK GRAZIE adesso è completo.
Unica cosa che ho fatto per farlo funzionare è stato eliminare dal modulo dell'inputbox la dichiarazione della variabile
Codice: Seleziona tutto
Dim Tot As Long     
perché altrimenti il conteggio era sempre a salire del tipo 1,2,3,4,5,ecc oppure -1,-2,-3,-4,-5 ecc mentre a me occorreva a scalare 5,4,3,2,1,0
E ho invertito l'aggiunta nel modulo before rightclick
Codice: Seleziona tutto
Tot = Tot -1                'AGGIUNTA
 If Tot <0 then Exit Sub     'AGGIUNTA

Grazie per avermi fatto raggiungere l'intento ..... ;)
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: Inserisci numerico inputbox da una lista

Postdi Anthony47 » 01/03/15 21:26

Nel caso che una variabile sia definita piu' volte, una pubblica e una privata, la definizione "privata" prevale all' interno della macro che la definisce; ecco perche' hai dovuto eliminare la seconda Dim Tot.

E ho invertito l'aggiunta nel modulo before rightclick
E' stato necessario, o ti sembrava giusto farlo? perche' mi pare che le due versioni siano uguali..

Ciao, alla prossima.
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Inserisci numerico inputbox da una lista":


Chi c’è in linea

Visitano il forum: Nessuno e 28 ospiti