Inserimenti macro



  • Inserimenti macro
    di biagio63 (utente non iscritto) data: 11/09/2012 11:23:48

    Ciao a tutti, sono un giocatore di biliardo, autoditatta del computer e mi piace molto lavorare con Exel anche perchè mi serve per sviluppare classifiche e gironi utilizzando le classiche formule automatiche. Attualmente sto lavorando per tentare di sviluppare un segnapunti elettronico da fare visualizzare in una tv collegandola al pc, ma non essendo pratico con le macro mi trovo in difficoltà. In allegato per fare capire quello che devo fare, invio il file con le macro gia inserite ma sicuramente sbagliate perchè inserendo un numero nelle celle e34/l34 queste devono fare di volta in volta la somma in automatico nelle celle a7/k7 e contemporaneamente la cella g15 parte dal nr. 1 e progressivamente deve aumentare di 1 una volta assegnato il punteggio alla cella a7. Scusate la confusione, per chi non gioca a biliardo farà confusione a capire, ma il file allegato spero possa servire a capire meglio il problema.
    P.S.- Allego inoltre un file immagine scaricato da internet con il lavoro originale per capire meglio quello che voglio fare. Grazie a tutti comunque anticipatamente



  • di HarryBosch data: 11/09/2012 13:27:41

    Ciao biagio63
    qua però non si vede nessun allegato... zippa il file e l'immagine e prova a riallegare



  • di Vecchio Frac data: 11/09/2012 18:15:00

    A me il file .xlsm non funziona correttamente, ma vedrò di esaminarlo immaginandomi gli effetti grafici :)

    Nel Foglio1 comunque il codice è sbagliato almeno in quest'istruzione:
    Application.EnableVent = False
    che ovviamente deve essere
    Application.EnableEvents = False

    Inoltre la sub non viene eseguita se non modifichi una delle due celle C31 o M31: solo se modifichi una di queste due il codice viene eseguito, negli altri casi entra in azione la Exit Sub :)

    If Intersect(Target, Range("c31,m31")) Is Nothing Then Exit Sub





  • di Vecchio Frac data: 11/09/2012 19:55:29

    Comunque anche il codice successivo non viene eseguito, nemmeno se modifichi C31 o M31.
    Riporto per intero il tuo codice che tra parentesi ha un altro problema (ossia C = Targe.Column invece di Target, ma perchè non mettete mai Option Explicit?).
    Non viene eseguito, ammesso che modifichi C31 o M31, perché gli If successivi si preoccupano di verificare se R (riga) = 34 e C (colonna) = 3 e subito dopo 12 (la riga in C31 e M31 è... 31 mentre la colonna 12 è L, quindi nè C né M).

    Descrivi per cortesia meglio di quanto hai già fatto in precedenza sia lo scenario che l'esigenza e vedremo di aggiustare il codice insieme :)
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim R As Long, C As Long
    If Intersect(Target, Range("c31,m31")) Is Nothing Then Exit Sub
    Application.EnableVent = False
    R = Target.Row
    C = Targe.Column
    If R = 34 And C = 3 Then
      [e34] = [e34] + Target
      [g36] = [g36] + 1
    ElseIf R = 34 And C = 12 Then
      [l34] = [l34] + Target
    End If
    Application.EnableEvents = True
    End Sub






  • di Vecchio Frac data: 11/09/2012 20:14:11

    Ho modificato quel codice come segue, adesso fa quel che mi sembra di aver capito che debba fare :)
    Ferma restando la limitazione che io ho riscontrato nella conversione al mio Excel 2003, relativamente agli oggetti grafici.
     
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Intersect(Target, [C31, M31]) Is Nothing Then Exit Sub
        Application.EnableEvents = False
        
        If Target.Address = [C31].Address Then
            [A7] = [A7] + Target
        Else
            [K7] = [K7] + Target
        End If
        
        [G15] = [G15] + 1
        Application.EnableEvents = True
    End Sub






  • di HarryBosch data: 11/09/2012 20:36:17

    @ biagio63
    Io un pò a biliardo ho giocato, ma ero proprio uno stecca...
    c'è qualcosa che non mi convince... non parlo certo del codice postato da Vecchio Frac che funziona perfettamente.
    Nel codice che si trova nel file che hai allegato, si fa riferimento al Target Range("c31,m31") mentre nella spiegazione iniziale fai riferimento all'inserimento "nelle celle e34/l34"; dove infatti ci sono due piccole caselline.
    - Lì dentro inserisci sempre un 1? E' quello l'evento che dovrebbe far progredire le celle c31,m31?
    - ovvero, inserendo in e34 deve aumentare c31, uguale per la parte destra
    Se così fosse non sarebbe più comodo un pulsantino? si potrebbero usare quei due bottoni laterali già presenti...

    - la casella centrale (G15) conteggia invece i due progressivi appena detti?
    - nelle celle A7 e G7 inserisci manualmente il punteggio? E questo punteggio deve memorizzarsi quando inserisco un nuovo punteggio all'interno, per andare quindi a sommarsi?
    - infine, le celle F31 e I31 cosa indicano? da come ho dedotto io il sistema, mi sembrerebbe la media tra il punteggio totale e il totale dei colpi effettuati

    Come dice Vecchio Frac bisogna sempre descrivere con precisione lo scenario che si vuole ottenere...



  • di biagio63 (utente non iscritto) data: 12/09/2012 11:14:13

    Grazie per l'interessamento, forse effettivamente ho fatto un pò di confusione nello spiegare il problema, cercherò di essere più chiaro. Ho allegato un file nuovo eliminando alcune celle per cercare di avere meno passaggi, e ho nominato i due giocatori virtuali Pinco e Pallino.
    Allora, i nomi sono evidenziati con i colori bianco e giallo questo perchè uno gioca con la biglia bianca e uno con la gialla, quando inizia Pinco, man mano che esegue dei punti io li devo inserire nella casella c31 e dopo aver finito la sequenza do l'invio e il punteggio lo porta nella cella a7, , quando inizia a giocare Pallino naturalmente inserirò il pnteggio nella cella l31 che a sua volta dopo l'invio sarà inviata nella cella k7,contestualmente in automatico la cella g15 deve aumentare di 1 ogni volta che do l'invio solo alla cella a7, questo per far si che entrambi avranno lo stesso numero di tiri.
    Per intenderci le celle a7 e k7 dovranno fare la somma automatica man mano che acquisiranno i punteggi.
    Spero di essere stato più chiaro possibile a differenza di prima, e volevo sapere inoltre se si può inserire nel foglio una immagine riflessa come nel file immagine che ho allegato, se no va bene così.
    Grazie per la pazienza



  • di Vecchio Frac data: 12/09/2012 15:08:50

    Più o meno come avevo fatto io, andava aggiustato un pochino :)
    Allego un modellino probabilmente funzionante, ho aggiunto gli eventi al Workbook affinché in apertura si spazzi lo schermo mostrandosi quasi a pieno schermo (all'uscita da Excel si riporta tutto com'era).
    per l'effetto dell'immagine sullo sfondo non saprei, la vedo dura ma adesso provo a cercare un po'.





  • di Vecchio Frac data: 12/09/2012 15:28:31

    Forse c'è una soluzione, abbastanza artigianale, per impostare uno sfondo.
    Potresti inserire un'immagine gif dotata di trasparenza mediante la barra strumenti di controllo.

    Oppure...
    In Excel 2003 puoi scegliere un'immagine di sfondo con Formato --> Foglio --> Sfondo...
    Potresti recuperare l'immagine che ti piace e impostarla così come sfondo.
    Purtroppo l'immagine è in ultima posizione rispetto alle celle del foglio di lavoro, quindi celle colorate piene coprono lo sfondo; puoi rimediare con la barra di Disegno: imposti tutte le celle a "colore automatico", quindi disegni tanti rettangoli con i colori desiderati nelle posizioni opportune del foglio e ne imposti i riempimenti con un colore da settare semitrasparente (trasparenza 75% va bene, puoi fare delle prove).
    Se non sono riuscito a spiegarmi proverò a postare un esempio.





  • di Vecchio Frac data: 12/09/2012 15:48:52

    Bene, ho fatto alcuni esperimenti e direi che con un po' di pazienza funziona tutto.
    L'unico inconveniente è che servono caselle di testo dove depositare i valori da visualizzare, altrimenti le immagini coprono le celle di Excel. In tal caso bisogna rivedere il codice per modificare il contenuto delle textbox.
    Niente di impossibile, ma per avere anche l'immagine di sfondo occorre lavorarci un po' su, anche per posizionare correttamente le singole tessere del mosaico.
    Te la senti?





  • di biagio63 (utente non iscritto) data: 12/09/2012 16:29:48

    Mi hanno detto di utilizzare le filigrane, ma ho notato che si possono acquisire solo dal word, in excel non trovo questa opzione



  • di Vecchio Frac data: 12/09/2012 17:00:37

    Formato --> Foglio --> Sfondo.
    Ma come ho già detto le celle colorate coprono lo sfondo.
    L'unica soluzione secondo me praticabile è usare dei rettangoli colorati con trasparenza e textbox in primo piano.





  • di biagio63 data: 13/09/2012 11:31:26

    Sono daccordo a qualsiasi soluzione, sarebbe ideale uno sfondo molto simile a quello della foto.

    A proposito, si possono creare dei pulsanti per inserire i punti?



  • di Vecchio Frac data: 13/09/2012 11:50:05

    Biagio63,
    la risposta è sì.
    Ci sto lavorando e se riesco in giornata allegherò un file di esempio :)





  • di biagio63 data: 13/09/2012 12:07:27

    Grazie, domani inizierà il torneo e penso che grazie al tuo aiuto farò una gran bella figura.

    Per il futuro ho un progetto un pò più ambizioso, dopo ti farò sapere



  • di Vecchio Frac data: 13/09/2012 14:14:20

    Allora, ecco qui una cosa un po' alla buona ma secondo me l'idea è carina e può aver un futuro nel vostro torneo ^_^
    Allego il file (termina con fc2 così lo distingui dagli altri). E' in Excel 2003 ma dovrebbe funzionare.

    Avendolo studiato un po' in fretta non ho potuto approfondire un problemino, ma se serve lo faccio. In pratica per inserire lo score parziale di ogni giocatore è necessario l'intermezzo di una inputbox che è l'unica cosa bruttina dell'intero modellino. Provalo e capirai cosa intendo.

    Per il funzionamento:
    - all'avvio il foglio si massimizza, elimina un po' di barre inutili e le intestazioni di riga/colonna, le schede, ecc. Una specie di Visualizza schermo intero.
    - per inserire gli score clicca a fianco dei due pallini colorati, ci sono due caselle di testo dall'interno verde un po' scuro (il cursore diventa una manina).
    - il foglio è protetto per evitare di scrivere nelle celle o in altre caselle di testo, ma non c'è password quindi in debug puoi fare Rimuovi protezione foglio e Invio.
    - lo sfondo è di proprietà di Vanni, l'ho preso come esempio, spero che non si offenda :D Tu ovviamente dovrai metterci la tua immagine preferita! Anche una foto tua se vuoi... la trasparenza dovrebbe funzionare ugualmente :)





  • di HarryBosch data: 13/09/2012 14:47:00

    Non sono affatto offeso, anzi, mi piace molto tutta l'impostazione e la pensata di aprire una maschera di inserimento; che volendo, per rispecchiare la grafica del modellino, Biagio63 potrebbe sostituire con una Userform da "disegnare" a piacere.

    @Vecchio Frac
    però a me da errore quando confermo il valore con l'Inputbox, errore 400.
    Non ho guardato il codice..



  • di biagio63 data: 13/09/2012 15:13:58

    Anche a me da errore 400

    Mi spieghi meglio come faccio a sostituire la foto



  • di Vecchio Frac data: 13/09/2012 15:27:52

    Il problema nasce probabilmente dal fatto che il foglio risulta protetto.
    Per risolvere velocemente, modificate la sub shape_clic sistemando "ActiveSheet.Unprotect" dopo "If i = 0 Then Exit Sub" e ripristinando la protezione con "ActiveSheet.Protect" subito prima di End Sub.

    Per modificare l'immagine di sfondo, occorre rimuovere la protezione (non c'è password), eliminare l'immagine (clicca nella parte inferiore del foglio per selezionarla), quindi con Inserisci --> Immagine --> da file importi la tua immagine, la allunghi per farcela stare nello schermo, imposti l'ordine "Porta indietro" (o "Porta in secondo piano").





  • di biagio63 data: 13/09/2012 19:52:16

    Ho risolto il problema andando su rimuovi protezione foglio, ora i valori li inserisce però quella finestra che appare effettivamente da un problema di estetica, e poi quando inserisco i valori ad entrambi aumenta di 1 all'invio, mentre deve succedere solo con il giocatore giallo.

    Volevo diminuire i decimali della media ma sono nascosti.

    La cosa bellissima è che quando azzero tutto, rimane tutto pulito fino a quando non reinserisco i valori.



  • di Vecchio Frac data: 13/09/2012 20:24:24

    cit. "Volevo diminuire i decimali della media ma sono nascosti. "
    Non sono nascosti, nel codice (nel foglio1, nella sub shapes_clic) c'è un'istruzione Format(..., "0.0000") che rende come risultato un numero a quattro decimali formattato come stringa. Togli uno zero da 0.0000 se vuoi tre decimali :)

    cit. "quando inserisco i valori ad entrambi aumenta di 1 all'invio"
    Con un minimo di pazienza puoi esaminare la sub shapes_clic e capire quali sono le textbox che vengono coinvolte nell'aggiornamento.
    Con poca fantasia le ho battezzate score1 e score2, partial1 e partial2, rank1 e rank2... prova a smanettare un po' :)






  • di biagio63 data: 14/09/2012 12:01:37

    Ho fatto vedere il file al nostro Presidente ed è rimasto entusiasta dal lavoro che ne è uscito fuori (mi riferisco al file con l'immagine da sfondo), purtroppo come ho premesso dall'inizio, e come avrai ben capito, mi ci vuole un pò per capire alcune cose, dovrei portare il lavoro ultimato nel pomeriggio ma non sono riuscito in alcune modifiche. Ti sarei immensamente grato se intanto mi potresti aggiornare tu il file ed in particolare eliminare il pulsante da cui appare la finestrella per i punti, e fare in modo che solo Pinco faccia aumentare di 1 il quadrato blu.
    Grazie comunque



  • di biagio63 (utente non iscritto) data: 14/09/2012 13:11:11

    Ho fatto vedere il file al nostro Presidente ed è rimasto entusiasta dal lavoro che ne è uscito fuori (mi riferisco al file con l'immagine da sfondo), purtroppo come ho premesso dall'inizio, e come avrai ben capito, mi ci vuole un pò per capire alcune cose, dovrei portare il lavoro ultimato nel pomeriggio ma non sono riuscito in alcune modifiche. Ti sarei immensamente grato se intanto mi potresti aggiornare tu il file ed in particolare eliminare il pulsante da cui appare la finestrella per i punti, e fare in modo che solo Pinco faccia aumentare di 1 il quadrato blu.
    Grazie comunque



  • di Vecchio Frac data: 14/09/2012 13:33:49

    Sono lieto che il Presidente apprezzi ^_^
    Ti allego la versione aggiornata (fc3).