Copia valori in un foglio Excel
Hai un problema con Excel?
Copia valori in un foglio Excel
di Matteo1992 (utente non iscritto) data: 01/11/2017 10:26:52
Buongiorno, ho riscontrato dei problemi con questo codice, sono alle primissime armi con VBA ma ho qualche rudimento un po arrugginito di C++. Mi serve per capire se una data è all'interno di un intervallo e nel caso lo fosse copiare queste date in ordine successivo su una colonna. Le date sono in ordine cronologico e anche gli intervalli.
Il problema che ho su questo codice è che mi evidenzia ConsumoOrigine e mi da errore: Qualificatore non valido
Qualcuno di voi potrebbe aiutarmi?grazie mille in anticipo.
Dim foglio6 As Worksheet
Dim DataCercare As Date
Dim ConsumoDestinazione As Single
Dim DataIn As Date
Dim DataFin As Date
Dim ConsumoOrigine As Single
Dim f As Integer
Sub Consumo()
DataCercare = Sheets("Foglio6").Cells("P6").Value
ConsumoDestinazione = Sheets("Foglio6").Cells("N6").Value
DataIn = Sheets("Foglio6").Cells("H1694").Value
DataFin = Sheets("Foglio6").Cells("I1694").Value
ConsumoOrigine = Sheets("Foglio6").Cells("T1694").Value
f = 0
Do While f = 1496
Do While DataCercare >= DataIn & DataCaercare < DataFin & f < 1497
ConsumoOrigine.Select
Selection.Copy
ConsumoDestinazione.Select
Selection.Paste
DataCercare.Address = DataCercare.Address + 1
ConsumoDestinazione.Address = ConsumoDestinazione.Address + 1
f = f + 1
Loop
DataIn.Address = DataIn.Address - 1
DataFin.Address = DataFin.Address - 1
ConsumoOrigine.Address = ConsumoOrigine.Address - 1
Loop
End Sub
|
di patel data: 01/11/2017 11:03:21
allega un file di esempio, le cause potrebbero essere varie e la tua descrizione dell'errore è un po' carente
di Matteo1992 (utente non iscritto) data: 01/11/2017 14:05:30
Salve,
ho allegato due foto, la prima nella tabella evidenziata in blu è la riga dove devo scrivere i valori evidenziati in arancione nella seconda tabella, li devo cercare in base alle date. La data del giorno è quella nella tabella mentre l'intervallo delle date in cui cecare la data corrispondente alla riga corrispondente ad una data è quello della seconda tabella (data inizio e data di fine). Se serve altro ditemi pure.
Ti ringrazio in anticipo!
Un saluto
di Zer0Kelvin data: 01/11/2017 14:07:56
Ciao.
Probabile che tu cerchi di selezionare un range che non sia nel foglio attivo; questo genera un errore.
Inoltre tu utilizzi il tipo di codice analogo a quello generato dal ragistratore macro.
E' assurdo impostare delle variabili range per poi usare Select e Selection.
Do While DataCercare >= DataIn & DataCaercare < DataFin & f < 1497
ConsumoOrigine.Select
Selection.Copy
ConsumoDestinazione.Select
Selection.Paste
'Andrebbe scritto così
Do While DataCercare >= DataIn & DataCaercare < DataFin & f < 1497
ConsumoOrigine.Copy ConsumoDestinazione 'Vedi help di Range.Copy |
di Zer0Kelvin data: 01/11/2017 14:11:10
PS: quando si richiede un file di esempio in genere non si perla di foto, ma un file Excel, magari con dati fittizi, congruente col file originale, che permetta di effettuare test di una certa attendibilità senza costringerci a ricreare un file ad hoc.
di Zer0Kelvin data: 01/11/2017 14:21:50
Scusa, ma avevo dato un'occhiata superficiale al codice, in realtà ci sono anche altri errori.
Ad un riesame veloce:
ConsumoOrigine e ConsumoDestinazione sono delle variabili Single, poi cerchi di usarle come se fossero dei range, forse è questo che ti dà il primo errore.
La prima condizione del ciclo Do While è sbagliata, il ciclo non verrà mai eseguito; anche la condizione del secondo ciclo è sbagliata.
Allega un file Excel su cui si possa lavorare.
**EDIT**
Riguardo al secondo ciclo:
Mentre in C l'operatore & è un operatore logico in VB è l'operatore di concatenazione delle strighe;
in C
CONDIZIONE1 & CONDIZIONE2
in VB si scrive
CONDIZIONE1 And CONDIZIONE2
di Matteo1992 (utente non iscritto) data: 02/11/2017 08:41:04
Grazie mille per le indicazioni e per la precisazione della tipologia di file. Non ho capito solo quando mi hai detto del range, che intendi? Scusa per la domanda magari banale ma sono proprio agli albori e questa è la mia prima macro.
Ho allegato u Excel con le due tabelle praticamente uguali al foglio originale, l'unica differenza è che si trovano sul foglio 1 piuttosto che sul foglio 6.
Grazie mille per ogni indicazione,
Un saluto
di oregon (utente non iscritto) data: 02/11/2017 09:38:29
Solo per la precisione
@Zer0Kelvin
In C l'operatore logico And è && (Logical And)
L'operatore & viene usato come operatore And a bit (Bitwise And), cosa diversa dal precedente
Inoltre & è anche operatore per ottenere un indirizzo (Address-of)
Quindi in C si scriverebbe
CONDIZIONE1 && CONDIZIONE2
di Matteo1992 (utente non iscritto) data: 02/11/2017 11:52:10
Grazie per le informazioni, pianopiano sto andando avanti leggendo molto per completare questa macro. Grazie ancora a tutti.
Oggi ho provato a modificarla cosi, seguendo i vostri consigli ma aimè mi da ancora un errore.
L'errore è: assegnazione alla costante non ammessa e mi evidenzia dataCercare.address, l'ho impostata come da voi suggerito in Range, e penso l'errore sia dovuto a quello.
Se provo a cambiarlo da range a date mi evidenzia sempre datacercare.address ma mi da errore: qualificatore non valido.
Potreste darmi anche solo un consiglio? grazie mille
Un saluto
Dim foglio6 As Worksheet
Dim DataCercare As Range
Dim ConsumoDestinazione As Range
Dim DataIn As Range
Dim DataFin As Range
Dim ConsumoOrigine As Range
Dim f As Integer
Sub Macro1()
DataCercare = Sheets("Foglio6").Cells("P6").Value
ConsumoDestinazione = Sheets("Foglio6").Cells("N6").Value
DataIn = Sheets("Foglio6").Cells("H1694").Value
DataFin = Sheets("Foglio6").Cells("I1694").Value
ConsumoOrigine = Sheets("Foglio6").Cells("T1694").Value
f = 0
Do While f = 1496
Do While DataCercare >= DataIn And DataCaercare < DataFin And f < 1497
ConsumoOrigine.Copy ConsumoDestinazione
DataCercare.Address = DataCercare.Address + 1
ConsumoDestinazione.Address = ConsumoDestinazione.Address + 1
f = f + 1
Loop
DataIn.Address = DataIn.Address - 1
DataFin.Address = DataFin.Address - 1
ConsumoOrigine.Address = ConsumoOrigine.Address - 1
Loop
End Sub |
di Zer0Kelvin data: 03/11/2017 15:44:53
Ciao.
Lasciamo da parte la tua macro per il momento, ci sarebbero parecchie cose da spiegare ma è meglio cercare prima di risolvere il quesito e dare dopo le spiegazioni del caso.
Partiamo dal tuo file di esempio:
-Hai degli intervalli di date nelle colonne C e D (Data inizio/fine) e una serie di date in colonna Z (Giorni)
-Mi sembra di aver capito che vorresti suddividere le date in colonna Z in base alla loro appartenenza agli intervalli nelle colonne C e D, giusto?
-Una volta identificati gli intervalli di appartenenza, come vorresti sistemare le date?
-Presumo che tu debba elaborare dei dati, in che modo?
Vuoi Approfondire?