Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

VBA+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

VBA+EXCEL

Postdi s1ster » 13/02/12 13:36

Salve a tutti.
Avevo provato a postare questa mia domanda in un'altra discussione a cui poteva essere attinente ma, probabilmente, proprio per questo è passata inosservata. Ho un problema di questo tipo:
Ho un foglio di excel che contiene, riga dopo riga, collegamenti ai dati di un altro foglio dello stesso file.
Nella terza colonna di ogni riga c'è un parametro variabile che vorrei fosse utilizzato per compiere una routine.
Mi spiego meglio:
Vorrei che la macro "leggesse" ogni singola riga (il numero totale dei cicli è stabilito da un'apposita cella sita in un altro foglio dello stesso file) guardando se il valore contenuto nella 3^ colonna sia corrispondente ad un determinato valore. In caso lo fosse mi deve inserire una riga appena al disotto di quella contenente il valore suddetto facendo poi il copia/incolla della riga su quella vuota appena inserita cambiando il parametro della 3^ colonna in un diverso valore (anch'esso prestabilito).
Penso che un ciclo For Next dovrebbe essere quello che ci vuole ma sono troppo digiuno di VB per venirne fuori.
Grazie di tutto l'aiuto che potrete darmi.

Roberto
s1ster
Newbie
 
Post: 8
Iscritto il: 12/02/12 16:11

Sponsor
 

Re: VBA+EXCEL

Postdi Anthony47 » 13/02/12 16:11

Ciao s1ster, benvenuto nel forum.
Si, ti eri intrufolato in una discussione aperta e la tua domanda e' finita sotto le risposte a quel problema.

Trattandosi si elaborare una macro forse e' meglio che pubblichi un file di esempio lavorabile dei tuoi dati, evitando descrizioni generiche tipo "dato restabilito", "valore diverso" o "apposita cella".
Per come fare guarda qui: viewtopic.php?f=26&t=80395
Per inserire un link dovrai prima aver pubblicato almeno 3 messaggi, visto che non ci sei ancora sei autorizzato a scrivere un messaggio di circostanza per fare numero.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: VBA+EXCEL

Postdi s1ster » 13/02/12 20:34

Ok, provvedo immediatamente a uploadare il file (office 2007) e a postare il link relativo.
Grazie 1000 Anthony.
s1ster
Newbie
 
Post: 8
Iscritto il: 12/02/12 16:11

Re: VBA+EXCEL

Postdi s1ster » 13/02/12 21:13

allora il file sta qua https://rapidshare.com/files/1026165079 ... viario.xls
e qui sotto metto un paio di screen per capire meglio

Immagine

Immagine

Nella colonna indicata ci potrà essere o una "t" o una "a". Se la routine incontra una "t" passa ad esaminare la riga successiva. Se, al contrario, trova una "a" deve inserire una riga al di sotto di quella esaminata, ricopiare esattamente quanto c'è scritto nella riga esaminata incollandolo nella riga inserita e, qui, sostituire la "a" con una "p".

Spero sia sufficentemente chiaro.

Grazie ancora e a presto risentirci.
s1ster
Newbie
 
Post: 8
Iscritto il: 12/02/12 16:11

Re: VBA+EXCEL

Postdi Anthony47 » 14/02/12 00:52

Ancora qualche domanda prima che facciamo qualche disastro...
I dati da scorrere sono quelli nel foglio CALC_TAB, vero? (la seconda immagine)
Questo foglio contiene collegamenti al foglio INPUT (la prima immagine) piu' alcune colonne calcolate con formule.
Il numero di righe da scorrere su CALC_TAB e' il valore rportato in INPUT!G45, e potra' variare da una volta a due volte il numero delle righe popolate nel foglio INPUT (dipende da quante "a" ci sono in col D).

Detto cio', se ho detto bene, e' evidente che nel foglio CALC_TAB andremo a scorrere piu' linee di quelle che contengono dati (perche' i dati sono ricopiati da INPUT); ha senso cio'?
Quando poi dici "ricopiare esattamente quanto c'è scritto nella riga esaminata incollandolo nella riga inserita" intendi che vanno copiate le formule contenute nelle celle o i valori calcolati dalle formule e visualizzati nelle celle?

Ciao, ti aspettiamo.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: VBA+EXCEL

Postdi s1ster » 14/02/12 11:50

Grazie per la tua cortese e pronta risposta, Antony.
Allora andando per ordine:
il numero di righe da scorrere indicato dal contatore è equivalente al numero di righe che in CALC_TAB risulterà una volta fatto l'inserimento delle linee necessarie.
Per ricopiare esattamente la linea precedente intendo che sulla nuova riga dovranno esserci i medesimi dati contenuti nella riga precedente (comprese formele) con la sola variazione del dato contenuto dalla terza colonna che da "a" dovrà diventare "p".
Spero che sia chiaro, ora. Grazie ancora.
s1ster
Newbie
 
Post: 8
Iscritto il: 12/02/12 16:11

Re: VBA+EXCEL

Postdi Anthony47 » 14/02/12 22:52

Non hai risposto a tutti i miei dubbi; comunque prova questa macro:
Codice: Seleziona tutto
Sub s1ster()
nLoop = Sheets("INPUT").Range("G45").Value
Sheets("CALC_TAB").Select
J = 2
For I = 1 To nLoop
    If Cells(J, "C").Value = "a" Then
        Cells(J + 1, 1).EntireRow.Insert
        Cells(J + 1, 1).Resize(1, 9).FormulaR1C1 = "=R[-1]C"
        Cells(J + 1, 3).Value = "p"
        J = J + 1
    End If
    J = J + 1
Next I
End Sub
Da excel, Alt-F11 per aprire l' editor delle macro; menu /Inserisci Modulo; copia il codice e incollalo nel frame di dx
Torna in excel, alt-F8, scegli s1ster dall' elenco di macro che ti propone, premi Esegui.

Fai sapere, ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: VBA+EXCEL

Postdi s1ster » 15/02/12 21:24

Antony,
per prima cosa vorrei ringraziarti tantissimo: la cosa funziona (anche se ci sono delle cose che dovrò sistemare ma che in effetti non potevano essere sapute).
Avrei bisogno di un ultimo favore:

Dato che, pur essendo felice di trovarmi la "pappa" pronta, mi piace capire le cose altrimenti la prossima volta sono da capo a 12 mi piacerebbe che mi spiegassi la sintassi di questa riga che non riesco a capire.

Cells(J + 1, 1).Resize(1, 9).FormulaR1C1 = "=R[-1]C"


Ti ringrazio anticipatamente per la tua cortesia

Roberto
s1ster
Newbie
 
Post: 8
Iscritto il: 12/02/12 16:11

Re: VBA+EXCEL

Postdi Anthony47 » 15/02/12 23:02

Quella istruzione mette in tutta la riga aggiunta la formula che serve per assegnare alle nuove celle gli stessi valori della riga superiore; guarda nelle righe aggiunte per capire la formula.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: VBA+EXCEL

Postdi s1ster » 16/02/12 07:25

Grazie Antony, era più o meno come lo avevo capito.
Nel sperimentare ho visto che questa riga, come appunto hai detto anche tu, mi copia i valori della riga precedente. L'unico problema è che mi copia, come solo valore, anche le celle contenenti formule che, invece, avrei bisogno restassero formule. Come posso modificare la riga di codice in modo che mi faccia un copia "tutto" e non solo i valori?
Grazie 1000 ancora

Roberto
s1ster
Newbie
 
Post: 8
Iscritto il: 12/02/12 16:11

Re: VBA+EXCEL

Postdi Anthony47 » 16/02/12 12:29

Premesso che tutte le celle eccetto la col C contengono una formula, dovresti chiarire quali di queste vuoi mantenere come formule e quali vuoi trasformare in valori presi dalla riga precedente; inoltre, sulle formule da mantenere, dovresti spiegare quali vuoi mantenere con un indirizzamento "assoluto" e quali con indirizzamento "relativo".

La cosa piu' semplice e' che ripubblichi un file con in evidenza una riga aggiunta (a mano) dove cella per cella inserisci quello che ti aspetti di ritrovarci. Per maggiore comprensibilita' dovresti anche spiegare se sulla riga aggiunta sono previsti interventi successivi, a mano o con altre macro, per cambiare il contenuto di qualche cella.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "VBA+EXCEL":


Chi c’è in linea

Visitano il forum: Marius44, raimea e 16 ospiti