Condividi:        

Macro Excel

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: Macro Excel

Postdi luigi1948 » 28/06/17 18:14

Ho fatto tutto quanto,
l'errore è: errore di run-time 9
indice non incluso nell'intervallo
Ciao
luigi1948
Utente Junior
 
Post: 14
Iscritto il: 25/06/17 11:51

Sponsor
 

Re: Macro Excel

Postdi alfrimpa » 28/06/17 18:23

Quando il VBA dà questo errore vuol dire che non trova qualcosa che invece, secondo il codice ci dovrebbe essere (es. un folgio che non esiste)

Allega il file che ti dà l'errore.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Macro Excel

Postdi luigi1948 » 28/06/17 18:30

Ho riprovato, chiedo scusa, tutto ok.
Grazie infinite, Luigi
luigi1948
Utente Junior
 
Post: 14
Iscritto il: 25/06/17 11:51

Re: Macro Excel

Postdi Anthony47 » 29/06/17 00:02

Luigi ha scritto:Credo che, se non si riesce a capire il problema, convenga creare una serie di bottoni da riportare nella parte superiore dei fogli e bloccarle con "Blocca riquadri". In questo modo rimangono sempre visibili
Se non pubblichi il file delle personalizzazioni (.exportedUI) non riusciremo mai a capire quello che hai fatto. Comunque mi pare che Alfredo ti abbia suggerito la soluzione che funziona per i tuoi bisogni.

Trovo pero' il file abbastanza mal messo; ad esempio al momento ogni "foglio mensile" contiene 65 "Nomi di intervalli" che in gran parte hanno il riferimento in errore #RIF, e l'intero file ne ha un migliaio nella stessa situazione di errore.

Per creare un riepilogo annuale, nella situazione in cui ti trovi, potresti procedere in questo modo:
-fai in modo che ogni foglio mensile si chiami Gen, Feb, Mar, ... Dic (3 caratteri come sono abbreviati nello standard "Data" di Excel).
-fai in modo che la tabella "Giornale Contabile" di ogni mese si chiami Gennaio01, Febbraio02, Marzo03,... Dicembre12 (nel file pubblicato alcune tabelle si chiamano "NomeMese", ma altre hanno delle desinenze, es Giugno1; quanto proposto dovrebbe essere compatibile con la situazione che hai).
-creati un foglio che chiamerai YTD_Giornale, in cui metterai le stesse intestazioni presenti nelle tabelle mensili; come per gli altri fogli diciamo che le intestazioni occuperanno l'area B1:K4, quindi l'area dati comincera' da B5.
Ora inserisci in un Modulo standard del vba, ad es. Modulo2, questa macro:
Codice: Seleziona tutto
Sub YTD()
Dim MDate As Date, I As Long, mErr As String, poPul As Long, cMTab As String, dSh As Worksheet
Dim myNext As Long

Set dSh = Sheets("YTD_Giornale")
On Error Resume Next
    dSh.ListObjects("YTDTable").Unlist
    dSh.Range("B5").Resize(10000, 10).ClearContents
On Error GoTo 0
'
'Scan fogli Mese:
Application.ScreenUpdating = False
For I = 1 To 12
    MDate = DateSerial(2017, I, 1)
    On Error Resume Next
        Sheets(Format(MDate, "mmm")).Select
    On Error GoTo 0
    If UCase(ActiveSheet.Name) = UCase(Format(MDate, "mmm")) Then
        cMTab = ActiveSheet.ListObjects(Format(MDate, "mmmm") & Format(I, "00")).Range.Address
        If Len(cMTab) > 3 Then
            popul1 = Application.WorksheetFunction.CountA(Application.Intersect(Range(cMTab), Range("C:C")))
            popul2 = Application.WorksheetFunction.CountA(Application.Intersect(Range(cMTab), Range("D:D")))
            poPul = popul1 + popul2
            If poPul > 0 Then
                myNext = dSh.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Row
                Range(cMTab).Resize(poPul, Range(cMTab).Columns.Count).Copy
                dSh.Cells(myNext, "B").PasteSpecial Paste:=xlPasteValues
                Application.CutCopyMode = False
            End If
        Else
            mErr = mErr & "Tabella " & Format(MDate, "mmmm") & "; "
        End If
    Else
        mErr = mErr & Format(MDate, "mmm") & "; "
    End If
Next I
dSh.Select
Application.ScreenUpdating = True
dSh.ListObjects.Add(xlSrcRange, Range(Range("B5"), Range("B5").End(xlDown).Resize(, 10)), , xlNo).Name = "YTDTable"
ActiveSheet.ListObjects("YTDTable").ShowHeaders = False
Range("B5").EntireRow.Delete xlUp
If Len(mErr) > 3 Then
    MsgBox ("Completato con errori su: " & vbCrLf & mErr)
Else
    MsgBox ("Completato...")
End If
End Sub

All'occorrenza avvia la Sub YTD, che cerchera' in tutti i fogli mensili le righe compilate e ne incollera' il contenuto nel foglio YTD_Giornale; in questa fase il contenuto precedente di YTD_Giornale VIENE CANCELLATO SENZA PREAVVISO prima di essere ricreato sulla base dei fogli Mensili.
Associala eventualmente a un pulsante da inserire in testa al foglio YTD_Giornale, come hai fatto con le macro di "AggiornamentoMESE".
Formatta le colonne come servono; nei passaggi successivi la formattazione dovrebbe rimanere.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Excel

Postdi luigi1948 » 29/06/17 08:01

Intanto grazie di tutto.
Vorrei sapere pf come devo fare per pubblicare il file " .exportedUI"
Grazie, Luigi
luigi1948
Utente Junior
 
Post: 14
Iscritto il: 25/06/17 11:51

Re: Macro Excel

Postdi luigi1948 » 29/06/17 08:25

Ho riscontrato un problema: la macro che cambia i vari fogli funziona benissimo, ho notato però che quando si imputa un foglio già visualizzato in precedenza, da questo errore: Errore di run-time 9 - indice non compreso nell'intervallo. Quando faccio il debug, la stringa "Sheets(ComboBox1.Value).Activate " ComboBox1.Value=""
luigi1948
Utente Junior
 
Post: 14
Iscritto il: 25/06/17 11:51

Re: Macro Excel

Postdi Anthony47 » 29/06/17 11:09

Immagino che il messaggio precedente sia per Alfredo.

Le informazioni per preparare e pubblicare il file relativo alla tua personalizzazione sono scritte in questo messaggio:
viewtopic.php?f=26&t=108631#p637581

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Excel

Postdi alfrimpa » 29/06/17 11:17

luigi1948 ha scritto:Ho riscontrato un problema: la macro che cambia i vari fogli funziona benissimo, ho notato però che quando si imputa un foglio già visualizzato in precedenza, da questo errore: Errore di run-time 9 - indice non compreso nell'intervallo. Quando faccio il debug, la stringa "Sheets(ComboBox1.Value).Activate " ComboBox1.Value=""


Allega il tuo file e specifica passo passo le operazioni che fai che ti portano all'errore.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Macro Excel

Postdi alfrimpa » 29/06/17 11:33

Comunque prova con questa modifica

Codice: Seleziona tutto
Private Sub ComboBox1_Change()
On Error Resume Next
Sheets(ComboBox1.Value).Activate
End Sub
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Macro Excel

Postdi luigi1948 » 29/06/17 12:59

Stupendo, funziona tutto perfettamente
Grazieeeee, Ciao
luigi1948
Utente Junior
 
Post: 14
Iscritto il: 25/06/17 11:51

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Macro Excel":


Chi c’è in linea

Visitano il forum: Nessuno e 78 ospiti