Uso di inputbox



  • Uso di inputbox
    di Elisa (utente non iscritto) data: 27/01/2010

    Ciao a tutti!
    mi rivolgo a voi per chiedervi gentilmente un aiuto in merito alla creazione di una macro excel:

    ho un elenco di parole in colonna a (a1:a20),
    devo leggere con inputbox tre valori compresi tra 1 e 20 in modo da comporre, con le tre parole corrispondenti ai tre valori numerici (numeri di riga), una frase da visualizzare in un'altra cella. come posso fare?

    grazie mille!



  • di Teovba (utente non iscritto) data: 27/01/2010

    Ciao,
    non ho capito,con l'inputbox chiedi 3 numeri ed in base a questi desideri che vengano poste le relative parole nella cella in colonna 2?



  • di Enzo (utente non iscritto) data: 27/01/2010

    Prova questa
     
    Application.ScreenUpdating = False
    VALORE = ""
    XX = ""
    For i = 1 To 3
    10 X = InputBox("INSERISCI UN VALORE NUMERICO")
    If X = "" Then
    Exit Sub
    End If
    XX = IsNumeric(X)
    If XX = False Then
    MsgBox "IL VALORE INSERITO NON E' NUMERICO"
    GoTo 10
    End If
    VALORE = Trim(VALORE & " " & Range("A" & X).Value)
    Next i
    Application.ScreenUpdating = True
    Range("B1") = VALORE
    



  • di Enzo (utente non iscritto) data: 27/01/2010

    Mi ero dimenticato di dirti che la frase finale la inserisce in b1
    sta a te inserirla dove vuoi


  • Ok macro
    di Elisa (utente non iscritto) data: 28/01/2010

    Grazie enzo, gentilissimo, mi sei stato di grandissimo aiuto! la macro risponde perfettamente a quello che chiedevo. mi sono trovata un po’ in difficoltà anche rispetto ad un altra macro. non so se posso chiedere una mano anche in questo caso…spero di sì.

    se ho ad es. 20 valori numerici nelle prime 20 celle della riga 1 (da a1 ad t1) e devo leggere con input box un valore iniziale “inizio” (ad es. 2 per indicare il numero di colonna b di riga 1) compreso tra 1 e 20 e un valore finale “finale” (altro numero di colonna della riga 1) sempre compreso tra 1 e 20, come faccio a moltiplicare i valori delle celle in riga 1 iniziando da inizio fino a finale (quindi considerando nel prodotto anche i valori di cella compresi tra inizio e finale), visualizzando poi il prodotto finale in un’altra qualsiasi cella?
    ancora mille grazie!!



  • di Enzo (utente non iscritto) data: 28/01/2010

    Ti do una mano ma devo capire
    allega un file di esempio con quello che vorresti fare



  • di Enzo (utente non iscritto) data: 28/01/2010

    Il risultato viene restituito in a8
    se ho capito quello che volevi!!!!
    ma ho i miei dubbi

     
    Dim X As String
    Dim y As String
    X = InputBox("INIZIO")
    y = InputBox("FINE")
    Range("A1").Select
    Do
    ActiveCell.Offset(0, 1).Select
    Loop Until ActiveCell.Value = X
    VALORE = ActiveCell.Value * X
    Do
    ActiveCell.Offset(0, 1).Select
    VALORE = VALORE * ActiveCell.Offset
    Loop Until ActiveCell.Value = y
    Range("A8").Value = VALORE
    Range("A8").NumberFormat = "#,##0"
    



  • di Elisa (utente non iscritto) data: 28/01/2010

    Scusa enzo, in effetti rileggendomi mi accorgo di non essere stata affatto chiara…la macro che hai formulato funziona perfettamente ed è molto molto vicina a quello che intendevo, e cioè
    considerando ad es. le prime 20 celle da a a t(con i rispettivi valori che nell’esempio sono numeri reali) della riga 1:

    cella a1 =0,1
    cella b1= 0,4
    cella c1= 2
    cella d1= 88,9 (e così via fino a t1)
    ......
    devo far sì che immettendo in inputbox come valore "inizio" il numero corrispondente ad una data colonna della riga 1 (ad es. 1 per a, 2 per b, 3 per c e così via), l’inputbox mi legga (in funzione della successiva operazione di prodotto) il valore di cella appartenente proprio a quella colonna di riga 1 (ad es. digitando 1 in inputbox, questo mi dovrà leggere il corrispondente valore della prima colonna a della riga, e cioè 0,1, come nell’es.); e fare lo stesso per il valore "finale" (ad es. digito in inputbox 2 e questo mi legge il valore di cella della seconda colonna b, cioè 0,4);
    in questo modo, quando faccio il prodotto dei valori compresi nel range inizio-finale, digitando ad es. 1 nel primo inputbox e 2 nel secondo,ottengo il risultato 0,04 (ovvero 0,1*0,4=0,04). spero di essere stata un po’ più comprensibile. grazie ancora per il preziosissimo aiuto...



  • di Enzo (utente non iscritto) data: 29/01/2010

    Prova ora
     
    Application.ScreenUpdating = False
    X = InputBox("INIZIO")
    y = InputBox("FINE")
    X = CInt(X)
    y = CInt(y)
    valore = Cells(1, X).Value * Cells(1, y).Value
    Application.ScreenUpdating = True
    Range("A8").Value = valore
    Range("A8").NumberFormat = "#,##0"



  • di Enzo (utente non iscritto) data: 29/01/2010

    Mi ero accorto di un piccolo errore
    prova questa
     
    Application.ScreenUpdating = False
    X = InputBox("INIZIO")
    y = InputBox("FINE")
    X = CInt(X)
    y = CInt(y)
    valore = Cells(1, X).Value * Cells(1, y).Value
    Application.ScreenUpdating = True
    Range("A8").Value = valore
    Range("A8").NumberFormat = "#,##0.00"



  • di Elisa (utente non iscritto) data: 29/01/2010

    Ok, funziona perfettamente per il prodotto tra i valori di due celle consecutive (ad es. tra i valori di celle di a1 e b1, di b1 e c1, di c1 e d1…e così via), tuttavia non calcola correttamente il prodotto tra i valori di cella compresi negli intervalli più ampi (cioè restituisce un risultato non corretto per il prodotto tra i valori di cella compresi ad es. tra a1 e c1, tra c1 e h1, tra d1 e t1, e così via….)….



  • di Enzo (utente non iscritto) data: 29/01/2010

    Ho rispettato l'esempio che mi hai fatto
    .....questa spero dovrebbe andar bene
     
    Application.ScreenUpdating = False
    X = InputBox("INIZIO")
    Y = InputBox("FINE")
    X = CInt(X)
    Y = CInt(Y)
    Cells(1, Y).Font.Bold = True
    VALORE = 0
    Cells(1, X).Select
    VALORE = ActiveCell.Value
    Do
    ActiveCell.Offset(0, 1).Select
    VALORE = VALORE * ActiveCell.Value
    Loop Until ActiveCell.Font.Bold = True
    Cells(1, Y).Font.Bold = False
    Application.ScreenUpdating = True
    Range("A8").Value = VALORE
    Range("A8").NumberFormat = "#,##0.00"
    



  • di Elisa (utente non iscritto) data: 29/01/2010

    Grazie mille!! bravissimo! questa è proprio quella giusta!
    mi hai dato una grossa mano.

    ancora grazie per la disponibilità e...la pazienza