#3 Recombinació de tecles i distribució col•locadors, per Albert Iricibar

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.

fig1

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”].

fig2

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ó.

fig3

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”.

fig4

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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>