Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Vba Excel un aiuto

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

Vba Excel un aiuto

Postdi Francesco53 » 25/10/19 10:13

Buongiorno a tutto il forum, ho la seguente difficoltà:
carico un file di testo in excel, poi tramite vba memorizzo i dati in una matrice, il mio problema è che
alcune celle contengo un orario, Es: 10:30, 15:20, leggendo la cella tramite vba mi memorizza il valore
della divisione e quindi un numero decimale.
Io vorrei salvare la cella come stringa e pertanto al posto di 0,334 vorrei memorizzare nella matrice 10:30
Mi potete per favore suggerire come fare?
Ringrazio chi può darmi la giusta indicazione.
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 723
Iscritto il: 20/02/10 18:45

Sponsor
 

Re: Vba Excel un aiuto

Postdi Anthony47 » 25/10/19 11:43

Dipende... Come carichi le celle nella matrice, e che uso ne fai dopo?

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

Re: Vba Excel un aiuto

Postdi Francesco53 » 25/10/19 12:06

Buongiorno Anthony,
carico i dati nella matrice con un semplice ciclo for next, e i dati li utilizzo come testo.
Codice: Seleziona tutto
Sub Carica()
Dim Matrice(8, 7)
Dim conta
Ult = Sheets("Foglio1").Range("A1").End(xlDown).Row
For rig = 1 To Ult Step 7
conta = conta + 1
    Matrice(conta, 1) = Cells(rig, 1)
    Matrice(conta, 2) = Cells(rig + 1, 1)
    Matrice(conta, 3) = Cells(rig + 2, 1)
    Matrice(conta, 4) = Cells(rig + 3, 1)
    Matrice(conta, 5) = Cells(rig + 4, 1)
    Matrice(conta, 6) = Cells(rig + 5, 1)
    Matrice(conta, 7) = Cells(rig + 6, 1)
Next rig
End Sub

Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 723
Iscritto il: 20/02/10 18:45

Re: Vba Excel un aiuto

Postdi Marius44 » 25/10/19 12:32

Ciao
potresti premettere la conversione quando carichi la cella, cioè nel ciclo invece di Matrice(conta, 1) = Cells(rig, 1) metti
Codice: Seleziona tutto
Matrice(conta, 1) = CStr(Cells(rig, 1))

ovviamente in tutte le righe.
Ciao,
Mario
Marius44
Utente Senior
 
Post: 463
Iscritto il: 07/09/15 22:00

Re: Vba Excel un aiuto

Postdi Francesco53 » 25/10/19 14:52

Ciao Mario, ti ringrazio per la risposta, l' ho provata ma continua a darmi un numero decimale.
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 723
Iscritto il: 20/02/10 18:45

Re: Vba Excel un aiuto

Postdi Anthony47 » 25/10/19 15:27

Quel numero decimale non e' la divisione tra 10 e 30 (nell'esempio di 10:30) ma e' il valore che Excel assegna all'orario 10:30 (un numero decimale che va da 0=0:00:00 a 1=24:00:00).
Per risolvere in modo logico devi esaminare se il contenuto della cella e' un "tipo orario" e se Si convertirlo in testo.
Ho modificato il tuo ciclo in questo modo:
Codice: Seleziona tutto
For rig = 1 To Ult Step 7
conta = conta + 1
    For j = 0 To 6
        If Left(Evaluate("=CELL(""formato""," & Cells(rig + j, 1).Address & ")"), 1) = "D" Then
           Matrice(conta, j + 1) = Format(Cells(rig + j, 1), "hh:mm")
        Else
            Matrice(conta, j + 1) = Cells(rig + j, 1)
        End If
    Next j
Next rig

Vedi a te come si comporta...

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

Re: Vba Excel un aiuto

Postdi Francesco53 » 25/10/19 16:09

Grazie Anthony, tutto ok.
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 723
Iscritto il: 20/02/10 18:45

Re: Vba Excel un aiuto

Postdi Anthony47 » 25/10/19 16:49

Pensandoci bene, se le celle da manipolare sono poche (centinaia) puoi semplificare e ottenere di piu':
Codice: Seleziona tutto
For rig = 1 To Ult Step 7
conta = conta + 1
    For j = 0 To 6
        Matrice(conta, j + 1) = Cells(rig + j, 1).Text
    Next j
Next rig

In questo modo in matrice metti il testo visualizzato (es Date, o numero di decimali)
Attenzione che il metodo "Text" (rispetto al metodo "Value", quello di default) richiede molto piu' tempo, quindi se pensi di dover elaborare centinaia e centinaia di celle allora evita questo metodo.

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

Re: Vba Excel un aiuto

Postdi Francesco53 » 25/10/19 22:30

Grazie Anthony
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 723
Iscritto il: 20/02/10 18:45


Torna a Applicazioni Office Windows


Topic correlati a "Vba Excel un aiuto":


Chi c’è in linea

Visitano il forum: Nessuno e 27 ospiti