Interagire con la Macro



  • Interagire con la Macro
    di ilFonta data: 04/01/2016 13:00:37

    Salve a tutti e buon 2016

    VI spiego il mio problema e la macro che ho scritto che è completamente funzionante, ma vorrei modificarla.

    1) seleziono un intervallo di celle
    2) lancio la macro
    3) VBA mi chiede dove voglio copiare l'intervallo (un po' rimaneggiato) con Set cellRif = Application.InputBox(prompt:="Inserisci la cella dove incolonnare", Type:=8) e io inserisco un valore come può essere "A20"

    Problema: vorrei che i punti 1 e 2 restassero gli stessi, ma vorrei che al punto 3, invece di dare un nome alfanumerico alla casella dove copiare, mettere un message box con scritto " seleziona la casella" e in seguito poterla selezionare cliccandoci sopra.

    Qualche suggerimento?

    Grazie 1000

     
    Attribute VB_Name = "Modulo11"
    Sub Incolonnatore()
        
        Dim myRange As Range
        Set myRange = Selection
        
        Dim Colonne As Integer
        Dim Righe As Integer
        
        Colonne = Selection.Columns.Count
        Righe = Selection.Rows.Count
        
        Dim cellRif As Range
        Set cellRif = Application.InputBox(prompt:="Inserisci la cella dove incolonnare", Type:=8)
    
        salto = 0
        For index = 1 To Colonne
            myRange.Columns(index).Copy
            cellRif.Offset(salto * Righe, 0).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            salto = salto + 1
        Next index
        
    End Sub



  • di Marius44 data: 04/01/2016 16:42:50

    Non credo si possa fare come dici tu (spero per te che qualcuno mi smentisca).
    Un'alternativa potrebbe essere questa: scrivi in una cella qualsiasi l'indirizzo della cella dove vuoi copiati i dati, selezioni il tuo intervallo, lanci la macro DOVE HAI INSERITO LA CELLA DA CUI PRENDERE LA DESTINAZIONE. Prima che la macro completi inserisci pure la cancellazione del dato nella cella.

    Spero di essere stato chiaro e, soprattutto, d'aiuto.
    Ciao,
    Mario



  • di scossa data: 04/01/2016 16:54:53

    cit.: "ma vorrei che al punto 3, invece di dare un nome alfanumerico alla casella dove copiare, mettere un message box con scritto " seleziona la casella" e in seguito poterla selezionare cliccandoci sopra"

    Ma guarda che con Type:=8 già lo puoi fare:
    Set cellRif = Application.InputBox(prompt:="Seleziona la cella", Type:=8)

    basta che selezioni la cella e automaticamente nell'InputBox ti trovi il suo indirizzo.


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.
    (George Bernard Shaw)



  • di Marius44 data: 04/01/2016 17:26:10

    @scossa
    Grazie ancora una volta per la lezione.
    Sconoscevo (come tante altre cose) Type:=8

    Ciao,
    Mario



  • di mabolsie data: 04/01/2016 18:14:07

    Ciao raga, mi sembre di aver capito che ilfonta vuole sostituire la input con un message box ma penso che quello che voglia fare con il message box sia impossibile.
    Io farei un form con una textbox ed un commandButton dove nella txt ci sia di default " Digita la cella da copiare" poi con il cmd esegue l'operazione .
    mi sembra che si avvicini a quello che vuole fare Ilfonta.

    Ciao Max


  • Interagire con la Macro
    di ilFonta data: 04/01/2016 19:55:38

    Ragazzi Scossa ha perfettamente ragione
    non mi ero accorto che basta cliccare sulla cella.


    GRazie mille a tutti