The Alexsandra Spaces

Internet – Sicurezza – Excel & VBA

Excel :: Lazzaro

Pubblicato da Alexsandra su Febbraio 1, 2008

Questa sezione è riservata a Lazzaro prego gli altri utenti di postare quì consigli, suggerimenti esempi ma non altre problematiche…. Grazie ••• Ritorna alla pagina precedente •••

Questo è il quesito posto:

Ho creato un modello di fatturazione in excel alla ho aggiunto sullo stesso foglio dei pulsanti con dei codici vba per automizzare un pò le procedure. I codici funzionano.
In seguito ho avuto l’esigenza di spostare i suddetti pulsanti in un altro foglio della stessa cartella e qui le cose non hanno iniziato a funzionare. Ti faccio un esempio più specifico questo è il codice del pulsante salva:

Private Sub CommandButton1_Click()
Range(”G36″).Select
Selection.Copy
Range(”Z1″).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range(”a6″).Select
Dim Riga
With Sheets(”riepilogo”)
Riga = 1
While .Cells(Riga, 1) “”
Riga = Riga + 1
Wend
End With
Application.CutCopyMode = False
a = Cells(10, 3)
b = Cells(1, 12)
b = a
Cells(10, 3) = a
Cells(1, 12) = b
Sheets(1).Copy **************** ->
Dim X As String
X = “Fattura N°” & Range(”C10″).Value
ActiveWorkbook.SaveAs Filename:=”C:\Documents and Settings\utente\Desktop\Fatture2008\Fatture2008\” & X & “.xls”, FileFormat:= _
xlNormal, Password:=””, WriteResPassword:=””, ReadOnlyRecommended:=False _
, CreateBackup:=False
ActiveWindow.Close
End sub
Il mio problema sta nel fatto che non riesco a far funzionare il codice del pulsante che è posizionato nel “Foglio1″ ma che deve eseguire delle operazioni nel “Foglio2″. Ho gia provato con i comandi sheets.select e Worksheets(”fogliox”).Activate
ma mi viene fuori errori del tipo ‘Errore nel metodo activate per la classe range Ti sarei grato se potresti darmi un aiuto o delle coordinate dove potermi informare a riguardo

10 Risposte a “Excel :: Lazzaro”

  1. Alexsandra detto

    nel punto che ti ho contrassegnato con gli asterischi prova a modificarlo così

    Application.ScreenUpdating = False
    ActiveSheet.Copy Before:=Sheets(1)

    e alla fine prima di End Sub inserisci

    Application.ScreenUpdating = True

    Vedo che lo esporti in un percorso, io potrei proporti un altro metodo, sulla falsariga di quello che hai fatto tu, comunque vedi con quella modifica se ti rimanda l’errore.
    Se non risolvi ti posto il codice

    ciao

  2. Alexsandra detto

    quando crei il pulsante sul foglio, devi usare il menu moduli, e quando crei il pulsante ti appare la maschera per associare le macro presenti nel tuo file.
    Devi associare il pulsante alla macro, io ho provato il tuo codice e funziona senza errori.non capisco quando dici
    **se creo un pulsante e ci scrivo lo stesso codice mi da un “errore nel metodo della classe range” ** dove lo scrivi il codice?
    per farla girare devi fare come ti ho spiegato sopra, associ il pulsante alla macro

  3. Alexsandra detto

    prova questo codice

    Sub alex()
    Range(”G36″).Select
    Selection.Copy
    Range(”Z1″).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Range(”a6″).Select
    Dim Riga
    With Sheets(”riepilogo”)
    Riga = 1
    While .Cells(Riga, 1) “”
    Riga = Riga + 1
    Wend
    End With
    Application.CutCopyMode = False
    a = Cells(10, 3)
    b = Cells(1, 12)
    b = a
    Cells(10, 3) = a
    Cells(1, 12) = b
    Sheets(1).Copy
    Dim X As String
    X = “Fattura N°” & Range(”C10″).Value
    ActiveWorkbook.SaveAs Filename:=”C:\Documents and Settings\utente\Desktop\Fatture2008\Fatture2008\” & X & “.xls”, FileFormat:= _
    xlNormal, Password:=””, WriteResPassword:=””, ReadOnlyRecommended:=False _
    , CreateBackup:=False
    ActiveWindow.Close
    End Sub

    non devi usare una Private Sub, se vuoi lanciare la macro devi associarla al pulsante e per fare questa operazione la devi vedere, il discorso cambia se fai una userform, in cui inserisci un controllo commandbutton e allora si puoi usare il private, ma sei all’interno di una userform.
    al tempo stesso devi lanciare la userform con il comando show.

    in grassetto erano gli errori, ora associando la macro modificata funziona

    Attenzione : a questa riga While .Cells(Riga, 1) “” non prende i caratteri (diverso) da stringa vuota (””) per problemi di formattazione del blog

  4. lazzaro detto

    Grazie inanzitutto per la celere risposta
    Il problema non è nel codice ma nella posizione del stesso
    Cioè se registro una macro e questo codice lo scrivo nei moduli:
    (Questo è un altro esempio)
    Sub prova()
    Worksheets(”foglio2″).Activate
    a = Cells(10, 3)
    b = Cells(2, 16)
    a = b + 1
    b = a
    Cells(10, 3) = a
    Cells(2, 16) = b
    Dim data As Date
    data = Now
    Range(”C11″).Select
    ActiveCell.Value = data
    End Sub
    e in seguito lancio la macro manualmente va tutto bene.
    Mentre se creo un pulsante e ci scrivo lo stesso codice mi da un “errore nel metodo della classe range” evidenziando la riga “Range(”C11″).select

  5. Lazzaro detto

    Grazie alexsandra per le tue risposte e per la tua pazienza. Credo di aver trovato quello che cercavo nel tuo post n°69.
    Adesso ci lavoro un pò e vediamo che succede.
    Grazie di nuovo per la disponibilità se dovessi avere problemi di farò sapere.Sei veramente in gamba
    Lazzaro

  6. Alexsandra detto

    Grazie Lazzaro, quando hai bisogno :D son quì

    ciao

  7. Lazzaro detto

    Ciao Alexsandra ti vorrei chiedere come si puo inserire tramite una macro un testo in una determinata cella di un foglio di lavoro.
    Per essere più precisi tramite un command button Vorrei inserire il testo “Pippo” nella cella “A2″

  8. Alexsandra detto

    leggi quì http://alexsandra.wordpress.com/2007/04/07/programmazione-vba-lezione-1/

  9. Lazzaro detto

    Pardon mi sto un pò rinco……..
    Grazie.

  10. Alexsandra detto

    No problem, leggiti il link che ti ho segnalato, se ti trovi in difficoltà fai un fischio :D

Lascia una Risposta

XHTML: Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>