Vai al contenuto
PLC Forum


Problema Macro Fatte Con Windows 95


Messaggi consigliati

Inserito:

salve a tutti!!

Ho un problema!!

Ho un foglio elettronico Excel con alcune macro fatto con Office 95!!

Adesso ho office xp, ma non mi funzionano le macro!!

Come posso aggirare il problema?

Grazie


Inserita:

Teoricamente dovrebbero funzionare senza problemi (non all'inverso, però, nel senso che da WinXP a Win95 ci possono essere problemi di incompatibilità).

Mi viene in mentre che una macro editata in una lingua potrebbe non funzionare se provata su un applicativo in altra lingua. Altro eventuale problema è la compatibilità con Lotus 123, che con Office 95 era ancora in parte presente e che, se utilizzata, poteva impedire il funzionamento della macro nelle suite più recenti.

  • 2 years later...
Inserita:

A proposito di Macro.

Ho un problema su un foglio di excel (windows 98), in pratica, vorrei incrementare di volta in volta un valore ad ogni inserimento di dati.

In pratica un contatore progressivo, purtroppo non sono per niente pratico dei comandi di visual basic, qualcuno sa come fare, o ha qualche suggerimento su dove trovare informazioni utili a riguardo??

Ho capito (forse) che è possibile registrare una macro senza inserire passo passo le istruzioni, ma non capisco come, devo iniziare con registra e poi eseguire le operazioni sequenziali di ciò che intendo fare?

grazie

Inserita:

Perchè hai Office XP?

L'hai messo giù col mulo?

Costa 250 euro + IVA la versione OEM!

Per cosa?

Continuo ad usare Office 97 e (ne caghicchio un pò) credo di non superare il 15% di potenzialità.

Inserita:

scusa geoline, ma la discussione iniziale è datata gennaio 2005, ho aggiunto un messaggio quì perchè "cercando: macro" ho trovato solo questa discussione....

hai idea del comando per incrementare progressivamente un valore?

Inserita:

Hoops blink.gif

Non me ne ero accorto.

Per la soluzione dell'incremento, dovrei vedere la struttura del foglio.

Utilizzi un modulo?

Inserisci i dati in una cella di una determinata colonna?

Le altre colonne cosa contengono?

In questo modo non è facila capire quale sia la soluzione più adatta. senzasperanza.gif

Inserita:

Provo a spiegarmi meglio, i fogli di calcolo non sono la mia specialità... unsure.gif

Su un foglio di excel, ho inserito una macro, (o piuttosto una sintassi di comando da avviarsi quando premo un pulsante creato sul foglio stesso)

Ho una tabella (matrice) con alcuni dati fissi ed alcuni variabili.

Dopo aver modificato le variabili, procedo all' invio dei dati su un' archivio creato con una tabella pivot.

Fino ad ora sono riuscito ad eseguire il trasferimento dei dati dal foglio "inserimento" a quello archivio.

Adesso avevo bisogno di aggiungere una cosa.

Nella macro creata, ho fatto in modo di trasportare alcuni dati (variabili) su di un' altra pagina dello stesso foglio di calcolo, e precisamente si tratta di una scheda che va compilata, e che deve avere un numero progressivo che parte da 1 ad inizio anno e arriva dove arriva a fine anno.

Quello che non riesco a capire è come e dove mettere il valore di partenza, nel caso non volessi partire da 1, ma da 230 ad esempio, e come avere l'avanzamento progressivo concomitante con l'invio dei dati dopo l'inserimento.

Tutto ciò per evitare di dimenticare di incrementare il valore manualmente ogni volta che si esegue la compilazione.

Spero di essere stato più chiaro di prima... biggrin.gif

Inserita:

Ciao dago, ho impostato la formula secondo la tua indicazione, ho soltanto modificato la prima parte in --> (Target.Column=2) (essendo solo i valori della seconda colonna che cambiano).

Però mi viene fuori un errore di run-time '424' necessario oggetto.

purtroppo non ci capisco un H di questo tipo di programmazione (ne di altre in verità), ora provo a modificare i riferimenti, probabilmente Column=2 per lui non vuol dire niente secondo la disposizione dei campi che vado a leggere..

se ti viene qualche idea... è sicuramente bene accetta... ti ringrazio fin da ora... e ovviamente anche per chiunque sappia illuminarmi in merito vale altrettanto..

Inserita:

Non è che la cosa la puoi risolvere anche senza macro?

Mi pare di capire che vuoi solo contare le celle sulle quali hai segnato un valore, è così?

Se è così, ti basta sapere che tipo di dato ti interessa memorizzare e utilizzare, secondo il caso:

COUNT(value1;value2;...)

COUNTA(value1;value2;...)

COUNTBLANK(range)

COUNTIF(range;criteria)

(vedi la guida in linea per entrare nel dettaglio della singola funzione)

Se invece vuoi tener conto di quante volte modifichi una stessa cella, allora ti serve proprio VBA, o una macro, ma occhio alle modifiche che sono semplicemente la correzione di un input errato.

Inserita: (modificato)

Proprio così, è questo che mi serve fare...

non capisco.

Io ho la mia tabella di inserimento dati, e a scrittura completata schiaccio il pulsante a cui ho assegnato la mia macro... dici che fino a quel punto (cioè prima di inviare i dati all' archivio) se modifico più volte un campo di una qualsiasi cella della colonna su cui faccio le modifiche, la funzione me le conta tutte e quindi se al precedente inserimento avevo un progressivo 4 potrei trovarmi con un salto fino a 7 (per esempio, nel caso avessi modificato per tre volte la stessa cella).... penso [spero] di no!!!! ohmy.gif

comunque mi pare che per questo tipo di funzione non è possibile la registrazione della macro, ci vuole la formula bruta... dry.gif

Modificato: da attilio fiocco
Inserita:

Dipende da quando parte l'elaborazione, una volta inserito il dato:

Se elabora subito dopo premuto l'invio, o allo spostarsi sulla cella successiva, allora tornando sulla cella per fare una correzione potrebbe incrementare il contatore delle modifiche anche se non lo vuoi.

Ma se hai impostato la macro per consentirti l'inserimento di tutti i dati e solo alla fine, magari facendo partire una seconda macro, elabora i dati e incrementa il contatore, allora è fattibile.

Logicamente c'è bisogno di sapere se ci sono "n" contatori, uno per ciascuna cella modificabile, oppure se interessa tener conto del numero totale di celle modificate.

Il valore, o i valori, andranno registrati dalla macro su un foglio di lavoro, o su una variabile di memoria, ma in questo secondo caso il dato è volatile, serve solo per una elaborazione durante l'esecuzione della macro stessa.

Se usi una variabile di memoria, puoi memorizzare le celle variate anche implementando un array, così hai allo stesso tempo l'indirizzo della cella variata e, contando gli elementi dell'array, quante sono le celle modificate.

Inserita: (modificato)

Centro!!

Per la verità sto usando due macro.

La prima mi abilita la stampa di un foglio di lavoro, i cui dati sono ricavati tramite semplice collegamento di celle dal foglio di inserimento.

Dopo avere stampato, abilito (tramite un secondo pulsante) l'altra macro, quella che mi trasferisce tutti i dati immessi in un foglio "archivio" per la successiva gestione attraverso pivot, e quindi mi cancella i valori (modificabili) che reinserirò alla successiva operazione.

il mio problema è che quando do questo secondo comando di invio, dopo anche avere cancellato i campi, avrei necessità che un numero di una cella in questo foglio stesso, venga incrementato di una unità.

cerco di spiegare meglio con un esempio.

   
            A                           B                 C                  D

1  Scheda                             1      

2  Tipo di Motore                                      Brushless

3  Alimentazione                                      400 Vac

4  Ubicazione                                                               Manipolatore 22

praticamente dopo la convalida dei dati (clic sul pulsante della macro), la cella "B1" che aveva valore 1, deve incrementare di una unità.

però avrei anche la necessità di potere decidere da che numero partire, ad esempio ora mi servirebbe partire da 377, invio... 378...ecc. ecc.

suppongo che ci voglia quindi una cella di riferimento alla quale applicare la funzione di incremento, e la mia "B1" potrebbe essere collegata alla suddetta cella?

che dite è sbagliato??

si può fare?? worthy.gif

Modificato: da attilio fiocco
Inserita: (modificato)

Il valore di partenza (quel 377 dell'esempio) lo stabilisci attivando la macro, oppure è un dato preesistente la sua attivazione?

Perché se è preesistente avrai bisogno di stabilire se l'incremento è sempre +1 rispetto a quel valore, oppure bisogna che la prima esecuzione della macro legga quel numero e lo incrementi di 1 (mettendo un segnalino che indichi che la macro è già stata eseguita una prima volta), mentre le successive esecuzioni leggono il valore della cella B1 e incrementano solo quella (così il valore non sarà sempre 378, ma si incrementerà ogni volta).

Quindi la macro avrà una istruzione condizionata per sapere quale valore dover incrementare.

Ho capito bene?

Modificato: da nll
Inserita: (modificato)

purtroppo è un dato pre-esistente, ritornando all' esempio che avevo inserito, in effetti non capisco come eseguire una correlazione tra un valore di partenza X (che dovrebbe essere 1, ma che necessito potere modificare eventualmente) che successivamente viene aggiornato in X+1 = Y e al successivo aggiornamento diventa ancora Y + 1 e così via...

sono sicuro che è possibile e che deve essere anche abbastanza semplice...

ad esempio con il modulo barra di scorrimento (casella strumenti)

è possibile selezionare un intervallo numerico a piacimento (es. da 0 a 10000), assegnare una cella di destinazione, e vederne crescere/decrescere il valore a seconda che venga spostato il cursore della barra verso destra o verso sinistra..

a me servirebbe una funzione del genere, però che sia esclusivamente crescente, ed eseguibile automaticamente contestualmente alla macro che mi effettua la registrazione dei dati.

in tutto e per tutto fai conto che nell' esempio di prima, al termine dell' esecuzione della macro, le celle "Brushless", "400 Vac" e "Manipolatore 22" vengono copiate e incollate sull' archivio e ne vengono cancellati i valori sul foglio di inserimento, e anche "1" viene copiato in una colonna dell' archivio, in pratica determina la prima colonna (ma questo non importa), però ad eccezione delle altre voci precedenti, non devo cancellare questo valore (altrimenti ad ogni inserimento devo andare a guardare a che progressivo sono arrivato e in caso di errore neanche me ne accorgo) bensì devo trovarlo posto a "2", (NB: le voci "Scheda", "Tipo di motore", ecc. fanno parte della maschera di inserimento e sono fisse), in modo di andare avanti con l'inserimento progressivo, quindi la scheda "2" sarà per esempio "Pompa alta pressione" , "400 Vac" ; "Dosaggio componenti"... e completate le voci.. pulsante inserimento (esecuzione macro) e trasferimento dei dati in archivio.. ritorno sul foglio inserimento e ritrovo il progressivo scheda (B1) a 3....

nll ti ringrazio per la pazienza... smile.gif

Modificato: da attilio fiocco
Inserita:

Se il valore è preesistente, allora è sufficiente che una cella la riservi a memorizzare la prima esecuzione della macro (campo logico), così la macro sa se deve utilizzare il dato di partenza (X), o l'ultimo incremento (Y) della precedente esecuzione della macro. E' così?

Inserita:

E' proprio così, peccato che non riesco a capire come fare... come ti dicevo sono proprio a terra sulla programmazione...

Credo che non sia possibile eseguire la registrazione di questa operazione, penso si debba definire e impostare manualmente la formula di calcolo delle celle che devono eseguire questa operazione...

qualche post fa, dago mi aveva allegato un esempio, andando in esecuzione però come avevo già scritto mi dava un errore di run time (mi pare, comunque l'avevo scritto in un precedente messaggio) '434' manca oggetto.

grazie ancora...

Inserita:

Vediamo se ora ho compreso la tua esigenza:

foglioExcel+--> (foglioExcel)

Macro Incrementa() attivabile con Ctrl+Q (puoi mettere lo shortcut key che vuoi)

Logicamente se vuoi puoi utilizzare dei riferimenti di cella variabili, magari leggendo la posizione del cursore.

Il suggerimento di dago ti può servire per memorizzare su una cella la posizione del cursore, se hai più inserimenti, e con gli indirizzi relativi leggi e ti sposti nel foglio di lavoro.

Inserita:

Luca ti devo un caffè.... mi hai risolto il problema....

:-)

grazie e alla prossima (dis)avventura.... inVB...

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...