Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

correggere macro su doppio clik

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

Re: correggere macro su doppio clik

Postdi raimea » 06/09/14 21:34

ciao
trovato mancava un ultimo end if alla fine
inoltre in copio in filtra c'e una riga che penso si possa migliorare
ma non so come.
questo il cod attuale funzionante.
Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("C:C,G:G,e:e")) Is Nothing Then
   
        Dim UR As Long 'scegli la colonna
        ActiveSheet.Unprotect
       
        If Not Intersect(Target, Range("C:C")) Is Nothing Then
            If Target = "" Then
                MsgBox "La cella selezionata non contiene dati", vbCritical
            Else
'------copio in bolla---------------
                riga = Target.Row
                Range("B" & riga & ":" & "W" & riga).Copy
                Sheets("bolla").Select
                ActiveSheet.Unprotect
                UR = Sheets("bolla").Range("B" & Rows.Count).End(xlUp).Row + 1 'prima riga libera
                If UR < 6 Then UR = 7               'a partire dalla riga 7
                Sheets("bolla").Cells(UR, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                    SkipBlanks:=False, Transpose:=False
            End If
        Else
            If Not Intersect(Target, Range("e:e")) Is Nothing Then
            If Target = "" Then
                MsgBox "La cella selezionata non contiene dati", vbCritical
            Else
'------copio in filtra---------------
                riga = Target.Row
                Range("e" & riga & ":" & "e" & riga).Copy  ' <<< si puo migliorare!!
                Sheets("filtra").Select
                ActiveSheet.Unprotect
             
               If UR < 6 Then UR = 5               'a partire dalla riga 5
                Sheets("filtra").Cells(5, 30).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                    SkipBlanks:=False, Transpose:=False
            End If
           
        Else
    '---copio diario--------------------
            If Target = "" Then
                MsgBox "La cella selezionata non contiene dati", vbCritical
            Else
                riga = Target.Row
                Range("C" & riga & ":" & "L" & riga).Copy
                Sheets("diario").Select
                ActiveSheet.Unprotect
                UR = Sheets("diario").Range("C" & Rows.Count).End(xlUp).Row + 1 'prima riga libera
                If UR < 6 Then UR = 7               'a partire dalla riga 7
                Sheets("diario").Cells(UR, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                    SkipBlanks:=False, Transpose:=False
            End If
          End If
        End If     '<<< mancava questo
       
        Application.CutCopyMode = False
       
        Sheets("prono").Select
        Range("A1").Select
    Else
        MsgBox vbNewLine & vbNewLine & _
            "Puoi fare 'Doppio Clik'  solo :" & vbNewLine & vbNewLine & _
            "in  'Data' ===> Col 'C' che copia in  'Bolla'" & vbNewLine & vbNewLine & _
            "oppure" & vbNewLine & vbNewLine & _
            "in  'Squadra casa' ===>Col 'G' che copia in  'Diario'", vbInformation
    End If
    Cancel = True
   
End Sub
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: correggere macro su doppio clik

Postdi Anthony47 » 13/09/14 12:34

Ma questa discussione e' risolta, vero?

Comunque credo che dovresti imparare a usare la tecnica del Protect /UserInterfaceOnly, ad esempio vedi viewtopic.php?f=26&t=101681&hilit=UserInterfaceOnly

In questo modo le macro non devono preoccuparsi di sproteggere /proteggere i fogli e il tutto puo' essere condensato, ad esempio da
'------copio in bolla---------------
riga = Target.Row
Range("B" & riga & ":" & "W" & riga).Copy
Sheets("bolla").Select
ActiveSheet.Unprotect
UR = Sheets("bolla").Range("B" & Rows.Count).End(xlUp).Row + 1 'prima riga libera
If UR < 6 Then UR = 7 'a partire dalla riga 7
Sheets("bolla").Cells(UR, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End If
Else

a:
'------copio in bolla---------------
riga = Target.Row
' Sheets("bolla").Select '<<< Vedi Testo
UR = Sheets("bolla").Range("B" & Rows.Count).End(xlUp).Row + 1 'prima riga libera
If UR < 6 Then UR = 7 'a partire dalla riga 7
Sheets("bolla").Cells(UR, 2).Resize(1,22).value = Range("B" & riga & ":" & "W" & riga).value
End If
Else

Anche l' istruzione marcata <<< e' superflua e puo' essere cancellata, perche' in una macro di evento il codice fa sempre riferimento al foglio cui l' evento e' associato, salvo che le istruzioni non facciano esplicito riferimento a un altro Foglio; ma questo lo sai gia', visto che dopo una Sheets("bolla").Select hai scritto Sheets("bolla").Cells(UR, 2).etc.etc

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: correggere macro su doppio clik

Postdi raimea » 13/09/14 14:12

ciao
no , in realta la discussione non sarebbe "chiusa",
la mia ultima richiesta era come sistemare il pezzo :
Codice: Seleziona tutto
        '------copio in filtra---------------
            If Not Intersect(Target, Range("e:e")) Is Nothing Then
             If Target = "" Then
                MsgBox "La cella selezionata non contiene dati", vbCritical
            Else
                riga = Target.Row
                Range("e" & riga & ":" & "e" & riga).Copy  ' <<< si puo migliorare!!
             
                Sheets("filtra").Select
                ActiveSheet.Unprotect
                If UR < 6 Then UR = 5               'a partire dalla riga 5
                Sheets("filtra").Cells(5, 30).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                    SkipBlanks:=False, Transpose:=False
                   
             End If
           
        Else


ma non sono capace...
grazie x la segnalazione del topic lo leggero'.


grazie
ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: correggere macro su doppio clik

Postdi Anthony47 » 14/09/14 00:43

Ma quale e' il prolema dello spezzone di codice che hai indicato?
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: correggere macro su doppio clik

Postdi raimea » 14/09/14 04:21

ciao
da "profano" non so se questa parte di codice e' migliorabile ?
Codice: Seleziona tutto
              Range("e" & riga & ":" & "e" & riga).Copy  ' <<< si puo migliorare ?


a vista mi sembrerebbe un errore di programmazione scrivere da Col E a Col E..

ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: correggere macro su doppio clik

Postdi Anthony47 » 15/09/14 02:17

Caro Angelo, per me se una macro funziona allora e' quasi perfetta...
Cio' detto, puoi semplicemente scrivere
Codice: Seleziona tutto
Range("e" & riga).Copy


Ma ci sono molte altre cose che possono essere "vieppiu' perfezionate".
Esempio avere un unico calcolo di "riga" (in testa)
Idem un unico MsgBox "La cella selezionata non contiene dati", vbCritical (in testa)
Eliminare le sheets(x).Select
Trasformare i .Copy /PasteSpecial in Range(Destinazione).Value=Range(Partenza).Value
Puoi trasformare i vari If Not Intersect(Target, Range("C:C")) Is Nothing Then in If Target.Column = 3 Then
E a che serve il calcolo di UR nel blocco "-copio in filtra-"? E' intenzionale che i fogli rimangono sprotetti?

Questo senza considerare l' eventuale adozione di Protect /UserInterfaceOnly

Tutti spunti per serate in cui ti annoi...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: correggere macro su doppio clik

Postdi raimea » 15/09/14 05:27

ciao
era quella riga che mi "stonava"... :D
le altre non le sentivo....

ho sistemato tale riga.

ho letto il topic, e sto cominciando ad usare il comando
UserInterfaceOnly


grazie
ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "correggere macro su doppio clik":


Chi c’è in linea

Visitano il forum: alfrimpa e 9 ospiti