Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

macro seleziona range molto lenta

Ultimo Aggiornamento: 01/08/2022 20:00
Post: 471
Registrato il: 28/05/2011
Città: MILANO
Età: 43
Utente Senior
excel 2000/2007
OFFLINE
01/08/2022 16:31

Ciao a tutti.
Nel workbook allegato ci sono 2 macro

una macro per stampare le celle
Sub stampa_tutte_righe_attive_stampa_input()

una macro per selezionare l'intervallo
Sub DoppiaMacro_1()


Se prima faccio click sul pulsante 1, la macro Sub Double Macro_1 () è veloce
se prima faccio click sul pulsante 2 e poi sul pulsante 1 la macro Sub DoppioMacro_1() è lenta

Perchè?

un aiuto?
grazie
---------------
excel 2007
Post: 1.247
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Veteran
Excel 2016-32bit Win11
OFFLINE
01/08/2022 17:03

Mah, a parte il fatto che la macro: Double Macro_1 non l'ho trovata, ho cliccato i pulsanti in tutte le combinazioni di sequenza ma la velocità mi è sembrata sempre la stessa.
[Modificato da rollis13 01/08/2022 18:35]

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 471
Registrato il: 28/05/2011
Città: MILANO
Età: 43
Utente Senior
excel 2000/2007
OFFLINE
01/08/2022 17:09

La macro Sub DoppiaMacro_1 è questa abbinata con doppio click a
Sub seleziona_per_mail_1()
Sub togli_seleziona_per_mail_1
che sono nel workbook allegato


Dim Controllo As Boolean

Sub DoppiaMacro_1()
'doppia macro 1/2 click foglio mailstampa

Dim avviso As String

   If Controllo = True Then

      'Call seleziona_per_mail
      Call togli_seleziona_per_mail_1
              
      Controllo = False

   Else

      'Call togli_seleziona_per_mail
      Call seleziona_per_mail_1
              
      Controllo = True

   End If

 End Sub




Sub seleziona_per_mail_1() '<<< ok
'foglio mail


Application.ScreenUpdating = False


Dim Selezione As Range, R As Range, R2 As Range, rng As Range
Dim avviso As String
Dim I As Long

 ActiveSheet.Unprotect "987654"

 'If Range("X1") = "" Then
 
 
 If Range("A5") = "" Then
avviso = MsgBox("non c'è niente da selezionare!", vbExclamation + vbOKOnly + vbDefaultButton2, "AVVISO")
 If avviso = vbOK Then
Exit Sub
 End If
 End If
  
    Set rng = Range("A3:Q84")
    For I = rng.Rows.Count To 1 Step -1
        If WorksheetFunction.CountA(rng.Rows(I)) = 0 Then
            rng.Rows(I).EntireRow.Hidden = True
        End If
    Next I
    
      
    With Sheets("foglio1").Range("A3:Q84") '<== sostituisci il nome del foglio, oppure usa ActiveSheet
        For Each R In .Rows
            For Each R2 In R.Cells
                If R2 <> "" Then
                    If Selezione Is Nothing Then
                        Set Selezione = R
                    Else
                        Set Selezione = Uni0n(R, Selezione)
                    End If
                    Exit For
                End If
            Next R2
        Next R
    End With
    If Not Selezione Is Nothing Then Selezione.Select
    Set Selezione = Nothing
    
    'Range("X1") = 1
       
'ActiveSheet.Protect "987654"
ActiveSheet.Protect Password:="987654", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=False, AllowInsertingHyperlinks:=False, AllowFiltering:=True
        
    Selection.Copy
         

Application.ScreenUpdating = False

 
End Sub


           
           

           

Sub togli_seleziona_per_mail_1() '<<< ok
'foglio mail

Dim Selezione As Range, R As Range, R2 As Range, rng As Range

Dim I As Long

ActiveSheet.Unprotect "987654"
Application.ScreenUpdating = False

      Set rng = Range("A3:Q84")
    For I = rng.Rows.Count To 1 Step -1
        If WorksheetFunction.CountA(rng.Rows(I)) = 0 Then
            rng.Rows(I).EntireRow.Hidden = False
        End If
    Next I
     
  'Range("X1") = ""
  
ActiveSheet.Protect "987654"
 Application.CutCopyMode = False

'End If

Application.ScreenUpdating = True

Range("A5").Select

End Sub



mah, forse lento a caussa di excel 2007?
[Modificato da john_cash 01/08/2022 17:11]
---------------
excel 2007
Post: 1.523
Registrato il: 27/06/2011
Utente Veteran
excel 2007
OFFLINE
01/08/2022 18:04

Re:
rollis13, 01/08/2022 17:03:

Mah, a parte il fatto che la macro: Double Macro_1 non l'ho travata, ho cliccato i pulsanti in tutte le combinazioni di sequenza ma la velocità mi è sembrata sempre la stessa.



sono d'accordissimo!


premessa:

1
Set nome_variabile = Nothing
lo devi applicare a TUTTE le variabili oggetto e non solo a quelle di cui ti ricordi

2
crea un file nuovo con nome diverso e con estensione ".xlsm"
dal file vecchio, copia nel file nuovo il foglio su cui devi lavorare
aggiungi la prima macro e verificane la velocità (usa il cronometro del cellulare 😁😁😁)
aggiungi la seconda macro e verificane la velocità (usa lo stesso strumento citato sopra 😁😁😁)

Buon lavoro
ciao
Frank







Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
Post: 1.524
Registrato il: 27/06/2011
Utente Veteran
excel 2007
OFFLINE
01/08/2022 18:35

ciao, ma ci sei o stai facendo altro??!?!?!?

fai domande e non rispondi...????

Va beh,
intanto che tu ti possa degnare di dare un riscontro, ho già notato che non è una tua prerogativa farlo in tempi rapidi,

io ho un problema più importante e vado a prepararmi la cena!

Buona serata

Frank








Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
Post: 472
Registrato il: 28/05/2011
Città: MILANO
Età: 43
Utente Senior
excel 2000/2007
OFFLINE
01/08/2022 19:25

Scusatemi, non sono sempre attaccato al forum.
Comunque ho risolto in questo modo aggiungendo nelle macro
Sub seleziona_per_mail_1() '<<< ok
Sub togli_seleziona_per_mail_1() '<<< ok

all'inizio

   Application.ScreenUpdating = False
 
  'Application.DisplayStatusBar = False
   Application.Calculation = xlCalculationManual
   'Application.EnableEvents = False
   ActiveSheet.DisplayPageBreaks = False


e alla fine

  'Application.DisplayStatusBar = True
Application.Calculation = xlCalculationAutomatic
'Application.EnableEvents = True
ActiveSheet.DisplayPageBreaks = True


 Selection.Copy
 

Application.ScreenUpdating = True



allego workbook aggiornato.
Clicca pulsante 1 per stampare le righe
Clicca pulsante 2 per selezionare / clicca pulsante 2 per togliere la selezione
Ora è veloce.
Con le 2 aggiunte nelle macro va bene o possono dare problemi?
Grazie

[Modificato da john_cash 01/08/2022 19:27]
---------------
excel 2007
Post: 1.525
Registrato il: 27/06/2011
Utente Veteran
excel 2007
OFFLINE
01/08/2022 20:00

Re:
john_cash, 01/08/2022 19:25:


Con le 2 aggiunte nelle macro va bene o possono dare problemi?
Grazie



il file lo è tuo e tu lo utilizzi.
Se non dà problemi a te, non ne darà di certo a noi....











Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
macro copia e incolla valori (8 messaggi, agg.: 08/03/2019 16:36)
Crea Macro (11 messaggi, agg.: 31/08/2020 21:54)
macro esportazione pdf nome file (9 messaggi, agg.: 25/08/2021 13:04)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 09:09. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com