Hola de nou, ens tornem a trobar en una nova entrada d’aquest conjunt d’escrits, per apropar-nos a un disseny de fulla Excel amb característiques diferents, que ens ajudin al registre de dades.
En aquesta ocasió i com ja es va comentar en l’anterior entrada, intentarem explicar com configurar 7 tecles per poder registrar la distribució del col·locador, segons la rotació en la que es trobi al mateix temps que anem escrivint el registre que ja vam introduir en el punt anterior. Visualment podria ser amb aquest disseny.

Per a fer això hem de conèixer el codi VB (Visual Basic) que li atorga una funció a una tecla en concret.
La primera acció que volem realitzar es la de dir-li al programa en quina rotació ens trobem, per a poder utilitzar les 6 mateixes tecles (una per zona) i es situï en el camp corresponent, sinó volguéssim diferenciar segons rotació, sols caldria fer un camp amb les 6 posicions y assignar una tecla a cada zona. En aquest cas que volem mostrar, les 6 tecles que utilitzarem son (I-O-P-K-L-Ñ), aquestes cada cop que les utilitzem, sumaran de un en un en la casella corresponent segons la rotació indicada.
A continuació descriurem tot el codi, però abans explicaré el que hi ha a sota de la casella gran, el percentatge fa referència a la freqüència d’aquell set segons el total de boles d’aquella rotació (número que està al centre superior). El número que hi ha a la dreta del percentatge, es el sumatori de tots els sets. Crec interessant en els següents sets conèixer també l’acumulat en els altres sets i que aquets sigui visible, potser canvia segons sets. Fer això n’estic convençut que amb el que ja s’ha explicat ho podeu resoldre utilitzant les funcions d’Excel.
Seguim amb el codi. Hem d’obrir el programa Visual Basic per a Excel com ja vam explicar en la primera entrada d’aquest any, un cop obert el projecte, ens trobarem amb cada una de les fulles que ja tenim dissenyades, i com es mostra en el gràfic a continuació, en el worksheet de la fulla 1 (Ho haurem de repetir en cada fulla), farem un selectionChange tal com està mostrat i posant el codi indicat, [Application.Onkey “ “, “canvirot”].

Fent això el que estem dient al programa es que cada cop que cliquem l’espai faci la funció assignada “canvirot”
Aquesta funció (CANVIROT), l’hem d’escriure en un Mòdul. Per inserta un Mòdul on poder escriure totes les funcions que utilitzarem, anem al menú Insertar Mòdul. Ha de sortir com en la imatge que tenim a continuació a l’esquerra. Cliquem en el mòdul que estarà en blanc i escrivim el que es mostra a continuació.

El que li estem dient al programa es en la funció “canvirot”, si el valor de la cel·la AJ3 es igual a 1 llavors l’ha de canviar per 6, en canvi sinó ho és, el valor que hi hagi l’hi ha de restar 1. S’ha de tancar la seqüència “if” i la subrutina com es mostra en la imatge.
La cel·la “AJ3” es en la que tinc posada en el meu disseny el número de la rotació que s’ha mostrat al inici de l’escrit, si això fos en un altre cel·la, haurem de posar la que correspongui.
Aquest mateix procés que hem fet per a la tecla espai i la rotació ho hem de fer per les demés. Primer dir-li al programa en cada fulla a quina funció farà referència cada tecla segons la rotació en la que es trobi i després en el mòdul descriure cada funció.
En la següent imatge mostrem com s’ha d’escriure el codi per a que cada tecla vagi a una funció en concret segons el número de la rotació de la cel·la “AJ3”.

El codi sencer es aquest:
‘Control de tecles de tendencies per zones
If Application.Range(“AJ3″).Value = 1 Then
Application.OnKey “i”, “sum14″
Application.OnKey “o”, “sum13″
Application.OnKey “p”, “sum12″
Application.OnKey “k”, “sum15″
Application.OnKey “l”, “sum16″
Application.OnKey “ñ”, “sum11″
ElseIf Application.Range(“AJ3″).Value = 2 Then
Application.OnKey “i”, “sum24″
Application.OnKey “o”, “sum23″
Application.OnKey “p”, “sum22″
Application.OnKey “k”, “sum25″
Application.OnKey “l”, “sum26″
Application.OnKey “ñ”, “sum21″
ElseIf Application.Range(“AJ3″).Value = 3 Then
Application.OnKey “i”, “sum34″
Application.OnKey “o”, “sum33″
Application.OnKey “p”, “sum32″
Application.OnKey “k”, “sum35″
Application.OnKey “l”, “sum36″
Application.OnKey “ñ”, “sum31″
ElseIf Application.Range(“AJ3″).Value = 4 Then
Application.OnKey “i”, “sum44″
Application.OnKey “o”, “sum43″
Application.OnKey “p”, “sum42″
Application.OnKey “k”, “sum45″
Application.OnKey “l”, “sum46″
Application.OnKey “ñ”, “sum41″
ElseIf Application.Range(“AJ3″).Value = 5 Then
Application.OnKey “i”, “sum54″
Application.OnKey “o”, “sum53″
Application.OnKey “p”, “sum52″
Application.OnKey “k”, “sum55″
Application.OnKey “l”, “sum56″
Application.OnKey “ñ”, “sum51″
ElseIf Application.Range(“AJ3″).Value = 6 Then
Application.OnKey “i”, “sum64″
Application.OnKey “o”, “sum63″
Application.OnKey “p”, “sum62″
Application.OnKey “k”, “sum65″
Application.OnKey “l”, “sum66″
Application.OnKey “ñ”, “sum61″
End If
End Sub
Si el valor de la cel·la AJ3 es igual a 1, llavors la funció de la tecla “i” és “sum14” (la idea d’aquest nom es rotació 1 zona 4), i així successivament amb cada zona y cada rotació.
A continuació en el mateix Mòdul que el “canvirot”, escriurem les següents funcions “sum” de cada rotació i cada zona segons la cel·la que li correspongui.
El codi sencer es aquest:
‘tendencies zona 1
Sub sum14()
Application.Range(“AO16″).Value = Application.Range(“AO16″).Value + 1
End Sub
Sub sum13()
Application.Range(“AQ16″).Value = Application.Range(“AQ16″).Value + 1
End Sub
Sub sum12()
Application.Range(“AS16″).Value = Application.Range(“AS16″).Value + 1
End Sub
Sub sum15()
Application.Range(“AO19″).Value = Application.Range(“AO19″).Value + 1
End Sub
Sub sum16()
Application.Range(“AQ19″).Value = Application.Range(“AQ19″).Value + 1
End Sub
Sub sum11()
Application.Range(“AS19″).Value = Application.Range(“AS19″).Value + 1
End Sub
‘tendencies zona 2
Sub sum24()
Application.Range(“AO8″).Value = Application.Range(“AO8″).Value + 1
End Sub
Sub sum23()
Application.Range(“AQ8″).Value = Application.Range(“AQ8″).Value + 1
End Sub
Sub sum22()
Application.Range(“AS8″).Value = Application.Range(“AS8″).Value + 1
End Sub
Sub sum25()
Application.Range(“AO11″).Value = Application.Range(“AO11″).Value + 1
End Sub
Sub sum26()
Application.Range(“AQ11″).Value = Application.Range(“AQ11″).Value + 1
End Sub
Sub sum21()
Application.Range(“AS11″).Value = Application.Range(“AS11″).Value + 1
End Sub
‘tendencies zona 3
Sub sum34()
Application.Range(“AH8″).Value = Application.Range(“AH8″).Value + 1
End Sub
Sub sum33()
Application.Range(“AJ8″).Value = Application.Range(“AJ8″).Value + 1
End Sub
Sub sum32()
Application.Range(“AL8″).Value = Application.Range(“AL8″).Value + 1
End Sub
Sub sum35()
Application.Range(“AH11″).Value = Application.Range(“AH11″).Value + 1
End Sub
Sub sum36()
Application.Range(“AJ11″).Value = Application.Range(“AJ11″).Value + 1
End Sub
Sub sum31()
Application.Range(“AL11″).Value = Application.Range(“AL11″).Value + 1
End Sub
‘tendencies zona 4
Sub sum44()
Application.Range(“Z8″).Value = Application.Range(“Z8″).Value + 1
End Sub
Sub sum43()
Application.Range(“AB8″).Value = Application.Range(“AB8″).Value + 1
End Sub
Sub sum42()
Application.Range(“AD8″).Value = Application.Range(“AD8″).Value + 1
End Sub
Sub sum45()
Application.Range(“Z11″).Value = Application.Range(“Z11″).Value + 1
End Sub
Sub sum46()
Application.Range(“AB11″).Value = Application.Range(“AB11″).Value + 1
End Sub
Sub sum41()
Application.Range(“AD11″).Value = Application.Range(“AD11″).Value + 1
End Sub
‘tendencies zona 5
Sub sum54()
Application.Range(“Z16″).Value = Application.Range(“Z16″).Value + 1
End Sub
Sub sum53()
Application.Range(“AB16″).Value = Application.Range(“AB16″).Value + 1
End Sub
Sub sum52()
Application.Range(“AD16″).Value = Application.Range(“AD16″).Value + 1
End Sub
Sub sum55()
Application.Range(“Z19″).Value = Application.Range(“Z19″).Value + 1
End Sub
Sub sum56()
Application.Range(“AB19″).Value = Application.Range(“AB19″).Value + 1
End Sub
Sub sum51()
Application.Range(“AD19″).Value = Application.Range(“AD19″).Value + 1
End Sub
‘tendencies zona 6
Sub sum64()
Application.Range(“AH16″).Value = Application.Range(“AH16″).Value + 1
End Sub
Sub sum63()
Application.Range(“AJ16″).Value = Application.Range(“AJ16″).Value + 1
End Sub
Sub sum62()
Application.Range(“AL16″).Value = Application.Range(“AL16″).Value + 1
End Sub
Sub sum65()
Application.Range(“AH19″).Value = Application.Range(“AH19″).Value + 1
End Sub
Sub sum66()
Application.Range(“AJ19″).Value = Application.Range(“AJ19″).Value + 1
End Sub
Sub sum61()
Application.Range(“AL19″).Value = Application.Range(“AL19″).Value + 1
End Sub
Un cop tot ben descrit, s’ha de provar si tot funciona i que cada tecla faci el que es suposa que ha de fer. Com ja he indicat, les cel·les que estan posades en el codi d’exemple son les que jo tinc en la meva fulla Excel que utilitzo com a model, si en la vostra fulla no coincideix en la mateixa cel·la, heu de canviar-la en el codi per a que coincideixi en la que us interessa a vosaltres.
Espero que us sigui d’utilitat. Com sempre si teniu qualsevol dubte, poseu-vos en contacte i us ho resoldré da la millor manera que pugui.
Gràcies i fins la propera.