ho ancora bisogno del vostro aiuto per risolvere uno stupido problema;
nel foglio1 ho inserito questo codice:
- Codice: Seleziona tutto
Option Base 1
Dim TERNI As Long
Sub Aggiorna_Terni()
'rngIni calcola le righe prima dell'inserimento di ulteriori dati
rngIni = Worksheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row
'macro che accoda-aggiunge estrazioni, che importa le estrazioni
Call IMPORTA_ARCHIVIO
Dim TABELLA(), ARCHIVIO As Long
'TERNI INDICA LA COLONNA M DOVE INIZIA L'ELENCO DEI TERNI
TERNI = Range("M3").End(xlDown).Row 'numero di righe dei terni, 1140
'la variabile "Archivio" riconta le righe
'ARCHIVIO INDICA LA COLONNA B DOVE INIZIANO LE COMBINAZIONI DELL'ARCHIVIO
ARCHIVIO = Range("b3").End(xlDown).Row 'numero di righe delle combinazioni
'INDICA IL RANGE DEI TERNI, DELLE QUATERNE, DELLE CINQUINE
'QUINDI INDICA LO SVILUPPO CHE SI VUOLE ESAMINARE
Base = Range("m3", Range("m3").End(xlToRight)).Columns.Count 'numero di colonne dei terni
For a = 3 To TERNI 'primo for da 3 a 1140
col = 13
ReDim TABELLA(Base)
cont = 0
For X = 1 To Base 'secondo for da 1 a 3
TABELLA(X) = Cells(a, col)
col = col + 1
Next 'X, chiude il secondo for
'la scansione avviene non più dalla riga 3 ma da rngIni + 1
For i = rngIni + 1 To ARCHIVIO
'questa lina di codice determina la larghezza della tabella combinazioni;
Set zona = Range(Cells(i, 1), Cells(i, 10))
'basta cambiare il parametro 10 in base alla larghezza della tabella;
'se si vuole una tabella dinamica basta inserire una variabile
'tipo la variabile "base" per determinare se si vogliono esaminare i terni, quaterne ecc.
M = 0
For n = 1 To Base
For Each c In zona
If c.Value = Val(TABELLA(n)) Then
M = M + 1
Exit For 'Each c
End If
Next c
'A questo punto ogni volta che si verifica la condizione di terno
'non vado a contare gli eventi per poi inserirli nella colonna
'frequenze ma aggiungo alla cella il valore corrente + 1
'con il codice:
If M = Base Then
'Cells(a, 17) = cont 'INDICA LA COLONNA IN CUI VERRANNO INSERITE LE FREQUENZE
'IN QUESTO CASO LA COLONNA 17 CHE E' LA COLONNA Q;
'PER VARIARE LA COLONNA BASTA SOSTITUIRE IN Cells(a, 17) AL NUMERO 17 UN QUALUNQUE ALTRO NUMERO.
Cells(a, 17) = Cells(a, 17) + 1
'cont = cont + 1
Exit For
End If
Next n
Set zona = Nothing
Next i
TABELLA = TABELLA()
Next a
Call CANCELLA
Call ORDINA
Range("A3").Select
End Sub
vorrei inserire nel listato precedente queste linee di codice:
- Codice: Seleziona tutto
Dim Counter As Integer
Counter = Counter + 1
Dim Percent As Single
(*) Percent = Counter / (§ * 10]) 'ho inserito il simbolo § che deve essere modificato
Progress_Meter.Show
With Progress_Meter
.labPg4v.Caption = Format(Percent, "0%")
.labPg4.Width = Percent * (.labPg4v.Width + 2) ' imposta la lunghezza della Label,
End With
DoEvents
che fanno apparire una shape-form, chiamata Progress_Meter, con una progress bar-label.
tutti i tentativi che ho fatto mi visualizzano il form ma non c'è corrispondenza tra il tempo di visualizzazione del form ed i calcoli del primo listato, e poi nella label che mostra la percentuale del calcolo si visualizzano numeri astronomici.
credo che devo modificare anche la linea di codice evidenziata sostituendo qualche variabile, ma anche qui ho difficoltà.
qualcuno di voi può indicarmi come procedere?
grazie saluti
miko