Está en la página 1de 175

CENTRO DE ENSEANZA TCNICA INDUSTRIAL

IMPLEMENTACIN DE UN SISTEMA DE CONTROL APLICANDO UN SOFTWARE PARA CALCULO Y


BALANCEO DE LINEAS ELCTRICAS DE MEDIA Y BAJA TENSIN.
TITULACIN:
PROYECTO O PRACTICAS PROFESIONALES.

SUSTENTANTES:
AYALA RODRGUEZ JOS HCTOR SAL
ASESOR: ING. JOSE DEL CARMEN AGUILAR MORANTE
ASESOR TECNICO: ING. JOS MARTIN IBARRA RAMIREZ

Introduccin............................................................................................................................... 4
Tema 1.Analisis de la funcin de la norma..................................................................................... 4
Tema 2.- caractersticas del programador.................................................................................... 21
Cmo se... (referencia de VBA para Excel)..............................................................................22
Libros y hojas de clculo....................................................................................................... 22
........................................................................................................................................ 22
Macros y el Editor de Visual Basic..................................................................................... 23
........................................................................................................................................ 23
Ficha Programador............................................................................................................. 23
Para habilitar la ficha Programador................................................................................... 23
Problemas de seguridad.................................................................................................... 24
Editor de Visual Basic........................................................................................................ 24
Para crear un nuevo libro en blanco..................................................................................24
Un ejemplo real.................................................................................................................... 26
........................................................................................................................................ 26
Aprendizaje sobre objetos................................................................................................. 26
Uso de la grabadora de macros......................................................................................... 27
Para usar la grabadora de macros como punto de inicio de la solucin............................27
Para grabar una macro que cambie el nombre de una hoja de clculo.............................28
Modificacin del cdigo grabado.......................................................................................... 29
........................................................................................................................................ 29
Funcin de bucle............................................................................................................... 29
Cambio de nombre til...................................................................................................... 31
Bsqueda de celdas vacas............................................................................................... 32
Declaraciones de variables................................................................................................ 33
Comentarios...................................................................................................................... 34
Ms cosas que se pueden hacer con VBA............................................................................. 34
........................................................................................................................................ 34
Importancia de una actitud abierta................................................................................... 34
Grficos............................................................................................................................. 35

UserForms......................................................................................................................... 38
Qu sigue?.......................................................................................................................... 39
........................................................................................................................................ 39
Preguntas sobre Visual Basic 6.0.......................................................................................... 43
Objetos y clases....................................................................................................................... 46
Reutilizar el cdigo............................................................................................................... 46
........................................................................................................................................ 46
Clases................................................................................................................................... 46
........................................................................................................................................ 46
Varias instancias................................................................................................................... 47
........................................................................................................................................ 47
Para crear un objeto a partir de una clase.........................................................................47
Controles Estndar de Visual Basic....................................................................................... 47
Descripcin del control PictureBox........................................................................................... 48
Propiedad Picture..................................................................................................................... 49
Propiedad Autosize.................................................................................................................. 50
Usar el PictureBox como contenedor....................................................................................... 51
Propiedad Container - Insertar controles en tiempo de ejecucin............................................53
Propiedad Autoredraw............................................................................................................. 54
Guardar la imagen del picturebox como BMP..........................................................................56
Propiedad Image...................................................................................................................... 57
Dibujar en un picturebox con los mtodos grficos.................................................................59
Enlaces relacionados............................................................................................................... 59
Descripcin.............................................................................................................................. 60
Propiedades............................................................................................................................. 60
Propiedad Caption................................................................................................................ 61
Propiedad Autosize............................................................................................................... 62
Propiedad Aligment.............................................................................................................. 62
Otras propiedades del control son :...................................................................................... 63
Ejemplo para cambiar propiedades en tiempo de ejecucin................................................64
Eventos del control Label:........................................................................................................ 67
Ejemplo utilizando el evento MouseMove............................................................................. 67
Recorrer los labels del formulario con un bucle For Each next.................................................69

Texto con sombra usando dos controles Label.........................................................................70


Simple botn............................................................................................................................ 71
Control ListBox..................................................................................................................... 71
Ejemplo simple para agregar y eliminar elementos de un control List..............................74
Propiedad Sorted:................................................................................................................. 76
Eliminar elementos con el mtodo Clear.............................................................................. 76
Propiedad ListCount.............................................................................................................. 76
Propiedad List....................................................................................................................... 77
Otras propiedades del control ListBox son:...........................................................................78
Eventos del control ListBox................................................................................................... 79
Control ComboBox................................................................................................................... 80
Propiedad DataField y DataSource........................................................................................ 82
Propiedad Multiline............................................................................................................... 85
Propiedad PasswordChar...................................................................................................... 86
Propiedad ScrollBars............................................................................................................. 86
Propiedad Locked................................................................................................................. 87
Propiedad Maxlength............................................................................................................ 87
Propiedad SelStart y SelLength............................................................................................ 87
Algunos ejemplos del Uso del control TextBox......................................................................88
Hacer que un textBox admita solo nmeros y algunos otros caracteres indicados..............90
Ejemplo para cargar el contenido de un archivo de texto en un TextBox Multiline...............92
Redimensionar un TextBox al ancho y alto del formulario....................................................95
Cambiar color de borde........................................................................................................ 95
Pasar el foco entre Textbox al presionar la tecla enter.........................................................98
Borrar todos los textbox de un formulario..........................................................................100
Enlaces relacionados.......................................................................................................... 101
Ejemplos bsicos sobre el control CommandButton de visual basic...................................101
Descripcin del control.......................................................................................................... 102
Propiedades........................................................................................................................... 104
Mtodos y funciones.............................................................................................................. 113
Eventos principales del control CommandButton..................................................................115
Tomar la apariencia de los temas de windows para los botones............................................119
Propiedad Value del OptionButton...................................................................................... 120

Otro ejemplo del control OptionButton:.............................................................................. 121


Ejemplo para crear un OptionButton con grficos..............................................................123
Enlaces relacionados.......................................................................................................... 124
Tema 3.- funcionamiento de mdulos........................................................................................ 124
Tema 4.- Alcances posibles..................................................................................................... 158
Tema 5.- obtencin de resultados............................................................................................. 158
Conclusiones:....................................................................................................................... 158
Bibliografa:........................................................................................................................... 158

Implementacin de un sistema de control aplicando un software para calculo y balanceo de lneas


elctricas de media y baja tensin

Introduccin

Tema 1.Analisis de la funcin de la norma.


La Norma Oficial Mexicana para el acondicionamiento de Instalacines elctricas NOM-001SEDE-2001 es una norma que te permite adecuar los materiales elctricos de manera precisa
mediante acuerdos hechos por Investigacines de area cientfica que permiten al usuario
construir establecimientos con condiciones elctricas segn acuerdos entre distintas compaas
del ramo elctrico las cuales son las siguientes:
Nota: cabe aclarar que debido a lo extenso que es la norma, solo se tomaran los elementos
necesarios en los que se alcanz a hacer nuestro programa para lo que la empresa
TECNLOGOS CONSTRUCTORES S.A. DE C.V. solicit, debido a que es un proyecto de
largo alcance, solo se mencionara los logros de nuestro trabajo como fase beta.
- Asociacin Mexicana de Directores Responsables de Obra y Corresponsables, AMDROC
- Asociacin Mexicana de Empresas del Ramo de Instalaciones para la Construccin, AMERIC
- Asociacin de Normalizacin y Certificacin, A.C., ANCE - Cmara Nacional de la Industria de
Desarrollo y Promocin de Vivienda, CANADEVI
- Cmara Nacional de la Industria de la Transformacin, CANACINTRA - Cmara Nacional de
Manufacturas Elctricas, CANAME
10

(Primera Seccin-Vespertina) DIARIO OFICIAL Jueves 29 de noviembre de 2012

- Confederacin de Cmaras Nacionales de Comercio, Servicios y Turismo, CONCANACO


- Comisin Federal de Electricidad, CFE - Comisin Nacional para el Uso Eficiente de la Energa,
CONUEE - Confederacin de Cmaras Industriales de los Estados Unidos Mexicanos,
CONCAMIN
- Comisin Nacional de Vivienda, CONAVI
- Federacin de Colegios de Ingenieros Mecnicos y Electricistas de la Repblica Mexicana,
FECIME - Instituto de Investigaciones Elctricas, IIE
- Instituto Politcnico Nacional, IPN - Petrleos Mexicanos, PEMEX
- Procuradura Federal del Consumidor, PROFECO
- Secretara de Economa, SE
- Secretara de Gobernacin, SEGOB
- Secretara de Salud, SALUD
- Secretara del Trabajo y Previsin Social, STPS
- Secretara de Turismo, SECTUR.

La Norma tiene especificaciones para los siguientes tipos de materiales elctricos:

TITULO 5. ESPECIFICACIONES
CAPITULO 1 Disposiciones Generales
Artculo 100 Definiciones
Artculo 110 Requisitos de las instalaciones elctricas
CAPITULO 2 Alambrado y Proteccin
Artculo 200 Uso e identificacin de los conductores puestos a tierra
Artculo 210 Circuitos derivados
Artculo 215 Alimentadores
Artculo 220 Clculo de los circuitos derivados, alimentadores y acometidas
Artculo 225 Circuitos derivados y alimentadores exteriores
Jueves 29 de noviembre de 2012 DIARIO OFICIAL (Primera Seccin-Vespertina)

11

Artculo 230 Acometidas


Artculo 240 Proteccin contra sobrecorriente
Artculo 250 Puesta a tierra y unin
Artculo 280 Apartarrayos de ms de 1000 volts
Artculo 285 Supresores de sobretensiones transitorias de 1000 volts o menos (SSTT)

CAPITULO 3 Mtodos de Alambrado y Materiales


Artculo 300 Mtodos de alambrado
Artculo 310 Conductores para alambrado en general
Artculo 312 Gabinetes, cajas de desconexin y bases para medidores
Artculo 314 Cajas, cajas de paso y sus accesorios, utilizadas para salida, empalme, unin o
jalado Artculo 320 Cable armado Tipo AC
Artculo 322 Ensambles de cable plano Tipo FC
Artculo 324 Cable de conductor plano Tipo FCC Artculo
326 Cable con separador integrado de gas Tipo IGS
Artculo 328 Cable de media tensin
Artculo 330 Cable con armadura metlica Tipo MC

Artculo 332 Cable con aislamiento mineral y cubierta metlica Tipo MI


Artculo 334 Cable con forro no metlico Tipos NM, NMC y NMS
Artculo 336 Cables de fuerza y control para charola Tipo TC
Artculo 338 Cables de acometida Tipos SE y USE
Artculo 340 Cables para alimentadores y circuitos derivados subterrneos Tipo UF
Artculo 342 Tubo conduit metlico semipesado Tipo IMC
Artculo 344 Tubo conduit metlico pesado Tipo RMC
Artculo 348 Tubo conduit metlico flexible Tipo FMC
Artculo350 Tubo conduit metlico flexible hermtico a los lquidos Tipo LFMC
Artculo 352 Tubo conduit rgido de policloruro de vinilo Tipo PVC
Artculo 353 Tubo conduit de polietileno de alta densidad Tipo HDPE
Artculo 354 Tubo conduit subterrneo no metlico con conductores Tipo NUCC
Artculo 355 Tubo conduit de resina termofija reforzada Tipo RTRC
Artculo 356 Tubo conduit no metlico flexible hermtico a los lquidos Tipo LFNC
Artculo 358 Tubo conduit metlico ligero Tipo EMT
Artculo 360 Tubo conduit metlico flexible ligero Tipo FMT
Artculo 362 Tubo conduit no metlico Tipo ENT
Artculo 364 Tubo conduit de polietileno
Artculo 366 Canales auxiliares
Artculo 368 Electroductos o ductos con barras (Busway)
Artculo 370 Canalizaciones prealambradas
Artculo 372 Canalizaciones en pisos celulares de concreto
Artculo 374 Canalizaciones en pisos metlicos celulares
Artculo 376 Ductos metlicos
Artculo 378 Ductos no metlicos
Artculo 380 Ensamble multicontacto
Artculo 382 Extensiones no metlicas

Artculo 384 Canalizaciones de canal de tipo vigueta


Artculo 386 Canalizaciones metlicas superficiales
Artculo 388 Canalizaciones no metlicas superficiales
Artculo 390 Canalizaciones bajo el piso
Artculo 392 Charolas portacables
Artculo 394 Alambrado oculto sobre aisladores de porcelana y tubo
Artculo 396 Alambrado sostenido por cable mensajero
Artculo 398 Alambrado abierto sobre aisladores
Artculo 399 Conductores areos en exteriores de ms de 600 volts
12

(Primera Seccin-Vespertina) DIARIO OFICIAL Jueves 29 de noviembre de 2012


CAPITULO 4 Equipo de Uso General
Artculo 400 Cables y cordones flexibles
Artculo 402 Cables para artefactos
Artculo 404 Desconectadores
Artculo 406 Contactos, conectores de cordn y clavijas de conexin
Artculo 408 Tableros de distribucin y tableros de alumbrado y control Artculo
409 Tableros de control industrial
Artculo 410 Luminarias, portalmparas y lmparas
Artculo 411 Sistemas de alumbrado que funcionan a 30 volts o menos
Artculo 422 Aparatos
Artculo 424 Equipo elctrico fijo para calefaccin de ambiente
Artculo 426 Equipo elctrico fijo para descongelar y derretir nieve
Artculo 427 Equipo elctrico fijo para calentamiento de tuberas y recipientes
Artculo 430 Motores, circuitos de motores y controladores
Artculo 440 Equipos de aire acondicionado y de refrigeracin
Artculo 445 Generadores

Artculo 450 Transformadores y bvedas para transformadores (incluidos los enlaces del
secundario)

Artculo 455 Convertidores de fase


Artculo 460 Capacitores
Artculo 470 Resistencias y reactores
Artculo 480 Bateras de acumuladores
Artculo 490 Equipos de ms de 600 volts nominales

Como determinamos el tipo de calibre en base a la norma.


Todo entra en una tabla.
La Norma 310-16 es la indicada para poder determinar en base a la capacidad de corriente y se
calcula de la siguiente manera.

SELECCIN DEL CALIBRE DE UN CONDUCTOR ELCTRICO


EN TUBERA (CONDUIT) DE ACUERDO CON LA NORMA DE
INSTALACIONES ELCTRICAS NOM-001-SEDE-2005

La transmisin de energa elctrica en forma segura y eficiente depende de una correcta


seleccin del calibre del conductor.

La capacidad de conduccin de corriente de los conductores elctricos depende de muchos


factores, entre los cuales podemos mencionar los siguientes: tipo de instalacin (Conduit,
charola, ducto subterrneo, etc.), del arreglo de los conductores (plano, trbol, etc.), de la
temperatura de operacin de los conductores seleccionados, de la longitud del circuito, etc.
Debido a lo anterior, se debe realizar un estudio completo de la instalacin elctrica diseada.

A continuacin se indica como calcular la capacidad de conduccin de corriente para


conductores elctricos en tubera conduit de acuerdo con la norma de instalaciones elctricas
NOM-001-SEDE-2005, la cual no intenta ser una gua de diseo, ni un manual de
instrucciones para personas no calificadas.

10

1. Elegir el tipo de producto requerido en funcin de su aplicacin, materiales, construccin y


temperatura del conductor. Se recomienda consultar el catlogo Latincasa de Alambres y
Cables de Baja Tensin para Construccin y Distribucin.
2. Determinar la corriente nominal de la carga, utilizando las frmulas indicadas en la tabla
siguiente, de acuerdo con el tipo de sistema elctrico (de corriente continua, de corriente
alterna monofsico o trifsico) y del tipo de carga (motores, alumbrado u otras cargas).

11

12

Donde:

CP (HP) = Caballos de fuerza o potencia del


motor kW = Potencia en kilowatt
V = Tensin nominal del sistema en Volts
= Eficiencia del motor (Valor tpico 0,8)
fp = Factor de potencia (Valor tpico 0,9)

NOTA: Para conductores que alimenten un solo motor, la corriente nominal a plana carga se
multiplicar por 1,25 (artculo 430-22). En el caso de varios motores, a la suma de la corriente a plena
carga de los motores se le sumar el 25% de la corriente del motor ms grande (artculo 430-24).

3. Seleccionar el calibre del conductor de acuerdo con su capacidad de conduccin de corriente


del cable, que depende del tipo del aislamiento, de la temperatura de operacin y del mtodo
de instalacin, utilizando la Tabla 1.
NOTA: De acuerdo al artculo 110-14 de la NOM-001-SEDE-2005, si la corriente en el circuito
es mayor a 100 A, se elige la capacidad de corriente a una temperatura de operacin del
conductor de 75C. Si la corriente del circuito es menor de 100 A, se elige la capacidad de
corriente a una temperatura de operacin del conductor de 60C.

13

Tabla 1. Capacidad de conduccin de corriente (A) permisible de conductores aislados para 0


a 2000 V nominales y 60C a 90C. No ms de tres conductores portadores de corriente en una
canalizacin o directamente enterrados, para una temperatura ambiente de 30C.

Temperatura nominal del conductor


Calibre

AWG

rea de

60C

75C

90C

60C

75C

90C

la seccin

TW

THW, RHW

RHH, RHW-2

UF

RHW

RHW-2

transversal

TWD

THW-LS

THHN, THW-2

XHHW

XHHW

nominal

CCE

THWN

THHW-LS,

XHHW-2

XHHW

XHHW-2

DRS

O
2

Kcmil

mm

14

2,08

20*

20*

25*

12

3,31

25*

25*

30*

10

5,26

30

35*

40*

8,37

40

50

55

13,3

55

65

75

40

50

60

21,2

70

85

95

55

65

75

33,6

95

115

130

75

90

100

1/0

53,5

125

150

170

100

120

135

2/0

67,4

145

175

195

115

135

150

3/0

85,0

165

200

225

130

155

175

4/0

107

195

230

260

150

180

205

250

127

215

255

290

170

205

230

300

152

240

285

320

190

230

255

350

177

260

310

350

210

250

280

400

203

280

335

380

225

270

305

Cobre

Aluminio

14

500

253

320

380

430

260

310

350

600

304

355

420

475

285

340

385

750

380

400

475

535

320

385

435

1000

507

455

545

615

375

445

500

* A menos que se permita otra cosa especficamente en otro lugar de esta norma, la proteccin contra
sobrecorriente de los conductores marcados con un asterisco (*), no se debe superar 15 A para 14 AWG, 20 A
para 12 AWG y 30 A para 10 AWG, todos de cobre.

15

4. Una vez elegido el calibre del conductor, corregir la capacidad de conduccin de corriente
tomada de la Tabla 1, en funcin de la temperatura ambiente del lugar de instalacin, para ello
se multiplica por el factor de correccin que se indica en la Tabla 2.

Tabla 2. Factores de correccin por temperatura

Temperatura ambiente en el
lugar de la instalacin

60C

75C

90C

21 25

1,08

1,05

1,04

26 30

1,00

1,00

1,00

31 35

0,91

0,94

0,96

36 40

0,82

0,88

0,91

41 45

0,71

0,82

0,87

46 50

0,58

0,75

0,82

51 55

0,41

0,67

0,76

5. Si existen ms de 3 conductores en tubera (conduit) portadores de corriente, corregir la


capacidad de conduccin de corriente multiplicando sta por los factores de la Tabla 3.

16

Tabla 3. Factores de ajuste para ms de tres conductores portadores


de corriente en una canalizacin o cable

Cantidad de conductores

Factor de correccin por

portadores de corriente elctrica

agrupamiento

De 4 a 6

0,80

De 7 a 9

0,70

De 10 a 20

0,50

De 21 a 30

0,45

De 31 a 40

0,40

De 41 y ms

0,35

17

6. Calcular la cada de tensin de la instalacin utilizando las frmulas siguientes:

Circuitos Monofsicos

Circuitos Trifsicos

x 100

x 100

Donde:
V = Cada de tensin en el cable, en %
I = Corriente elctrica que circula a travs del
conductor, en A L = Longitud total del circuito, en km
Vo = Tensin de fase a neutro, en
V Vff = Tensin entre fases, en V

Z = Impedancia elctrica del cable, en /km

La impedancia elctrica del cable Z, expresada en ohm/km, est dada por la siguiente frmula:

Z = RCos + XLSen

En forma aproximada sin considerar el factor de potencia (fp) la impedancia (Z) puede ser
calculada con la frmula siguiente:

18

Z = R + XL

Donde:
R = Resistencia del conductor a la c.a. y a la temperatura de operacin,
en /km XL = Reactancia inductiva del conductor, en /km
fp = Cos
= Es el ngulo del factor de potencia (fp)

19

La siguiente tabla contiene la resistencia en corriente alterna a 75C, la reactancia inductiva y la impedancia para
cables de 600 V. Tres cables monopolares en un mismo tubo (conduit).

Tabla 4. Parmetros electricos generales de cables en tubo (conduit)

Ohms al neutro / km
Reactancia inductiva

Resistencia a la c.a.

Resistencia a la c.a.

Impedancia (Z) de

Impedancia (Z) de

(XL) para todos los

a 75C de conductores

a 75C de conductores

conductores de cobre

conductores de aluminio

conductores

de cobre

de aluminio

fp=0,9

fp=0,9

Ohm/km

Ohm / km

Ohm / km

Ohm / km

Ohm / km

Calibre

AWG

Conduit

Conduit

de PVC o

de

de

de

de

de

de

de

de

de

de

de

de

de

kcmil

aluminio

acero

PVC

aluminio

acero

PVC

aluminio

acero

PVC

aluminio

acero

PVC

aluminio

acero

14

0.190

0.240

10.2

10.2

10.2

9.3

9.3

9.3

12

0.177

0.223

6.6

6.6

6.6

6.0

6.0

6.0

10

0.164

0.207

3.9

3.9

3.9

3.6

3.6

3.6

0.171

0.213

2.56

2.56

2.56

2.38

2.38

2.40

0.167

0.210

1.61

1.61

1.61

2.66

2.66

2.66

1.52

1.52

1.54

2.47

2.47

2.49

0.157

0.197

1.02

1.02

1.02

1.67

1.67

1.67

0.99

0.99

1.00

1.57

1.57

1.59

0.148

0.187

0.62

0.66

0.66

1.05

1.05

1.05

0.62

0.66

0.68

1.01

1.01

1.03

1/0

0.144

0.180

0.39

0.43

0.39

0.66

0.69

0.66

0.41

0.45

0.43

0.66

0.68

0.67

2/0

0.141

0.177

0.33

0.33

0.33

0.52

0.52

0.52

0.36

0.36

0.37

0.53

0.53

0.55

3/0

0.138

0.171

0.253

0.269

0.259

0.43

0.43

0.43

0.288

0.302

0.308

0.45

0.45

0.46

4/0

0.135

0.167

0.203

0.22

0.207

0.33

0.36

0.33

0.242

0.257

0.259

0.36

0.38

0.37

250

0.135

0.171

0.171

0.187

0.177

0.279

0.295

0.282

0.213

0.227

0.234

0.310

0.324

0.328

300

0.135

0.167

0.144

0.161

0.148

0.233

0.249

0.236

0.188

0.204

0.206

0.269

0.283

0.285

Conduit Conduit

Conduit Conduit Conduit

20

Conduit Conduit Conduit

Conduit Conduit Conduit Conduit

350

0.131

0.164

0.125

0.141

0.128

0.200

0.217

0.207

0.170

0.184

0.187

0.237

0.252

0.258

400

0.131

0.161

0.108

0.125

0.115

0.177

0.194

0.180

0.154

0.170

0.174

0.216

0.232

0.232

500

0.128

0.157

0.089

0.105

0.095

0.141

0.157

0.148

0.136

0.150

0.154

0.183

0.197

0.202

600

0.128

0.157

0.075

0.092

0.082

0.118

0.135

0.125

0.123

0.139

0.142

0.162

0.177

0.181

750

0.125

0.157

0.062

0.079

0.069

0.095

0.112

0.102

0.110

0.126

0.131

0.140

0.155

0.160

1000

0.121

0.151

0.049

0.062

0.059

0.075

0.089

0.082

0.097

0.109

0.119

0.120

0.133

0.140

La NOM-001-SEDE-2005 indica que la cada de tensin mxima permitida en la instalacin tomando en


consideracin los cables del circuito alimentador y del circuito derivado, no debe ser mayor del 5%.

Para el caso del circuito derivado, la cada de tensin no deber ser mayor de 3% y debe considerarse una cada
de tensin mxima de 2% para el circuito alimentador.

Si la cada de tensin resultante del clculo es mayor a lo anterior, debemos considerar un calibre mayor, volver
a realizar los clculos y verificar que se cumplan los porcentajes de cada de tensin sugeridos.

21

7. De acuerdo a NOM-001-SEDE-2005 es necesario instalar el conductor de puesta a


tierra de equipos en todos los alambrados. Para seleccionar el calibre de puesta a
tierra de equipos nos basaremos en la Tabla 5, la cual indica el calibre mnimo para la
puesta a tierra de canalizaciones y equipos.

Tabla 5. Tamao nominal mnimo de los


conductores de puesta a
tierra para canalizaciones y
equipos

Capacidad o ajuste del dispositivo


automtico de proteccin contra

Tamao nominal mm2

sobrecorriente en el circuito antes

(AWG o kcmil)

de los equipos, canalizaciones, etc.


Sin exceder de
(A)

Cable de Cobre Cable de Aluminio

15

2,08 (14)

--

20

3,31 (12)

--

30

5,26 (10)

--

40

5,26 (10)

--

60

5,26 (10)

--

100

8,37 (8)

13,3 (6)

200

13,3 (6)

21,2 (4)

22

300

21,2 (4)

33,6 (2)

400

33,6 (2)

42,4 (1)

500

33,6 (2)

53,5 (1/0)

600

42,4 (1)

67,4 (2/0)

800

53,5 (1/0)

85,0 (3/0)

1000

67,4 (2/0)

107 (4/0)

Nota: Los conductores de puesta a tierra de los equipos podran ser


de mayor tamao que lo especificado en esta tabla.

Este conductor de puesta a tierra de equipos puede ser conductor desnudo o


aislado. Si es aislado, el color de identificacin del aislamiento debe ser verde.

Tema 2.- caractersticas del programador.


Como funciona:
Es un lenguaje de fcil aprendizaje pensado tanto para programadores
principiantes como expertos, guiado por eventos, y centrado en un motor de
formularios que facilita el rpido desarrollo de aplicaciones grficas. Su sintaxis,
derivada del antiguo BASIC, ha sido ampliada con el tiempo al agregarse las
caractersticas tpicas de los lenguajes estructurados modernos. Se ha agregado
una implementacin limitada de la programacin orientada a objetos (los propios
formularios y controles son objetos), aunque s admite el polimorfismo mediante el
uso de los Interfaces, no admite la herencia. No requiere de manejo de punteros y
posee un manejo muy sencillo de cadenas de caracteres. Posee varias bibliotecas
para manejo de bases de datos, pudiendo conectar con cualquier base de datos a
travs de ODBC (Informix, DBase, Access, MySQL, SQL Server, PostgreSQL ,etc)
a travs de ADO.

Es utilizado principalmente para aplicaciones de gestin de empresas, debido a la


rapidez con la que puede hacerse un programa que utilice una base de datos
sencilla, adems de la abundancia de programadores en este lenguaje.
23

El compilador de Microsoft genera ejecutables que requieren una DLL para que
funcionen, en algunos casos llamada MSVBVMxy.DLL (acrnimo de "MicroSoft
Visual Basic Virtual Machine x.y", siendo x.y la versin) y en otros
VBRUNXXX.DLL ("Visual Basic Runtime X.XX"), que provee todas las funciones
implementadas en el lenguaje. Adems existen un gran nmero de bibliotecas
(DLL) que facilitan el acceso a muchas funciones del sistema operativo y la
integracin con otras aplicaciones. Sin embargo esto slo es una limitacin en
sistemas obsoletos, ya que las bibliotecas necesarias para ejecutar programas en
Visual Basic vienen de serie en todas las versiones de Windows desde Windows
2000.1

Cmo se... (referencia de VBA para Excel)


Office 2013

Este tema contiene vnculos a tareas de programacin (temas del tipo "Cmo..." y gua paso
a paso) para escenarios comunes de Excel.
Los temas de procedimientos son la puerta de enlace a temas importantes basados en tareas
relacionadas con la programacin y el desarrollo de aplicaciones mediante Excel. En este
tema se incluyen las principales categoras de las acciones que se pueden realizar en Excel.
Estos vnculos dirigen a temas de Ayuda importantes basados en procedimientos.

Libros y hojas de clculo

Agregar una tabla de contenido a un libro


o

Crear etiquetas de direcciones desde una hoja de clculo


o

Describe cmo tomar una lista de direcciones dispuestas como una direccin
por fila y disponerlas para que entren en etiquetas de direcciones para
imprimir.

Crear un libro de calendario de programacin


o

Describe cmo aadir una hoja de clculo de tabla de contenido a un libro.

Describe cmo usar informacin en un libro para crear un libro de


calendario de programacin que contiene un mes por hoja de clculo y que
puede incluir festivos y das de la semana.

Procedimientos para crear un libro


24

Crear o reemplazar una hoja de clculo


o

Explica cmo hacer referencia a hojas por nmero de ndice.

Procedimientos para hacer referencia a las hojas por nombre


o

Se explica cmo hacer referencia a ms de una hoja en Excel.

Procedimientos para hacer referencia a hojas por nmero de ndice


o

Describe cmo nombrar una hoja de clculo segn el valor de una celda.

Procedimientos para hacer referencia a varias hojas


o

Describe cmo crear o reemplazar una hoja de clculo en un libro existente.

Nombrar una hoja de clculo con un valor de celda


o

Se explica cmo crear un libro con Excel.

Explica cmo hacer referencia a hojas por nombre.

Ordenar las hojas de clculo alfabticamente por nombre


o

Describe cmo ordenar hojas de clculo en un libro de forma alfanumrica


por nombre.

Macros y el Editor de Visual Basic

Ahora que ya conoce en parte cmo Microsoft Excel 2010 expone su modelo de objetos,
puede intentar llamar a los mtodos de un objeto y establecer las propiedades del objeto.
Para hacerlo, debe escribir el cdigo en un lugar y de una manera que Office pueda
comprender; generalmente, mediante el uso del Editor de Visual Basic. Aunque se instala
de forma predeterminada, muchos usuarios ni siquiera saben que est disponible hasta que
no se habilita en la cinta de opciones.
Ficha Programador

Todas las aplicaciones de Office 2010 usan la cinta de opciones. La ficha Programador es
una de las fichas incluidas en la cinta de opciones, donde se puede tener acceso al Editor de
Visual Basic y a otras herramientas de programador. Debido a que Office 2010 no muestra
25

la ficha Programador de manera predeterminada, debe habilitarla mediante el siguiente


procedimiento:
Para habilitar la ficha Programador

1. En la ficha Archivo, elija Opciones para abrir el cuadro de dilogo Opciones de


Excel.
2. Haga clic en Personalizar cinta de opciones en el lado izquierdo del cuadro de
dilogo.
3. En Comandos disponibles en:, en el lado izquierdo del cuadro de dilogo,
seleccione Comandos ms utilizados.
4. En Personalice esta cinta de opciones, en el lado derecho del cuadro de dilogo,
seleccione Fichas principales y, a continuacin, active la casilla de verificacin
Programador.
5. Haga clic en Aceptar.
Despus de que Excel muestre la ficha Programador, observe la ubicacin de los botones
Visual Basic, Macros y Seguridad de macros en la ficha.
Figura 1. Ficha Programador en Excel 2010

Problemas de seguridad

Haga clic en el botn de Seguridad de macros para especificar qu macros pueden


ejecutarse y en qu condiciones. Aunque el cdigo de macros de sistemas no confiables
puede daar gravemente el equipo, las condiciones de seguridad que impiden ejecutar
macros tiles pueden disminuir en gran medida la productividad. La seguridad de macros es
un tema complejo que se debe estudiar y comprender, si se trabaja con macros de Excel.
Para el propsito de este artculo, tenga en cuenta que si la barra Advertencia de seguridad:
las macros se han deshabilitado aparece entre la cinta de opciones y el libro, cuando abre un
26

libro que contiene una macro, puede hacer clic en el botn Habilitar contenido para
habilitar las macros.
Adems, como medida de seguridad, no puede guardar una macro en el formato de archivo
predeterminado de Excel (.xlsx); debe guardar la macro en un archivo con extensin
especial (.xlsm).
Editor de Visual Basic

El siguiente procedimiento muestra cmo crear un nuevo libro en blanco donde se


almacenarn las macros. A continuacin, podr guardar el libro con el formato .xlsm.
Para crear un nuevo libro en blanco

1. Haga clic en el botn Macros, de la ficha Programador.


2. En el cuadro de dilogo Macro que aparece, escriba Hello en Nombre de macro.
3. Haga clic en el botn Crear para abrir el Editor de Visual Basic que incluir los
esquemas de una nueva macro ya escritos.
VBA es un lenguaje de programacin completo y, en consecuencia, tiene un entorno de
programacin completo. En este artculo solo se estudian las herramientas que se usan para
empezar a trabajar en programacin sin incluir la mayora de las herramientas del Editor de
Visual Basic. Realizada esta salvedad, cierre la ventana Propiedades en el lado izquierdo
del Editor de Visual Basic e ignore las dos listas desplegables que aparecen sobre el cdigo.
Figura 2. Editor de Visual Basic

El Editor de Visual Basic contiene el siguiente cdigo.


VB

27

Sub Hello()
End Sub

Sub se refiere a Subrutinaque, por el momento, se puede definir como "macro". Al ejecutar
la macro Hello se ejecuta cualquier cdigo que se encuentre entre Sub Hello() y End Sub.
Ahora, edite la macro para que tenga un aspecto similar al siguiente cdigo.
VB

Sub Hello()
MsgBox ("Hello, world!")
End Sub

Vuelva a la ficha Programador en Excel y haga clic de nuevo en el botn Macros.


Seleccione la macro Hello en la lista que aparece y, a continuacin, haga clic en Ejecutar
para mostrar un cuadro de mensaje pequeo que contiene el texto "Hello, world!".
Acaba de crear e implementar correctamente cdigo de VBA personalizado en Excel. Haga
clic en Aceptar en el cuadro de mensaje para cerrarlo y terminar de ejecutar la macro.
Si no aparece el cuadro de mensaje, compruebe la configuracin de seguridad de la macro y
reinicie Excel.2

Un ejemplo real
Supongamos que tiene un libro que contiene listas en una gran cantidad de hojas de clculo
y que desea cambiar el nombre de cada hoja de clculo para que coincida con el
encabezado de la lista de esa hoja de clculo. No todas las hojas de clculo contienen una
lista. Si una hoja de clculo tiene una lista, el encabezado est en la celda B1, de lo
contrario, si no tiene una lista, la celda B1 est en blanco. Los nombres de hojas de clculo
sin listas no deben modificarse.
Normalmente, esto podra tratarse de una tarea compleja que implica ver cada hoja de
clculo para saber si tiene una lista, copiar el nombre de la lista en caso de que exista, hacer
clic en la ficha de hoja de clculo y luego pegar el nuevo nombre. En lugar de realizar todos
estos pasos manualmente, use VBA de Excel para cambiar el nombre de las hojas de forma
automtica.

28

Aprendizaje sobre objetos

Para resolver un problema de programacin de VBA, primero debe saber qu objetos


manipular el cdigo. Para investigar y conocer esa informacin, una herramienta esencial
es la referencia del modelo de objetos de Excel, que forma parte de la referencia del
programador de Excel 2007 en Microsoft Developer Network (MSDN).
Estos materiales de referencia se actualizarn para Excel 2010 cuando la herramienta est
disponible al pblico; sin embargo, la referencia del programador de Excel 2007 se adecua
a la mayora de los casos de Excel 2010.
Figura 3. Referencia del modelo de objetos de Excel en MSDN

El primer paso consiste en averiguar cmo manipular los objetos concretos con los que
necesita trabajar para llevar a cabo su tarea; por ejemplo, hojas de clculo, nombres de hoja
de clculo, celdas y contenidos de celdas. En Excel, hay al menos dos formas de enfocar el
problema:

Ir directamente a la referencia del modelo de objetos.

29

Grabar algunas de las acciones que se desean automatizar, ver cmo el cdigo
grabado manipula los objetos y, a continuacin, ir a la referencia del modelo de
objetos para obtener ms informacin.

Las opiniones varan con respecto a qu enfoque es preferible, pero por ahora, intente
primero usar la grabadora de macros.
Uso de la grabadora de macros

A veces una simple macro grabada es todo lo que se necesita; en estos casos, incluso, no es
necesario mirar el cdigo. Por lo general, la grabacin por s sola no es suficiente, pero s,
un punto de inicio en el siguiente proceso.
Para usar la grabadora de macros como punto de inicio de la solucin

1. Grabe las acciones que desea codificar.


2. Revise el cdigo y busque las lneas que realizan esas acciones.
3. Elimine el resto del cdigo.
4. Modifique el cdigo grabado.
5. Agregue variables, estructuras de control y otro cdigo que la grabadora de macros
no pueda grabar.
Comience su investigacin con la grabacin de una macro que cambie el nombre de una
hoja de clculo a New Name. Despus podr usar la macro grabada para crear su propia
macro que cambie el nombre de varias hojas de clculo segn su contenido.
Para grabar una macro que cambie el nombre de una hoja de clculo

1. Haga clic en Grabar macro en la ficha Programador.


2. Coloque el nombre RenameWorksheets a la macro, cambie el nombre Sheet1 a New
Name y, a continuacin, haga clic en Detener grabacin.
3. Vaya a la ficha Programador o Ver, haga clic en el botn Macros y elija Editar para
abrir el Editor de Visual Basic.
En el Editor de Visual Basic, el cdigo debe verse similar al siguiente.
VB

30

Sub RenameWorksheets()
'
' RenameWorksheets Macro
'
'
Sheets("Sheet1").Select
Sheets("Sheet1").Name = "New Name"
End Sub

Las primeras cuatro lneas que aparecen despus de la lnea Sub son comentarios. Toda
lnea que comienza con un apstrofe es un comentario y no tiene efecto alguno sobre la
accin que ejecuta la macro. Los principales usos de los comentarios son los siguientes:

Facilitar la comprensin del cdigo, no solo para usted, sino para cualquier persona
que necesite modificarlo en el futuro.

Deshabilitar temporalmente una lnea de cdigo (se denomina marcar como


comentario).

Los cuatro comentarios en esta macro grabada no cumplen ningn propsito, por lo tanto,
elimnelos.
La siguiente lnea usa el mtodo Select para seleccionar el miembro Sheet1 del objeto de la
coleccin Sheets. En el cdigo de VBA, por lo general, no es necesario seleccionar objetos
antes de manipularlos, aunque eso es lo que hace la grabadora de macros. En otras palabras,
esta lnea de cdigo es redundante, por lo tanto, puede eliminarla.
La ltima lnea de la macro grabada modifica la propiedad Nombre del miembro Sheet1 de
la coleccin Sheets. Esta es la lnea que debe conservar.
Despus de realizar los cambios, el cdigo grabado ahora debe ser similar al siguiente.
VB

Sub RenameWorksheets()
Sheets("Sheet1").Name = "New Name"
End Sub

Vuelva a cambiar la hoja denominada New Name a Sheet1 de forma manual y, a


continuacin, ejecute la macro. El nombre debe volver a cambiar a New Name.

Modificacin del cdigo grabado


Ahora ha llegado el momento de investigar la coleccin Sheets que la grabadora de macros
us. El tema Sheets en la referencia del modelo de objetos incluye el siguiente texto.
31

"La coleccin Sheets puede contener los objetos Chart o Worksheet. Si necesita trabajar con
hojas de un solo tipo, consulte el tema de objetos para ese tipo de hoja".
Como est trabajando solo con Worksheets, entonces, cambie el cdigo para que se vea de
la siguiente forma.
VB

Sub RenameWorksheets()
Worksheets("Sheet1").Name = "New Name"
End Sub

Funcin de bucle

Una limitacin del cdigo en este punto es que solo realiza el cambio en una hoja de
clculo. Se puede agregar otra lnea para cada hoja de clculo cuyo nombre desea cambiar,
pero qu sucede si desconoce cuntas hojas de clculo hay o cules son sus nombres
actuales? Se necesita una forma de aplicar alguna regla para cada hoja de clculo del libro.
VBA tiene una construccin denominada bucle For Each que es ideal. El bucle For Each
examina cada elemento en un objeto de coleccin, como Worksheets, y se puede usar para
llevar a cabo una accin (como cambiar un nombre) en algunos o en todos esos elementos.
Para obtener ms informacin acerca del bucle For Each, consulte la referencia del lenguaje
de VBA. Haga clic en la seccin sobre los temas conceptuales de Visual Basic y, a
continuacin, en el tema sobre el uso de instrucciones For Each...Next. Adems, tenga en
cuenta que la referencia del lenguaje de VBA, como la referencia del modelo de objetos,
compensar ampliamente el tiempo que invierta examinndola, ya que es un lugar
excelente para buscar ideas si se estanca cuando trabaja con cdigo.
Use el tercer ejemplo del tema sobre el uso de instrucciones For Each...Next para modificar
la macro con el fin de que tenga un aspecto similar al siguiente cdigo.
VB

Sub RenameWorksheets()
For Each myWorksheet In Worksheets
myWorksheet.Name = "New Name"
Next
End Sub

myWorksheet es una variable, es decir, lo que representa vara. En este caso, la variable
myWorksheet representa sucesivamente cada hoja de clculo en la coleccin Worksheets.
No es necesario usar myWorksheet; se puede usar "x", "ws",
32

"HojaCalculoCambiarNombreAlContenidoCeldaB1" o (con algunas restricciones)


prcticamente cualquier nombre que se desee. Una buena regla es usar nombres de
variables que sean lo suficientemente extensos como para que recuerden a qu se refieren,
pero no tan extensos que puedan recargar el cdigo.
Si ejecuta la macro en su estado actual, se produce un error porque Excel requiere que cada
hoja de clculo de un libro tenga un nombre nico. Sin embargo, la lnea siguiente indica a
Excel que asigne a todas las hojas de clculo el mismo nombre.
VB

myWorksheet.Name = "New Name"

Para corregir la lnea y comprobar si el bucle For Each funciona, cambie la lnea de la
siguiente manera.
VB

myWorksheet.Name = myWorksheet.Name & "-changed"

En lugar de intentar dar el mismo nombre a cada hoja de clculo, esta lnea cambia el
nombre actual de cada hoja de clculo (myWorksheet.Name) anexando la palabra "changed" al nombre actual.
Cambio de nombre til

La macro se est acercando a lo que podra ser la solucin para el problema que tiene en
este momento. Lo que necesita ahora es tomar informacin de las hojas de clculo,
especficamente de la celda B1 de cada hoja, y colocar esa informacin en los nombres de
las hojas de clculo.
Esta vez, en vez de usar la grabadora de macros para averiguar cmo referirse a una celda,
pruebe y vea si usando el objeto Cell logra su objetivo. Es un buen intento, pero si abre la
referencia del modelo de objetos y busca el objeto Cell, notar que no existe ningn objeto
Cell. En cambio, hay un objeto CellFormat.
El tema del objeto CellFormat incluye el siguiente cdigo en el primer ejemplo de cdigo.
VB

' Set the interior of cell A1 to yellow.


Range("A1").Select

33

Resulta ser que usa Range para especificar un rango de celdas o simplemente una celda
individual. Nuevamente, no es necesaria la parte .Select, pero s es necesario averiguar
cmo hacer referencia a los contenidos del objeto Range, en oposicin al mismo objeto
Range. Si se dirige al tema del objeto Range, puede leer que Range tiene Methods y
Properties. Los contenidos de Range constituyen una cosa, no una accin, por lo que
probablemente sea una Property. Si busca hacia abajo en la lista, podr ver la propiedad
Value. Por lo tanto, intente lo siguiente.
VB

Sub RenameWorksheets()
For Each myWorksheet In Worksheets
myWorksheet.Name = myWorksheet.Range("B1").Value
Next
End Sub

Obtendr un error si ejecuta esto en un libro que contiene hojas de clculo donde la celda
B1 est vaca, porque Range vaco tiene un valor de "" (una cadena de texto vaca), que no
es un nombre de hoja de clculo vlido. De todas formas, ya es momento de crear algunos
datos de ejemplo. Haga que las tres hojas de clculo del libro tengan un aspecto similar al
de la siguiente figura y, a continuacin, ejecute la macro.
Figura 4. Datos de ejemplo para la macro RenameWorksheets

34

Los nombres de las hojas de clculo deben cambiar en consecuencia.


Bsqueda de celdas vacas

Como mencionamos anteriormente, la macro genera un error si alguna de las celdas B1 en


el libro est vaca. En lugar de revisar manualmente todas las hojas de clculo, puede
codificar la macro para que haga esto por usted. Antes de la lnea myWorksheet.Name,
agregue la siguiente lnea de cdigo.
VB

If myWorksheet.Range("B1").Value <> "" Then

Despus de la lnea myWorksheet.Name agregue el texto siguiente.


VB

End If

Esto se denomina una instruccin IfThen. La instruccin IfThen indica a Excel que
haga lo que se indica entre la lnea If y la lnea End, pero solo si se cumple la condicin en
la lnea If. En el ejemplo, la siguiente lnea especifica la condicin que se debe cumplir.
VB

myWorksheet.Range("B1").Value <> ""

La lnea <> significa "no es igual a" y las comillas sin contenido en su interior representan
una cadena de texto vaca, es decir, no hay texto en absoluto. Por lo tanto, cualquier lnea
de cdigo que est entre If y End se ejecutar nicamente si el valor de la celda B1 no es
igual a nada, es decir, si hay texto en la celda B1.
Para obtener ms informacin acerca de la instruccin IfThen, consulte la referencia del
lenguaje de VBA. (El nombre completo de la instruccin es "IfThenElse", donde Else
es un componente opcional).
35

Declaraciones de variables

Otra mejora que debe hacer en la macro es poner una declaracin de la variable
myWorksheet al principio de la macro.
VB

Dim myWorksheet As Worksheet

Dim es la abreviatura de "Dimension" y Worksheet es el tipo de esta variable en particular.


Esta instruccin indica a VBA qu tipo de entidad myWorksheet representa. Observe que
despus de escribir As, el Editor de Visual Basic muestra una ventana emergente que
incluye todos los tipos de variables disponibles. Eso es un ejemplo de la tecnologa
IntelliSense; es decir, que el Editor de Visual Basic responde a lo que determina que se est
intentando hacer y ofrece una lista de opciones apropiadas. Puede elegir una opcin de la
lista o seguir escribiendo.
Aunque las declaraciones de variables no son necesarias en VBA, su uso es muy
recomendable. Estas declaraciones hacen que el seguimiento de variables y errores en el
cdigo sean ms fciles de realizar. Asimismo, tenga en cuenta que si declara una variable
con un tipo de objeto (como Worksheet), IntelliSense mostrar una lista adecuada de
propiedades y mtodos asociados con ese objeto si usa esa variable de objeto ms adelante
en la macro.
Comentarios

La macro es lo suficientemente compleja ahora y se necesitaran incluir algunos


comentarios que recuerden lo que hace el cdigo. La cantidad de comentarios que se va a
usar en parte se debe a una cuestin de estilo personal, pero, en general, es mejor que sean
ms que menos. El cdigo generalmente necesita modificaciones y actualizaciones con el
tiempo. Sin comentarios, podra ser difcil comprender lo que sucede en el cdigo,
especialmente si la persona que lo modifica no es la misma persona que lo escribe en
primer lugar. Al agregar comentarios para la condicin If y para la lnea que cambia el
nombre de las hojas de clculo, se obtiene el siguiente cdigo.
VB

Sub RenameWorksheets()
Dim myWorksheet As Worksheet
For Each myWorksheet In Worksheets
'make sure that cell B1 is not empty
If myWorksheet.Range("B1").Value <> "" Then
'rename the worksheet to the contents of cell B1
myWorksheet.Name = myWorksheet.Range("B1").Value

36

End If
Next
End Sub

Para probar la macro, vuelva a cambiar el nombre de las hojas de clculo a Sheet1, Sheet2
y Sheet3, y elimine los contenidos de la celda B1 en una o ms hojas de clculo. Ejecute la
macro para comprobar si cambia los nombres de las hojas de clculo que tienen texto en la
celda B1 y si deja las otras hojas sin modificaciones. La macro funciona para cualquier
cantidad de hojas de clculo, con cualquier combinacin de celdas B1 llenas y vacas.

Ms cosas que se pueden hacer con VBA


Esta seccin estudia algunas otras cosas que se pueden hacer con VBA en Excel 2010. Los
ejemplos de esta seccin estn diseados para proporcionar una idea de las funciones de
VBA en lugar de centrarse en escenarios reales especficos. A medida que trabaja con los
ejemplos, quiz le resulte til repasar informacin sobre los objetos en cada paso. Puede
encontrar esta informacin en la referencia del modelo de objetos.
Importancia de una actitud abierta

Una buena forma de aprender programacin en general, y VBA de Excel en particular, es


adoptar una estrategia que implique intentar algo, ver si funciona y preguntarse cosas como:

Qu podra intentar hacer a continuacin?

Qu deseo aprender en primer lugar segn el uso que necesito darle a VBA?

Qu puede ser simplemente divertido o interesante saber?

Qu despierta mi curiosidad?

Se recomienda encarecidamente al lector que investigue todos los caminos que se abren
hacia la ruta del conocimiento.
Grficos

Una tarea comn en Excel es crear un grfico basado en un rango de celdas. Cree una
nueva macro llamada AssortedTasks y, a continuacin, escriba el siguiente texto en el
Editor de Visual Basic.
VB

Dim myChart As ChartObject

Agregue una lnea para crear el objeto de grfico y asgnele la variable myChart.
37

VB

Set myChart = ActiveSheet.ChartObjects.Add(100, 50, 200, 200)

Los nmeros en los parntesis determinan la posicin y el tamao del grfico. Los primeros
dos nmeros son las coordenadas de la esquina superior izquierda y los segundos dos
nmeros corresponden al ancho y alto.
Cree una nueva hoja de clculo en blanco y ejecute la macro. El grfico que se crea no sirve
porque no tiene datos. Elimine el grfico que acaba de crear y agregue las siguientes lneas
al final de la macro.
VB

With myChart
.Chart.SetSourceData Source:=Selection
End With

Este es un patrn comn en la programacin de VBA. Primero crea un objeto, le asigna una
variable y, a continuacin usa la construccin WithEnd With para realizar tareas con el
objeto. El cdigo de ejemplo le indica al grfico que use la seleccin actual para sus datos.
(Selection es un valor para el parmetro Source del mtodo SetSourceData, no un valor de
una propiedad del objeto; por lo tanto, la sintaxis de VBA requiere que use dos puntos y el
signo igual [:=] en lugar de usar solo el signo igual [=] para asignar el valor.)
Escriba algunos nmeros en las celdas A1:A5, seleccione las celdas y, a continuacin,
ejecute la macro. El grfico se muestra como el tipo predeterminado, un grfico de barras.
Figura 5. Grfico de barras creado mediante VBA

38

Si no le gusta el grfico de barras, puede cambiar a algn otro tipo de grfico usando
cdigo similar al siguiente.
VB

With myChart
.Chart.SetSourceData Source:=Selection
.Chart.ChartType = xlPie
End With

xlPie es un ejemplo de una constante integrada, tambin conocida como constante


enumerada. Toda la aplicacin Excel tiene varias de estas constantes que se encuentran muy
bien documentadas. Para obtener ms informacin acerca de las constantes integradas,
consulte la seccin sobre enumeraciones de la referencia del modelo de objetos. Por
ejemplo, las constantes para tipos de grfico se indican en la seccin sobre enumeraciones
XlChartType.

39

Los datos se pueden modificar. Por ejemplo, intente agregar esta lnea justo despus de la
declaracin de variable.
VB

Application.ActiveSheet.Range("a4").Value = 8

Puede obtener una entrada de usuario y usar esa entrada para modificar los datos.
VB

myInput = InputBox("Please type a number:")


Application.ActiveSheet.Range("a5").Value = myInput

Por ltimo, agregue las lneas siguientes al final de la macro.


VB

ActiveWorkbook.Save
ActiveWorkbook.Close

La macro completa debera ser similar a la siguiente.


VB

Sub AssortedTasks()
Dim myChart As ChartObject
Application.ActiveSheet.Range("a4").Value = 8
myInput = InputBox("Please type a number:")
Application.ActiveSheet.Range("a5").Value = myInput
Set myChart = ActiveSheet.ChartObjects.Add(100, 50, 200, 200)
With myChart
.Chart.SetSourceData Source:=Selection
.Chart.ChartType = xlPie
End With
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub

Compruebe que las celdas A1:A5 sigan estando seleccionadas, ejecute la macro, escriba un
nmero en el cuadro de entrada y, a continuacin, haga clic en Aceptar. El cdigo guarda y
cierra el libro. Vuelva a abrir el libro y observe el cambio en el grfico circular.
UserForms

La seccin anterior mostraba cmo usar un cuadro de entrada sencillo para obtener una
entrada de usuario. Adems del correspondiente cuadro de mensaje que muestra
40

informacin, VBA proporciona amplias funcionalidades que puede usar para crear cuadros
de dilogo personalizados, para codificar controles que se colocan directamente en las hojas
de clculo o para manipular los cuadros de dilogo que estn integrados en Excel. Para
obtener ms informacin acerca de estas funcionalidades, consulte controles, cuadros de
dilogo y formularios en la referencia del programador de Excel 2007.
Esta seccin completa la introduccin a VBA en Excel presentando un panorama general de
UserForms.
En la ficha Programador, haga clic en el botn Visual Basic para abrir el Editor de Visual
Basic y, a continuacin, vaya al men Insertar y elija UserForm para abrir la vista Diseo
de UserForm.
Ver dos ventanas. Una representa el UserForm que est creando y la otra, el Cuadro de
herramientas, muestra los distintos controles que puede agregar a su UserForm; por
ejemplo, botones de comandos, botones de opciones, casillas de verificacin, entre otros.
Puede mover el mouse sobre un control del Cuadro de herramientas para ver qu tipo de
control crea.
Cree un UserForm muy sencillo con un solo botn que ejecute la macro Hello que creamos
al comienzo de este artculo. En el Cuadro de herramientas, presione el control
CommandButton y, a continuacin, arrstrelo al UserForm para crear un botn de
comando. Haga clic con el botn secundario en el botn de comando y elija Ver cdigo.
La Sub que aparece es un esqueleto para un procedimiento de evento que se ejecuta cuando
se produce un evento en particular. En este caso, como el nombre de Sub indica, el evento
que ejecuta el cdigo es un Click en CommandButton1. Agregue la siguiente lnea al
procedimiento de evento.
VB

Run("Hello")

El Editor de Visual Basic debe ser ahora similar al siguiente.


Figura 6. Procedimiento de evento CommandButton1_Click

41

Guarde el libro, vaya al men Ventana y elija UserForm1 (UserForm) para volver a mostrar
el UserForm. Haga clic en la flecha verde de la barra de herramientas para ejecutar el
UserForm. Cuando aparece el cuadro de dilogo, haga clic en el botn de comando para
ejecutar la macro Hello, que muestra el cuadro de mensaje "Hello, world!". Cierre el cuadro
de mensaje para volver al UserForm que se ejecuta y, a continuacin, cierre el UserForm
que se ejecuta para volver a la Vista Diseo.

Qu sigue?
Es posible que la informacin que se brinda en este artculo, combinada con un poco de
experimentacin y tiempo de estudio de la referencia del modelo de objetos y la referencia
del lenguaje de VBA, le resulte lo suficientemente til como para lograr cualquier tarea que
lo impulsa a empezar a aprender sobre VBA. Si es as, excelente. De lo contrario, un buen
paso es ampliar sus expectativas hacia un conocimiento ms general de VBA.
Una manera de aprender ms sobre VBA es estudiar cdigo activo. Adems de los ejemplos
proporcionados en la referencia del modelo de objetos y la referencia del lenguaje de VBA,
hay una cantidad enorme de cdigo de VBA en Excel disponible en distintas fuentes en
lnea, incluidos los artculos en MSDN, sitios web desarrollados por los profesionales ms
valiosos de Microsoft (MVP) que se especializan en Excel y otros sitios web que puede
encontrar mediante una bsqueda rpida en Web.
El cdigo de estos recursos puede ayudarlo a resolver problemas inmediatos de
programacin y proporcionarle ideas para proyectos que ni siquiera ha pensado an.
Si prefiere realizar un estudio ms sistemtico de VBA, pueden encontrar varios libros
sobre VBA, as como varias revisiones de cada uno de estos libros disponibles en Web que
pueden ser tiles para elegir su mejor forma de aprendizaje.
42

Caractersticas principales de Visual Basic


La facilidad que nos da este programa es el de arrastrar todos los objetos que
necesitemos incluir en nuestros programas, as nos evitamos el trabajo de
programar algo ms, lo nico que tenemos que hacer es declar que es lo que tiene
que hacer nuestro objeto.
Componentes, caractersticas fsicas o entorno de Visual Basic
Unos de los componentes de Visual Basic es la barra de ttulo, donde nos muestra
el nombre del proyecto y del formulario que se est haciendo.
La barra de mens, es donde se agrupan los mens de Visual Basic.
La barra de herramientas estndar de Visual Basic es otro componente de Visual
Basic es donde tienen agrupaos los botones utilizados con frecuencia, as
evitando poner en men, archivo, etc.

La barra de herramientas no estndar, dentro de visual Basic es donde se agrupan


la gran mayora de objetos y controles que se incluirn en nuestro proyecto.

43

La ventana de propiedades dentro de lo que es Visual Basic es donde podemos


ver las caractersticas modificables y no modificables del mismo.

La ventana de posicin de los formularios, ah podemos ver la ubicacin de cada


uno de los formularios al momento de la ejecucin del programa, los podemos
ubicar a nuestro gusto modificando su lugar al momento del diseo.

La ventana de ayuda o Help que dispone Visual Basic 0.6 excelente, al igual que
en todos los dems programas de Microsoft, tiene una funcionalidad muy buena
ya que tan solo al sealar un objeto y luego oprimir la tecla F1 saldr informacin
sobre el objeto sealado, algo muy prctico.
La Ventana de proyectos, nos deja ver los elementos involucrados dentro del
proyecto, como formularios, mdulos, controles OCX, etc.

44

El editor de cdigo es un componente de Visual Basic 0.6 muy importante, es


donde nosotros ingresamos nuestro cdigo para as generar un evento. Utiliza
varios colores para las lneas de cdigo, como el negro que es escrito por el
usuario, las palabras claves con azul, los comentarios con verde, los errores con
color rojo.

45

Preguntas sobre Visual Basic 6.0


Qu es un evento?

Un evento es una accin que realiza el usuario hacia un objeto, asi como cuando
hacemos un click sobre un botn y la accin de hacer click sobre el botn se llama
evento click Cada vez que se produce un evento sobre un determinado control,
se pasa a el procedimiento que realiza la accin programada por el usuario para
ese evento concreto.
Private Sub Command1_Click
End Sub
Qu es mtodo?

Los mtodos son tambin funciones que son llamadas desde el programa, que en
diferencia con los procedimientos no son programadas por el usuario. Cada tipo
de objeto o de control tienen sus propios mtodos, asi como tambin tienen
propiedades y eventos.
Qu son los controles?

Un control es un elemento grafico que forma parte de una aplicacin asi como:
botones, cajas de texto, los graficos y muchos mas son controles para Visual
Basic. Cada control tiene su nombre del cual se lo puede diferenciar dentro del
programa, ya vienen por defecto con sus nombres respectivamente pero los
usuarios podemos modificar o cambiar sus nombres.
Qu son las propiedades?

Todo control u objeto dentro de Visual Basic tiene sus propias propiedades, unas
distintas de otras. Por lo general las propiedades de un objeto son datos que tiene
valores lgicos (true, false). En fin son cualidades propias de cada control u objeto.
Qu es un objeto?

A los controles que colocamos en un formulario que poseen propiedades, mtodos


y eventos, se les llaman objetos y a las caractersticas propias de esos objetos se
les llaman propiedades.
Qu es una funcin de Visual Basic 6.0?

Existen varias funciones de cadena, que ya vienen en visual Basic 6.0 y solo hay
que llamarlas y utilizarlas.
Funciones de cadenas

46

Se podra decir que Cadena es una sucesin de caracteres. Una cadena puede
tener uno o varios caracteres numricos como tambin con letras (Alfanumrico).
Str ---> (nmero) Convierte un nmero a una cadena en numeracin decimal.
Val --> (cadena numrica) convierte un valor sea texto, y lo toma como valor
numrico
Un nmero tiene un valor, pero tambin tiene una presentacin escrita. El valor es
algo que estar en el ordenador como una sucesin de bits.
Funciones con nmeros
Visual Basic tambin puede operar con nmeros. Los operadores que utiliza para
las operaciones bsicas son:
+ --> Suma
- --> Resta
* --> Multiplicacin
/ --> Divisin
\ --> Divisin sin decimales
Mod --> Resto de una divisin o residuo
^ --> Eleva a un exponente
Otras Funciones
Sqr --> Raz cuadrada Devuelve la raz cuadrada de un nmero
Exp --> Exponenciacin Devuelve el nmero elevado al exponente indicado
Log --> Logaritmo Devuelve el logaritmo natural de ese nmero
Como sabemos Visual Basic solo admite dos resultados, True (Verdadero) o False
(Falso) Estos operadores son:
= --> Igual que
47

<> --> No igual que


< --> Mayor que
<= --> Mayor o igual que
> --> Menor que
Funciones Trigonomtricas
Sin --> Seno Devuelve el valor del seno de un ngulo.
Cos --> Coseno Devuelve el coseno de un ngulo (En radianes)
Tan --> Tangente Devuelve la tangente de un ngulo
Arc Tang.--> Arco Tang. Devuelve un arco cuya tangente sea el nmero (Angulo en
radianes) (n-1) --> arco tangente
Numeros Aleatorios
Randomize --> (Numero)
Ejercicios
Aqu veremos la utilizacin de algunos controles.
* Botn de comando o CommandButton.
1.Utilizaremos el evento click -> ocurre cuando el usuario presiona el botn. Una
vez estando en el formulario, procedemos a poner un botn de comando o
command Button, hacemos doble click sobre el botn de comando y en la parte
superior derecha seleccionamos el evento click .Escriba la siguiente lnea de
cdigo:
Private Sub command1_Click( )
Msgbox (Hola como estas..?)
End Sub
Despus de haber hecho lo propuesto, presionamos F5 y hacemos click sobre el
botn. Saldr un mensaje diciendo Hola como estas..?
48

Objetos y clases
Un objeto es una combinacin de cdigo y datos que puede tratarse como una unidad. Un
objeto puede ser una porcin de una aplicacin, como un control o un formulario. Una
aplicacin entera tambin puede ser un objeto.

Reutilizar el cdigo
Los objetos permiten declarar variables y procedimientos una vez y utilizarlos siempre que
sean necesarios. Por ejemplo, si desea agregar un corrector ortogrfico a una aplicacin,
puede definir todas las variables y funciones auxiliares para proporcionar funcionalidad de
correccin ortogrfica. Si crea el corrector ortogrfico como una clase, puede volver a
utilizarlo en otras aplicaciones mediante la inclusin de una referencia en el ensamblado
compilado. An mejor, tal vez pueda ahorrarse trabajo mediante el uso de una clase de
corrector ortogrfico que otra persona ya haya desarrollado.

Clases
Cada objeto de Visual Basic est definido por una clase. Una clase describe las variables,
propiedades, procedimientos y eventos de un objeto. Los objetos son instancias de clases;
pueden crearse tantos objetos como sean necesarios una vez que se defina una clase.
Para comprender la relacin entre un objeto y su clase, piense en los moldes de hacer
galletas y en las galletas. El molde es la clase. Define las caractersticas de cada galleta, por
ejemplo, el tamao y la forma. La clase se utiliza para crear objetos. Los objetos son las
galletas.
Dos ejemplos en Visual Basic podran ayudar a ilustrar la relacin entre las clases y objetos.

Los controles en el Cuadro de herramientas de Visual Basic representan las clases.


Cuando se arrastra un control del Cuadro de herramientas a un formulario, se est
creando un objeto; una instancia de una clase.

El formulario con el que se trabaja en tiempo de diseo es una clase. En tiempo de


ejecucin, Visual Basic crea una instancia de la clase del formulario, es decir, un
objeto.

49

Varias instancias
Los objetos recientemente creados a partir de una clase son a menudo idnticos. Una vez
que existen como objetos individuales no obstante, sus variables y propiedades se pueden
cambiar independientemente de las dems instancias. Por ejemplo, si agrega tres casillas de
verificacin a un formulario, cada objeto de botn de casilla de verificacin es una
instancia de la clase CheckBox. Los objetos CheckBox individuales comparten un conjunto
de caractersticas y funciones comunes (propiedades, variables, procedimientos y eventos)
definidos por la clase. No obstante, cada uno tiene su propio nombre, puede habilitarse y
deshabilitarse por separado, y puede colocarse en una ubicacin diferente en el formulario.

Para crear un objeto a partir de una clase

1. Determine en qu clase desea crear un objeto.


2. Escriba Instruccin Dim (Visual Basic) para crear una variable a la que puede
asignar una instancia de clase. La variable debe ser del tipo de la clase deseada.

Dim nextCustomer As customer

3. Agregue la palabra clave New (Visual Basic) para inicializar la variable a una nueva
instancia de la clase.

Dim nextCustomer As New customer

4. Puede tener acceso a los miembros de la clase ahora a travs de la variable de


objeto.

nextCustomer.accountNumber = lastAccountNumber + 1

Controles Estndar de Visual Basic

PictureBox - Cajas de Imagen

Label - Etiquetas

50

TextBox - Cajas de texto

Frame - Marcos

CommandButton - Botones de comando

CheckBox

OptionButton - Botones de opcin

ListBox y Control ComboBox

HScrollBar y VScrollBar - Barras de desplazamiento

Timer - Temporizadores

DriveListBox , FileListBox y DirListBox

Image - Control de imagen

Data

Data - 2

-- Indice :

Descripcin del control PictureBox

Propiedad Picture

Propiedad AutoSize

Usar el PictureBox como contenedor

Propiedad Container

Propiedad Autoredraw

51

Guardar la imagen del picturebox como BMP

Propiedad Image

Dibujar en un picturebox con los mtodos grficos

Enlaces relacionados

Descripcin del control PictureBox


El control PictureBox se utiliza para mostrar y cargar archivos de imagen,
tambin para dibujar figuras mediante los mtodos grficos , y tambin como
control contenedor de otros controles, como los controles Frame
Vista de un picturebox con un grfico cargado

Vista de un PictureBox con un dibujo hecho por nosotros, en este caso un


rectngulo :

52

Propiedad Picture
La principal propiedad del control PictureBox se llama precisamente Picture.
Esta propiedad es la que indica el grfico que estar cargado. Para cargar un
grfico en visual basic desde el disco, se usa la funcin LoadPicture. A Esta
funcin le debemos indicar como parmetro la ruta del fichero
Por ejemplo si quisiera cargar un archivo de imagen llamado paisaje.jpg que
est ubicado en la unidad c:, y que se cargue cuando le damos un click a un
CommandButton, tendriamos que hacer esto:
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command1_Click()
4.

' -- Le indicamos al mtodo LoadPicture la ruta del grfico

5.

With Picture1

6.
7.

.Picture = LoadPicture("c:\paisaje.jpg")
End With

8. End Sub

53

De esta manera estamos cargando el archivo en tiempo de ejecucin. Se dice


tiempo de ejecucin ya que el archivo lo estamos cargando cuando est
corriendo el programa. En cambio si quisiramos cargar el archivo grfico en
tiempo de diseo, tendramos que seleccionar el control Picture que colocamos
en el formulario, ir a la ventana de propiedades de Visual basic, buscar la
propiedad Picture, y seleccionar mediante un cuadro de dilogo de windows,
buscarlo en la Pc, y cargar el archivo que queramos. Luego de hacer esto,
automticamente se cargara la imagen en el control.
Nota : El archivo de imagen, Debe ser obligatoriamente un grfico gif, jpg,
bmp, ico, cur . No asi otros formatos, como por ejemplo el PNG, o Tiff.
( Aunque se puede leer estos formatos, pero mediante otras tcnicas,
utilizando el api de windows )

Propiedad Autosize
Esta propiedad lo que hace es adaptar o ajustar el control a las dimensiones
del grfico cargado.
Los posibles valores que le podemos dar son True o False. Si le pasamos True
el control se autoajusta al tamao de la imagen, si le pasamos False el control
queda con el ancho y alto sin autoajustarse al grfico
Esta captura muestra esto mismo, el Picture de la izquierda tiene la propiedad
Autosize en False, mientras que el otro la tiene en True.

54

Usar el PictureBox como contenedor


El control PictureBox tambin funciona como contenedor de otro controles.
Esto quiere decir que podemos colocar controles TextBox, botones etc...,
dentro del control , y estos estarn contenidos.
Ejemplo : Colocar un Picture1 en el formulario con 2 CommandButton de la
siguiente manera:

En la propiedad caption del Command1 coloca "Ocultar PictureBox" y en el


otro "Mostrar PictureBox"
Ahora selecciona los controles que quieras de la barra de controles y dibujalos
dentro del Picture1. Asegurate que los dibujes dentro del mismo
55

Los botones Command1 y Command2 hacen lo mismo que el ejemplo anterior,


es decir mediante la propiedad Visible del Picture1 , ocultan y hace visible
nuevamente al PictureBox, utilizando el valor True o False respectivamente.
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command1_Click()
4.

' -- Ocultar el Picture

5.

Picture1.Visible = False

6. End Sub
7.
8. Private Sub Command2_Click()
9.
10.
11.

' -- Mostrar el Picture1


Picture1.Visible = True
End Sub

Al ejecutar el program, a pods ver que cuando ocults el PictureBox, todos los
dems controles tambin se ocultan, es decir esto demuestra que el control
Picture es el contenedor de los otros. Si no llegara a ocultarse todos los dems
controles, es porque hiciste mal el paso de ubicarlos dentro del Picture. En este
caso asegurate que al dibujarlos queden dentro del mismo. Otra forma de
colocar controles dentro de un picture y que queden contenidos en l, es cortar
el control con el comando Cortar (click derecho sobre el mismo) y seleccionar
el Picture y cuando est seleccionado lo pegs, automticamente de esta
forma ya pasa a estar contenido.
56

Otro control que permite hacer de contenedor es el control Frame

Propiedad Container - Insertar controles en tiempo de


ejecucin
El anterior ejemplo, mostraba como colocar los controles en tiempo de diseo,
pero hay veces que es necesario por algn motivo hacerlo si o si en tiempo de
ejecucin.
Para poder colocar los controles dentro de un contenedor, podemos usar la
propiedad Container .
Este simple ejemplo muestra como insertar un control TextBox y un
Commandbuton dentro de un Picture1 al cargar el formulario, es decir en el
evento FormLoad

Colocar en el form1 : Un Text1, command1 y un Picture1


Color el cdigo fuente en el formulario
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Form_Load()
4.

' -- Inserta los controles ( El textbox y el botn )

5.

Set Text1.Container = Picture1

6.

Set Command1.Container = Picture1

7.

' -- los posiciona

8.

Text1.Move 0, 0, 1000

9.

Command1.Move 0, (Text1.Top + Text1.Height + 10), 1000

10.

57

11.

End Sub

Propiedad Autoredraw
La propiedad AutoRedraw es una propiedad muy importante y muy utilizada
cuando se usa un picturebox para dibujar sobre el control
Lo que permite hacer la propiedad Autoredraw, es que al estar activada (con el
valor True), y utilizar los mtodos grficos, por ejemplo dibujar un crculo, una
linea, o cualquier imagen / dibujo, cuando se repinte el control, la imagen no
se pierda, es decir que se mantenga. De esta manera Visual basic
automticamente vuelve a dibujar la imagen. Esta propiedad por defecto se
encuentra en false. Luego es posible borrar la imagen con el mtodo Cls
Puedes ver un simple ejemplo de esto mismo en el siguiente cdigo:
Esto dibuja una cuadrado en el picture1 al presionar un botn. Luego, pods
minimizar y volver a maximizar la ventana del formulario y ver que el dibujo se
mantiene ya que la propiedad AutoRedraw se ha establecido en True
Colocar un botn y un picturebox en el formulario ( Command1 y picture1 )
Texto planoImprimir
1. Option Explicit
2.
3. ' -- Botn para dibujar el rectngulo
4. ' --------------------------------------------------------5. Private Sub Command1_Click()
6.

With Picture1

58

7.

.AutoRedraw = True

8.

' -- Dibujar un cuadradro

9.

Picture1.Line (100, 100)-Step(400, 400), vbRed, B

10.
11.

End With
End Sub

12.
13.
14.
15.

Private Sub Form_Load()


Command1.Caption = "Dibujar cuadrado"
End Sub

16.

Ahora, prueba este mismo cdigo que es igual al anterior, pero se ha


establecido la propiedad AutoRedraw en False. Al presionar el botn se dibujar
el rectngulo de todas formas, pero si minimizas la ventana y la vuelves a
maximizar, el dibujo se perder
Colocar un botn y un picturebox en el formulario ( Command1 y picture1 )
Texto planoImprimir
1. Option Explicit
2.
3. ' -- Botn para dibujar el rectngulo
4. ' --------------------------------------------------------5. Private Sub Command1_Click()

59

6.

With Picture1

7.

.AutoRedraw = False

8.

' -- Dibujar un cuadradro

9.

Picture1.Line (100, 100)-Step(400, 400), vbRed, B

10.
11.

End With
End Sub

12.
13.
14.
15.

Private Sub Form_Load()


Command1.Caption = "Dibujar cuadrado"
End Sub

16.

Nota. Cuando la propiedad AutoRedraw se encuentra en True, el evento Paint


del picturebox nunca se ejecuta. En cambio cuando se encuentra en False, el
evento Paint se ejecutar cada ves que se repinte el control, ya sea cuando se
minimiza y maximiza el formulario, cuando se tapa un rea del control
mediante otra ventana de windows por ejemplo.
Este cdigo muestra que se ejecuta el evento paint, ya que la propiedad
AutoRedraw se encuentra en False
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Form_Load()

60

4.
5.

Picture1.AutoRedraw = False

6. End Sub
7.
8. Private Sub Picture1_Paint()
9.
10.

Static i As Integer

11.
12.

i = i + 1

13.
14.

Me.Caption = "se ejecut Paint " & CStr(i) & " veces"

15.
16.

' -- Eliminar dibujo previo

17.

Picture1.Cls

18.

' -- Dibujar un cuadradro

19.

Picture1.Line (100, 100)-Step(400, 400), vbRed, B

20.

End Sub

Ahora si en cambio colocas en el cdigo anterior, la propiedad AutoreDraw en


true, puedes comprobar que el evento Paint no se ejecuta nunca.

61

Guardar la imagen del picturebox como BMP


Utilizando mtodo SavePicture de vb es posible grabar en disco un archivo
BMP, con el grfico cargado en el control ( propiedad Picture del PicBox). El uso
de este mtodo o funcin es muy simple. A SavePicture se le debe pasar dos
parmetros:

La propiedad Picture es decir la imagen ( Tambin es posible pasar la


propiedad image si se ha dibujado con los mtodos grficos o con el uso
de las apis de windows )

y el path donde se crear el archivo

Por ejemplo:
Texto planoImprimir
1. ' -- Cargar una imagen en el control
2. Picture1.Picture = LoadPicture(ruta)
3.
4. ' -- Grabar el archivo BMP en la ruta especificada
5. SavePicture Picture1.Picture, "C:\Imagen.BMP"

El cdigo anterior genera un archivo BMP en la unidad c: llamado imagen.bmp

Nota: En este enlace hay tutorial bsico con ejemplos que muestra como
utilizar los mtodos loadpicture, savepicture y paintpicture

62

Propiedad Image
La propiedad Image del control PicBox es una propiedad de solo lectura. Esta
Devuelve un controlador o manipulador, proporcionado por Microsoft Windows,
para un mapa de bits persistente. Esto quiere decir que, si hemos utilizado los
mtodos grficos para crear figuras , imgenes o cualquier dibujo en el control,
podemos acceder a la imagen mediante este Handle o controlador.
Este simple ejemplo muestra como grabar en disco un archivo de imagen de
mapa de bits ( BMP ) , con el contenido del control utilizando el mtodo
savePicture. Pero a diferencia del ejemplo anterior, en el que se pasaba la
propiedad Picture a SavePicture, en este caso se pasar como parmetro la
propiedad Image, ya que la imagen no es un mapa de bits cargado en la
propiedad picture, si no que el dibujo se encuentra realizado mediante los
mtodos grficos.
Colocar dos botones ( Command 1 y Command 2) , y un picturebox llamado
picture 1

Pegar el Cdigo fuente en el formulario


Texto planoImprimir
1. Option Explicit
2.
3. ' -- Botn para dibujar un texto en el picture
4. ' --------------------------------------------------------5. Private Sub Command1_Click()

63

6.

' -- establecer propiedades

7.

With Picture1

8.

.AutoRedraw = True

9.

.ForeColor = vbRed

10.

.BackColor = vbBlack

11.

' -- escribir el texto

12.

Picture1.Print "Visual basic"

13.

End With

14.
15.

Command1.Enabled = False

16.

Command2.Enabled = True

17.
18.

End Sub

19.
20.

Private Sub Command2_Click()

21.

' -- guardar mapa de bits enviando la propiedad image que


apunta al grfico dibujado

22.

SavePicture Picture1.Image, "c:\imagen.bmp"

23.

MsgBox "La imagen se guard en la unidad c:", vbInformati


on

24.

' -- salir del programa

25.

End

26.

End Sub

27.
28.
29.

Private Sub Form_Load()


Command1.Caption = "Escribir texto"

64

30.

Command2.Caption = "Guardar imagen en el disco"

31.

Command2.Enabled = False

32.

End Sub

Dibujar en un picturebox con los mtodos grficos


En la siguiente pgina hay un tutorial bsico con ejemplos para poder utilizar
los mtodos grficos : ver tutorial
En este otro enlace hay un programa muy simple, que tambin muestra como
utilizar dichos mtodos en un PictureBox para poder dibujar figuras : Ver
Programa de ejemplo

Enlaces relacionados

Dibujar texto con formato

recortar imagen con el mouse

Hacer un picturebox redimensionable mediante el Api de windows

Colocar ScrollBars a un Picture

65

Insertar un formulario dentro de un picture

Dibujar con la api bitBlt en el control picture o un form

Crear picturebox redondo

Reproducir un archivo de video en el control

Efecto de animacin con transparencia

Ejemplo de Drag Drop de grficos

Crear degradados

Crear botn transparente

Crear controles en tiempo de ejecucin

Dibujar un thumbnail y escalar grficos

Crear efecto de scroll

Crear un botn simple utilizando la funcin BitBlt

Dibujar y crear Scroll de texto

Picturebox con borde y estilo Flat

Mouseout

Capturar el HDC ( rea cliente del control )

Hacer zoom a una imagen

Ocx FreeImage para leer otros formatos como PNG

66

Dibujar rectngulos usando funciones Api

Drag drop con la funcin de windows SendMessage

Descripcin
El control Label o Etiqueta es un simple control que se utiliza para mostrar
texto, descripciones, informacin para el programa.

Propiedades
Propiedad Caption
La propiedad Caption es la mas importante, y es la que se utiliza para
establecer el texto que mostrar el control Label. Por ejemplo para mostrar el
texto "Hola" agrega un label al formulario, coloca un Botn, hac doble click en
el mismo, escribe Label1 y presiona el ".", Visual Basic te desplegar la lista de
propiedades y mtodos del Label1.

67

Una vez colocada la propiedad Caption, se asigna el texto que va a mostrar de


esta manera, por ejemplo para mostrar la palabra "Hola" en el control:
Texto planoImprimir
1. Label1.Caption = "Hola"

Este fragmento de cdigo, visualiza la hora actual, asignando a la propiedad


Caption (dentro de un Timer), el valor devuelto por la funcin Now de vb.
Colocar un control Timer y un Label
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Form_Load()
4.
5.

' \\ -- Configurar Timer

6.

With Timer1

7.

.Interval = 1000 ' -- 1 segundo

8.

.Enabled = True

9.

End With

10.
11.
12.

With Label1
.Caption = ""

68

13.
14.

.Width = 2000
End With

15.
16.

End Sub

17.
18.
19.
20.

Private Sub Timer1_Timer()


Label1.Caption = Now
End Sub

Propiedad Autosize
Si la propiedad Autosize del control se encuentra en True, las dimensiones
del Label (ancho y alto) se ajustarn al largo y alto del texto que muestre. En
cambio si se encuentra en False el ancho y alto del control ser el que est
establecido en la propiedad Height y Width sin importar la longitud del texto.

Propiedad Aligment
Esta propiedad posee 3 valores. Si le establecemos el valor 0 el texto se
alinear a la izquierda, si tiene el valor 1 se alinear a la derecha y si est con
el valor 2, el texto se muestra en forma centrada, como muestra la imagen:

69

Otras propiedades del control son :

Visible : Si est en True el control est visible si est en False est


oculto

Backcolor : Determina el color del fondo de la etiqueta. Si la propiedad


BackStyle est en transparente esta propiedad no se visualiza, es decir
el color no se muestra

BackStyle: Determina si el fondo es transparente (valor 0) o si es


opaco (Valor 1).

Name: es el nombre del control y sirve para hacer referencia al mismo


en el cdigo, como todos los controles

BorderStyle: determina si se muestra con borde o sin borde

Enabled: Si est en True (Verdadero) el control est activado y se


puede utilizar normalmente, si se encuentra en False, el control est
desactivado.

FontName: El nombre de la fuente que utilizar el texto del control.


Podemos elegir las que tengamos instaladas en el sistema

70

Forecolor: Valor Hexadecimal o valor Rgb que indica el color del Texto

Height y Width: Ancho y alto del Label

ToolTipText: muestra el mensaje de descripcin cuando pasamos el


mouse por encima del control.

Ejemplo para cambiar propiedades en tiempo de ejecucin


Colocar 5 Command Button en un formulario: Command1, Command2,
Command3, Command4 y Command5, y un control Label1 como est en la
imagen:

Este bsico ejemplo lo que hace es cambiar algunas propiedades de este


control.
El Command1 que cambia el texto del Label, lo que hace es mostrar un
InputBox que es una caja o cuadro de dilogo para ingresar un texto. Ese
texto lo almacenamos en una variable y luego lo mostramos en el Label
El Command2 que cambia el Estilo del borde, es decir la propiedad
BorderStyle, cuando se presiona, si el control Label tiene la propiedad
BorderStyle en 0, lo pone con el valor 1, si est con el valor 1 lo establece en
0, es decir lo contrario.
El Command3 que activa y desactiva el control, lo que hace es cambiar el valor
de la propiedad Enabled del Label. Cuando lo presionamos se ejecuta esta
lnea:
Label1.Enabled = Not Label1.Enabled
71

El operador Not lo que hace en este caso es cambiar el valor de la propiedad


Enabled a su valor contrario. Es decir, si el valor de enabled est en True
(Habilitado) Not Label1.Enabled lo que hace es deshabilitarlo, si est
deshabilitado (False) el operador Not lo cambia a True, y el Label queda
Habilitado. Esto se puede hacer con una clasula If Then pero esta manera es
mas simple.
El Command4 es igual que el Command1, por medio de un InputBox se pide
que ingrese un texto, y se cambia el valor de la propiedad ToolTipText, que
es la propiedad que muestra informacin de un objeto mediante un rectngulo
amarillo cuando pasamos el mouse por encima, como los tipicos controles de
windows de cualquier aplicacin.
El Command5 es igual que el Command3, utiliza el operador Not para
establecerle la propiedad Visible. Si el Label est Visible (True), se cambia a
False (se oculta), si est en False se pone en True

Cdigo fuente dentro del formulario


Texto planoImprimir
1. Option Explicit
2.
3. ' \\ -- Caption
4. Private Sub Command1_Click()
5.

Dim texto As String

6.
7.

texto = InputBox("Escriba el texto a mostrar en el Label", "Eje


mplo")

8.
9.
10.

' -- Ac se asigna la variable texto en el Label


Label1.Caption = texto

11.

72

12.

End Sub

13.
14.

' \\ -- BorderStyle

15.

Private Sub Command2_Click()

16.

'Si actualmente tiene el valor 0 entonces la colocamos a


1

17.

If Label1.BorderStyle = 0 Then

18.

Label1.BorderStyle = 1

19.

'Si tiene el valor 1 lo ponemos a 0

20.

Else

21.
22.
23.

Label1.BorderStyle = 0
End If
End Sub

24.
25.
26.

' \\ -- Enabled

27.

Private Sub Command3_Click()

28.
29.

' -- Si la propiedad Enaled est en True se pone False,

30.

' -- si est en False se pone en TRue

31.

Label1.Enabled = Not Label1.Enabled

32.
33.

End Sub

34.
35.
36.

' \\ -- Tooltiptext

73

37.

Private Sub Command4_Click()

38.

Dim texto As String

39.

texto = InputBox("Escribi el texto que mostrar la propiedad"


_

40.

& "ToolTipText", "Ejemplo"


)

41.
42.

' -- Le asignamos el valor de la variable Texto al Label

43.

Label1.ToolTipText = texto

44.
45.

' -- Mostramos un mensaje para indicar que pase el mouse


por

46.

' -- encima del control Label1

47.
48.

MsgBox "Pas el mouse por encima del Label"

49.
50.

End Sub

51.
52.

' \\ -- Visible

53.

Private Sub Command5_Click()

54.
55.

' -- Si el Label est visible entonces lo ocultamos,

56.

' -- si est oculto lo mostramos

57.

Label1.Visible = Not Label1.Visible

58.
59.

End Sub

60.

74

61.
62.

Private Sub Form_Load()

63.

Command1.Caption = "Cambiar texto"

64.

Command2.Caption = "Cambiar borde"

65.

Command3.Caption = "Enabled"

66.

Command4.Caption = "ToolTipText"

67.

Command5.Caption = "Enabled"

68.

End Sub

Eventos del control Label:

Evento Click: Se produce al hacer un click

Evento DblClick: Se produce al hacer doble click

evento MouseDown: Se produce al presionar el ratn cuando el mouse


est abajo

Evento MouseMove: se produce al mover el cursor en el rea del control

75

Evento MouseUp: Se produce al hacer un Click justo despus de soltar el


botn del mouse

Evento Change: Se produce cuando cambia la propiedad Caption del


control. Este evento puede utilizarce para validar algn cambio

Ejemplo utilizando el evento MouseMove


Lo siguiente, muestra como simular un enlace, como el de una pgina web, de
una forma sencilla
Al pasar el mouse por encima del Label, se cambian las propiedaes, es decir el
color del texto y la propiedad FontUnderline en True para subrayar. Luego en el
MouseMove del Formulario, se reestablece.

Cdigo fuente
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Form_Load()
4.
5.

With Label1

6.

' -- Estilo transparente

7.

.BackStyle = 0

76

8.

' -- Ajustar el control al texto

9.

.AutoSize = True

10.

' --

11.

.Caption = " http://www.google.com "

12.
13.

Asignamos un texto para la direccin url

End With
End Sub

14.
15.

Private Sub Form_MouseMove( _

16.

Button As Integer, _

17.

Shift As Integer, _

18.

X As Single, Y As Single)

19.
20.

With Label1

21.

If .FontUnderline Then

22.

' -- Color de la fuente del Label en negro

23.

.ForeColor = vbBlack

24.
25.

' Quitamos el Subrayamos al Label

26.

.FontUnderline = False

27.
28.

End If
End With

29.
30.

End Sub

31.
32.

77

33.

Private Sub Label1_MouseMove( _

34.

Button As Integer, _

35.

Shift As Integer, _

36.

X As Single, Y As Single)

37.
38.

With Label1

39.

If Not .FontUnderline Then

40.

' --

Color Azul como el de los enlaces clsicos

41.

.ForeColor = QBColor(9)

42.
43.

' -- Subrayamos el Label

44.

.FontUnderline = True

45.
46.
47.

End If
End With
End Sub

78

Recorrer los labels del formulario con un bucle For


Each next
Si en algn momento se desea poder recorrer todos los controles label que se
encuentren en el formulario, por ejemplo para consultar el valor de
propiedades o para modificarlas y no tener que hacerlo uno por uno, pods
utilizar un bucle For Each y mediante el operador TypeOf de vb comprobar si es
un Label
Este simple ejemplo muestra como recorrer todos los objetos del form actual, y
si es de tipo Label, le establece un color aleatorio utilizando la funcin RND y la
funcin RGB de Visual basic. Por supuesto en el bucle pods probar cambiar
otras propiedades que quieras. Esto tambin es muy til para deshabilitar y
habilitar, o hacer visible o no visible controles del programa utilizando un
simple bucle.
Colocar varios controles en el formulario, y tambin varios controles Label, por
ejemplo 4 o 5
Colocar tambin un botn para poder ejecutar el cdigo del bucle
Pegar el siguiente fragmento de cdigo en el form principal
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command1_Click()
4.
5.

Dim xLabel As Control

6.

' -- Recorrer controles coon un bucle

7.

For Each xLabel In Me.Controls

8.

' -- Comprobar que el control actual es de clase Label

9.

If TypeOf xLabel Is Label Then

10.

' - Si lo es, cambiar la propiedad ForeColor

11.

xLabel.ForeColor = RGB(CInt(Rnd * 255), CInt(Rnd


* 255), CInt(Rnd * 255))

79

12.
13.

End If
Next

14.
15.

End Sub

16.
17.
18.
19.

Private Sub Form_Load()


Command1.Caption = "Cambiar color"
End Sub

Texto con sombra usando dos controles Label


Esto es muy simple y no requiere de cdigo , solo colocar dos controles Label
superpuestos, y el que est debajo de color negro, como muestra el grfico:

80

Nota: desde opciones > men Herramientas, puedes especificar los valores
para la cuadrcula del formulario, por defecto son 120 twips, colocando un
valor mas bajo, tendrs mas precicin para colocar el control Label al
arrastrarlo en el formualrio.

Simple botn
Este senciilo ejemplo muestra una forma de poder crear un botn utilizando
dos controles label en un array de controles uno encima del otro. Y en el
evento MouseDown , se oculta uno, y se visualiza el que est por debajo, y
luego se vuelve a visualizar el otro en el evento mouseUp

Control ocx para usar Label con degradado

Control ListBox
El control ListBox permite aadir elementos en forma de lista y tambin
poder seleccionar elementos de la misma para trabajar los datos.
Este control permite seleccionar un elemento solo o varios de ellos, utilizando
la propiedad Multiselect. La imagen de la izquierda muestra un ListBox en el
que se selecciona un solo elemento y a la derecha se seleccionan varios:

81

Para agregar elementos a un control ListBox en tiempo de diseo, se debe


seleccionar el control Listbox, y desde la ventana de propiedades ubicarnos en
la que se llama List. Al desplegarla podemos agregar y remover elementos.
Para esto se debe ingresar uno, luego mantener la tecla Ctrl presionada y
presionar Enter, y agregar el siguiente y asi con los dems.
Para agregarlos en tiempo de ejecucin, es decir mediante cdigo, se utiliza un
mtodo llamado AddItem.
Por ejemplo si quisiramos agregar un elemento a un control llamado List1 en
el evento Click de un botn, debemos escribir el nombre del ListBox y
presionar el ".". Visual Basic desplegar la lista de propiedades y mtodos del
control List, en ella buscamos el mtodo AddItem, como muestra la imagen:

82

El mtodo AddItem tiene 2 parmetros.

AddItem "Elemento que vamos a agregar", "Index (posicin)"


El primer parmetro es obligatorio, y es el elemento que vamos a aadir al
control List. El segundo parmetro no es obligatorio, es decir es opcional, y
permite especificar el lugar donde aadir el elemento, es decir la posicin. A
este se le pasa un nmero entero, por ejemplo 0, 1, 5 etc...Si no se especifica
una posicin, el elemento que se agrega es aadido al final de la lista.
Por ejemplo, si quisiera agregar 5 nombres de pases en un control llamado
List1, cuando presionamos un Command1 :

Private

Sub

Command1_Click()

List1.AddItem
List1.AddItem
List1.AddItem
List1.AddItem
List1.AddItem

"Brasil"
"Francia"
"Italia"
"Argentina"
"venezuela"

End Sub

Al probar lo anterior, Visual Basic no di error al no indicar la posicin o el


parmetro Index, ya que como se dijo dicho parmetro es opcional.
Para eliminar un elemento se utiliza el mtodo RemoveItem. Este mtodo
tiene un parmetro llamado Index en el cual debemos indicar la posicin del
elemento que vamos a eliminar.
Por ejemplo:

Private
'Eliminamos

Sub
el

Command2_Click()

elemento
83

de

la

lista

List1.RemoveItem

End Sub
El ejemplo anterior eliminara de la lista el elemento "Italia". Te preguntars
porque elimina a "Italia" si este est en la posicin 3. En realidad est en la
posicin 2, ya que se comienza el conteo desde el 0, es decir en la lista del
ejemplo anterior, "Brasil" tiene el nmero 0, "Francia" el 1, "Italia" el 2 etc...
Importante: Al eliminar un elemento de la lista, el nmero relacionado al
elemento o Item a eliminar, debe estar en la lista, ya que si no dara un error
al querer eliminar un Item que no se encuentra.

Ejemplo simple para agregar y eliminar elementos de un control List


Para el siguiente ejemplo colocar los siguientes controles en un formulario
como est en la imagen:

Un control Label1 y en el Caption escribir "Nombre". Un Command1 y en el


Caption "Aadir". Al Command2 "Eliminar Seleccionado". Luego agrega un
Text1 al lado del control Label1 y un control List1.
El elemento que escribamos en el Text1, cuando se presione " Aadir " se
agregar al control List1, cuando presionemos el Command2 se eliminar de la
lista el elemento que se encuentre seleccionado.

84

Colocar el cdigo en el formulario:

Private
Sub
Command1_Click()
If
Text1
=
""
Then
MsgBox "Debe ingresar un nombre para poder agregar un
elemento",
vbQuestion
+
vbOKOnly,
"Datos
incompletos"
'Salimos de la rutina ya que no se ha ingresado nada en el
control
text1
Exit
Sub
End
If
'Agregamos el
List1.AddItem
End

contenido

del

Text1

en

el

control

List1
Text1
Sub

Private
Sub
Command2_Click()
'Si la lista no est vaca entonces podemos eliminar
If
List1.ListIndex
<>
-1
Then
'Eliminamos el elemento que se encuentra seleccionado
List1.RemoveItem
List1.ListIndex
End
If
End Sub

En el ejemplo anterior cuando se presiona aadir, antes de utilizar el mtodo


AddItem para aadir el contenido del Text1, se comprueba mediante un IF que
el Text1 no est vaco. Si est vaco se muestra un mensaje de error y se sale
de la rutina mediante Exit sub. Si se ha ingresado algn texto, ignora la
clusula IF Then y ejecuta la lnea que aade el Item.
En el botn de Eliminar el elemento seleccionado se utilizan una propiedad que
no se coment llamada ListIndex. Esta propiedad nos devuelve el nmero del
elemento que se encuentra seleccionado actualmente. Cuando el ListBox no
tiene ningn elemento seleccionado, el valor de ListIndex es de -1. Para que no
de error al querer eliminar un elemento que no se encuentre seleccionado,
primero debemos comprobar que el valor de ListIndex es distinto a -1, por
ejemplo

If List1.ListIdex <> -1 Then ....

85

Si el valor es distinto a -1 quiere decir que hay un elemento seleccionado,


entonces se procede a la eliminacin del mismo, utilizando el mtodo
RemoveItem pasndole como parmetro el nmero de ListIndex.

Propiedad Sorted:
Si quisiramos ordenar el contenido, es decir los elementos del control List en
forma alfabtica, debemos utilizar la propiedad Sorted.
Esta propiedad no se puede utilizar en tiempo de ejecucin, si no que la
debemos establecer en tiempo de diseo desde la ventana de propiedades. Si
la propiedad est en True, la lista de elementos se mostrar en forma
ordenada, si est en False sin ordenar. Por defecto esta propiedad est con el
Valor False.

Eliminar elementos con el mtodo Clear


Para eliminar todo el contenido de un control ListBox se utiliza el mtodo o
funcin llamado Clear.
Por ejemplo:

Private
'Elimina
List1.Clear

Sub
todo

el

Command1_Click()
contenido

del

ListBox

End Sub

Este mtodo no necesita ningn parmetro, solo ejecutarlo para que todo el
contenido del control sea eliminado. Tampoco produce un error si ejecutamos
Clear y el ListBox no tiene elementos, es decir si los tiene los elimina, si no
tiene elementos y se ejecuta Clear, no ocurre nada.

86

Propiedad ListCount
La propiedad ListCount devuelve la cantidad de elementos que contiene el
control.
Por ejemplo, en las siguientes lneas, cuando se presiona un Command1, se
agregan 3 elementos. Luego se muestra un mensaje, mediante un MsgBox,
con la cantidad de elementos del control, consultando el valor de la propiedad
ListCount :

Private
'Agregamos
List1.AddItem
List1.AddItem
List1.AddItem

Sub
3

'Mostramos medianete
'del contenido del
MsgBox

Command1_Click()

elementos

al

listado
"Enero"
"Febrero"
"Marzo"

un mensaje la cantidad de elementos


ListBox, en este caso devuelve 3
List1.ListCount

End Sub

Propiedad List
La propiedad List devuelve o establece los elementos contenidos en la lista del
control.
Esta propiedad lleva un parmetro que indica el nmero del elemento que se
quiere consultar.
Un ejemplo: si quisiera mostrar en un Label1 el texto del elemento que se
selecciona, haramos lo siguiente:

Colocar un List1 y un Label1. Pegar esto en el formulario:

87

Private
'Agregamos
List1.AddItem
List1.AddItem
List1.AddItem
End

Sub
elementos

Private
Sub
'Cuando
hacemos
Click
en
mostramos
en
el
Label1
Label1
=
End Sub

al

Form_Load()
listado
"Enero"
"Febrero"
"Marzo"
Sub

List1_Click()
un
elemento
del
List1
_
el
texto
del
elemento
List1.List(List1.ListIndex)

En el cdigo anterior, cuando carga el formulario en el evento Load, se agregan


3 elementos cualquiera. El restante cdigo se encuentra en el evento Click del
control List, por eso se ejecutar cada vez que hagamos un Click en el mismo,
y utilizando la propiedad List y pasndole otra propiedad ya vista " ListIndex ",
obtenemos el texto del elemento actualmente seleccionado.
Si pasramos un nmero, nos mostrara el texto del elemento que corresponde
a ese nmero dentro del ListBox. Siguiendo el ejemplo anterior en el que
tenamos 3 elementos, si se hiciera esto

Private
Label1
End Sub

Sub
=

List1_Click()
List1.List(2)

...el control Label1 mostrara el texto del elemento 2, que sera "Marzo". Esto
como ya se indic antes es porque el primer elemento en la lista es el 0, que
en este caso corresponde a "Enero", el segundo elemento es el 1, en este caso
"Febrero" , etc...

88

Otras propiedades del control ListBox son:

Propiedad Backcolor : Establece el color de fondo del control

Propiedad Enabled : Permite habilitar o deshabilitar el control ListBox Valores True y False

Propiedad Font : Establece el tipo de fuente, tamao estilo etc... de los


elementos

Propiedad ForeColor : Establece el color de la fuente de los elementos

Propiedad Height y Width : Establece el ancho y alto del control

Propiedad MultiSelect : Permite indicar si el ListBox se podr


seleccionar mas de un elemento

Propiedad Visible : Si est en True el control ser visible si est en False


estar oculto

Eventos del control ListBox


Los eventos principales del control son:

Evento Click: Ocurre cuando el usuario presiona y libera un botn del


mouse encima de un objeto.

Evento DblClick: Ocurre cuando el usuario presiona y libera un botn del


mouse y despus lo vuelve a presionar y liberar sobre un objeto.

89

Evento DragDrop: Ocurre cuando finaliza una operacin de arrastrar y


colocar. en este enlace hay un ejemplo simple del uso de este evento:
DragDrop entre dos listbox

Evento DragOver: Ocurre cuando una operacin de arrastrar y colocar


est en curso.

Evento GotFocus: Ocurre cuando el control recibe el enfoque.

Evento LostFocus: Ocurre cuando un objeto Pierde el enfoque el control

Evento ItemCheck: Ocurre cuando la propiedad Style de un control


ListBox es 1 (casillas de verificacin) y la casilla de verificacin de un
elemento en el control ListBox est activada o desactivada.

Evento KeyDown: Ocurre cuando el usuario presiona una tecla mientras


un objeto tiene el enfoque.

Evento KeyPress: Ocurre cuando el usuario presiona y libera una tecla


ANSI.

Evento KeyUp: se produce cuando el usuario libera una tecla mientras el


control tiene el enfoque.

Evento MouseDown: Ocurre cuando el usuario presiona el botn del


mouse mientras un objeto tiene el enfoque.

Evento MouseMove: Ocurre cuando el usuario mueve el mouse.

Evento MouseUp: Ocurre cuando el usuario libera el botn del mouse


mientras un objeto tiene el enfoque.

90

Evento Scroll: Ocurre cuando cambia la posicin de un cuadro de


desplazamiento en un control, es decir cuando se mueve la barra de
Scoll

Evento Validate: Se produce cuando un control pierde el enfoque en


favor de un control que produce una validacin.

Control ComboBox.
Este control muy utilizado en los programas nos permite mediante una lista
desplegable poder seleccionar elementos, como tambin es posible introducir
elementos a la misma

Otro tipo de vistas del control ComboBox son las siguientes, que se modifican
desde la propiedad Style del control

91

El primero DropDown es el estilo por defecto y se despliega la lista cuando


pulsamos en la flecha. El segundo Simple Combo ya presenta la lista
desplegada y no tiene un botn para desplegar los elementos. El tercero
DropdownList , es igual que el DropDown, pero con la diferencia que no se
puede ingresar un texto, solo se puede seleccionar elementos.
Este control es muy parecido al control List en lo que se refiere a las
propiedades y mtodos para manejar los datos, para agregar elementos se
utiliza el mtodo AddItem.
Por ejemplo , el siguiente cdigo aade 50 elementos en un bucle For Next:

Dim

Elemento

For
Elemento
'Agregamos el valor
Combo1.AddItem
Next

de

As
=
la

0
variable

Integer
To
Elemento

al

50
Combo
i

Al igual que el control ListBox, para eliminar todo el contenido se usa el


mtodo Clear

92

'Eliminamos
Combo1.Clear

todo

el

contenido

Al igual que el control List, para averiguar el valor de un determinado elemento


se utiliza la propiedad List especificndole el nmero del elemento, ListCount
(para saber el nmero de elementos), ListIndex (saber el elemento
seleccionado), el Mtodo RemoveItem (Elimina el elemento especificado)
etc..

Propiedad DataField y DataSource


Estas dos propiedades presente en el control ListBox y el control ComboBox,
adems de varios otros controles de visual basic, como el Label, TextBox etc...,
pemiten enlazar los controles a una base de datos.

DataField: Devuelve o establece un valor que enlaza un control con un


campo del registro actual.

DataSource: Establece un valor que especifica el control de datos


mediante el cual se enlaza el control actual a una base de datos

Por ejemplo, lo siguiente, enlaza un control Combo1, que previamente est


asociado a un control Data1 mediante la propiedad DataSource, con el campo "
Nombres " de una tabla llamada Clientes, de la base de datos Bd1.Mdb.

Data1.DatabaseName
Data1.RecordSource

App.Path
=

&

"\bd1.mdb"
"Clientes"

Combo1.DataField = "Nombres"
El control TextBox o Caja de texto se utiliza para Ingresar y/o visualizar Texto
( es un control de entrada de datos )

93

Si en nuestros programas no vamos a introducir Texto, me refiero a solo


mostrarlo, valores etc..., es preferible y mas lgico utilizar un control Label en
cambio de un control TextBox , ya que consume menos recursos
La propiedad principal de este control se llama Text. Mediante ella podemos
asignarle un texto ya sea en tiempo de diseo o tiempo de ejecucin al control.
Si es en tiempo de diseo, debemos seleccionar el TextBox e ir a la ventana de
propiedades y seleccionar Text. Dentro de ella podemos escribir el texto a ser
mostrado. Si es en tiempo de ejecucin debemos escribir el nombre de el
TextBox que queremos y al presionar el punto ".", vb despliega la lista de
propiedades y mtodos del TextBox, y ah seleccionamos Text

Por ejemplo si quiero mostrar un texto en un control llamado Text1 se hara de


esta forma:
94

Private

Sub

Text1.Text

"Un

Form_Load()
texto

cualquiera"

End Sub

Si quisiera mostrar el contenido de un control Label llamado Label1 en un


control llamado text1 se hara as:

Private

Sub

Text1.Text

Form_Load()

Label1.Caption

End Sub
Nota , no es necesario escribir la propiedad Text seguida del nombre del
control, ya que la propiedad Text es la propiedad por defecto, y Vb se dara
automticamente cuenta que al no poner ninguna propiedad la asuma como
tal, por ejemplo esto es vlido:

Private
Text1

Sub
=

"Un

Form_Load()
texto

cualquiera"

End Sub

Esto de las propiedades por defecto lo tienen la mayora de los controles, pero
cada control tiene la suya, por ejemplo la propiedad default de un control
Label es Caption, por lo que no es necesario escribirla, y Visual Basic no
dara error:

95

Private

Sub

Label1

Form_Load()
=

"Hola"

End Sub

Para un control Picture, la propiedad Picture es la que est establecida


por defecto, y esto tampoco dara error y cargara una imagen perfectamente
en el control sin indicar explcitamente la propiedad.

Private
Picture1

Sub
=

LoadPicture("la

Form_Load()
ruta

de

una

imagen")

End Sub

Propiedad Multiline
La propiedad Multiline o multilinea se utiliza para poder mostrar los saltos de
carro o saltos de lnea y que el texto se vea en varias y no todo en un nica
lnea. Los valores que posee son True que est activada y en False quiere
decir que est deshabilitada. Por defecto cuando aadimos un TextBox, la
propiedad est en False, osea que tenemos que indicarle nosotros a vb, ya sea
desde la ventana de propiedades ponindola en true. Una cosa importante es
que esto no lo podemos cambiar en tiempo de ejecucin mediante cdigo, si o
si hay que establecerla desde la ventana de propiedades, ya que es una
propiedad de solo lectura.

Propiedad PasswordChar
Esta propiedad tiene la funcin de ocultar el verdadero contenido del
TextBox por el caracter que le indiquemos, por ejemplo los TextBox de
ingresos de contrasea, donde el texto se oculta pero no se pierde, solo impide
visualizarlo:

96

Nota : para establecer el caracter a mostrar solo debemos indicarlo en la


propiedad PasswordChar, pero solo funciona cuando la propiedad
Multiline del Text est en False.

Propiedad ScrollBars
Esta propiedad permite que el TextBox tenga o no tenga barras de Scroll
cuando el texto sea superior a las dimensiones de la caja de texto. Los valores
que puede tener son: 0 indica que el textBox no mostrar Barras de
desplazamiento, en 1 Solo barra Horizontal, 2 Solo barra Vertical y 3
ambas barras de desplazamiento. En esta imagen se ve un TextBox con la
propiedad Scrollbars en 2, solo Vertical

Propiedad Locked
Esta propiedad lo que hace es impedir que se pueda escribir en el
TextBox, bloqueando la entrada de datos. Esta propiedad puede tener el Valor
True o False, habilitado para el primero y False para el segundo. Por defecto
est deshabilitada, es decir en False

97

Propiedad Maxlength
La propiedad MaxLength se usa para limitar la cantidad de caracteres
que se podrn ingresar. Por ejemplo si en el TextBox tuviesemos el texto
"Domingo" y hacemos esto:

Private
Text1.Text
Text1.MaxLength
End Sub

Sub
=
=

Command4_Click()
"Domingo"
3

El texto "Domingo" se podr visualizar pero si intentamos escribir en la caja de


texto, no se podr ingresar mas de 3 caracteres. Es decir la propiedad recibe
un nmero que identifica la longitud mxima permitida de letras a ingresar.

Propiedad SelStart y SelLength


La primera lo que hace es devolver o establecee el punto inicial del texto
seleccionado. en cambio SelLength devuelve o establece el nmero de
caracteres seleccionados.
El siguiente ejemplo utiliza estas dos propiedades, en conjunto con la
propiedad Len de visual basic, para que al persionar la tecla Ctrl+A, se
seleccione todo el contenido del TextBox

Private Sub Text1_KeyPress(KeyAscii As Integer)

98

If KeyAscii = 1 Then
Text1.SelStart = 0
'Selecciona Todo el contenido de la caja de texto
Text1.SelLength = Len(Text1.Text)
End If
End Sub

Algunos ejemplos del Uso del control TextBox


Supongamos que quisieramos mostrar el contenido de un Text1 en un Text2,
cuando presionamos un Command1, haramos asi:

Private
'Copiamos
Text2
End Sub

Sub
el

texto

de
=

Text1

Command1_Click()
en
el
Text2
Text1

Si quisieramos cambiar el color de fondo (propiedad Backcolor) del TextBox


para que sea igual al color de fondo del formulario haramos asi:

99

Private
Sub
Command1_Click()
'Le asignamos el mismo color al textbox que el que tiene el
formulario
_
utilizando
la
propiedad
Backcolor
Text1.BackColor
=
Me.BackColor
End Sub

Este simple ejemplo lo que hace es cuando se escribe en el Text1,


automticamente se imprime el mismo texto en un Text2. Para esto usamos el
evento Change que significa cambio, es decir se ejecutar cada vez que el
text1 cambie el contenido.
Agregar 2 Text, text1 y Text2, pegar lo siguiente y luego escribir un texto en el
Text1.

Private
Sub
Text1_Change()
'Le establecemos el contenido de Text1 en el control Text2
Text2
=
Text1
End Sub

Este ejemplo lo que hace es cambiarle el color al fondo del control text en
negro, el color de la fuente en verde, el tamao de la fuente, establecerla en
negrita, y luego le asigna un texto "hola mundo".
Colocar un Command1 y un Text1

100

Private
With
.ForeColor
.BackColor
.FontSize
.FontBold
.Text

Sub

Command1_Click()
Text1
=
=
=
=

"

Hola

End
End Sub

vbGreen
vbBlack
12
True
Mundo"
With

Hacer que un textBox admita solo nmeros y algunos otros


caracteres indicados
El siguiente ejemplo muestra como hacer , comprobando en el eventos
KeyPress de un textbox, el valor del parmetro Keyascii, para que solo admita
nmeros, la coma, el punto y la tecla de retroceso. Cualquier otro valor que no
sea estos, el mismo retornar el valor 0.

Colocar un Text1 y el siguiente cdigo en el formulario:

Option Explicit
Private Sub Text1_KeyPress(KeyAscii As Integer)
101

KeyAscii = Verificar_Tecla(KeyAscii)
End Sub
Function Verificar_Tecla(Tecla_Presionada)

Dim Teclas As String

'Acepta todos los nmeros, la tecla Backspace, _


la tecla Enter, la coma y el punto
Teclas = "1234567890.," & Chr(vbKeyBack)
If InStr(1, Teclas, Chr(Tecla_Presionada)) Then
Verificar_Tecla = Tecla_Presionada
Else
' Si no es ninguna de las indicadas retorna 0
Verificar_Tecla = 0
End If

End Function

Esta funcin tambin puede ser utilizada en otros controles de entrada de


datos, como por ejemplo los ComboBox, y la ventaja de utilizarlo, es que si
tenemos muchos textbox o controles a los cuales deseamos verificar las teclas
presionadas, no tenemos que escribir y repetir cdigo en todos ellos, solo
102

asignando al valor KeyAscii el valor retornado por la fuincin, para que el


mismo acepte o no dichas teclas
Nota: tambin hay una funcin de visual basicllamada IsNumeric, para poder
determinar si un valor es un nmero

Ejemplo para cargar el contenido de un archivo de texto en


un TextBox Multiline
Este simple ejemplo carga en un control textBox el contenido de un archivo
seleccionado de tipo txt. El control tiene la propiedad Multiline en True y la
propiedad ScrollBar en Both.
Nota: en este enlace hay una descripcin bsica de las funciones de visual
basic para el tratamiento de archivos, leer, guardar etc...

103

Colocar en un formulario un control Commondialog , un control textBox y un


control Command1:
Nota: al control textBox en la propiedadMultiline colocarle true y tambin
establecerle los ScrollBar

Cdigo fuente en el formulario:

Private Sub Command1_Click()


With CommonDialog1
.DialogTitle = " Seleccionar archivo"
.Filter = "Archivos txt|*.txt"
' abre el cuadro de dilogo para seleccionar el txt
.ShowOpen
If .FileName = "" Then Exit Sub
'Carga el archivo en el control
Cargar_Txt .FileName
End With
End Sub
Private Sub Form_Load()
Command1.Caption = " Abrir archivo txt"
End Sub
Sub Cargar_Txt(path As String)
Dim linea As String
If path = vbNullString Then Exit Sub

104

Text1 = ""
Open path For Input As #1
While Not EOF(1)
'Lee la linea del archivo
Line Input #1, linea
'La carga en el textbox
Text1 = Text1 & linea
Wend
'Cierra el archivo abierto
Close
End Sub

Redimensionar un TextBox al ancho y alto del formulario


Este ejemplo simple lo que hace es que al redimensionar el formulario, o
maximizarlo, el ancho y alto del control text, se adapte al ancho y alto del la
ventana. Para ello el cdigo debe estar ubicado en el evento Resize del
formulario, y para redimensionar el textbox ( o cualquier otro control) se utiliza
el mtodo Move
Ejemplo:

Private Sub Form_Resize()


'Primer y segundo parmetro es el valor Left y Top
'Parmetro 3 y 4, el ancho y alto del text _
que en este caso es el ancho y alto del formulario
105

Text1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight


End Sub

Cambiar color de borde


El textbox no tiene ninguna propiedad para cambiar el color de borde . El
siguiente ejemplo muestra una forma simple de como simular esto utilizando
controles Shape, como muestra la siguiente imagen donde los textbox son
parecidos a los de estilo de windows xp

En el ejemplo, se recorren todos los controles del formulario mediante un bucle


For each. Luego, se van creando los dems controles Shape en tiempo de
ejecucin, uno para cada textbox , usando el mtodo Load que permite crear
los controles en tiempo de ejecucin a partir de uno que est agregado en el
formulario formando un array de controles

Controles
Colocar en el formulario, un control Shape. Al control Shape especificarle en la
propiedad Index el valor 0 pra formar el array de shape

106

Luego agregar algunos textbox en el formulario

Cdigo fuente en el formulario

' Posiciona el shape junto al textbox para simular el borde


Sub Aplicar_Borde(Shape As Object, color_Borde As Long)
' Variable
formulario

para

recorrer

todos

los

controles

Dim el_Control As Object


'Recorre todos los controles
For Each el_Control In Me
' .. si el control es un textbox
If TypeOf el_Control Is TextBox Then
Dim i As Integer
'Si el Textbox est dentro de un contenedor, _
como un frame o picturebox, coloca el Shape _
dentro del mismo contenedor
Set Shape(i).Container = el_Control.Container
'Propiedades para el shape
Shape(i).BackStyle = 0 ' Fondo transparente
Shape(i).BorderStyle = 1 ' Borde slido
Shape(i).BorderWidth = 1 ' 0 Grosor del borde
' Ancho, alto, pos x y po y del shape
Shape(i).Top = el_Control.Top - 10
Shape(i).Left = el_Control.Left - 10

107

del

Shape(i).Width = el_Control.Width + 30
Shape(i).Height = el_Control.Height + 30
' Estilo flat para el extbox
el_Control.Appearance = 0
' Le quitamos le borde al textbox
el_Control.BorderStyle = 0
' color del borde del shape
Shape(i).BorderColor = color_Borde
' Lo hacemos visible
Shape(i).Visible = True
i = i + 1
' Crea un shape en forma dinmica
Load Shape(i)
End If
Next
End Sub
Private Sub Form_Load()
Call Aplicar_Borde(Shape1, &H8000000D)
End Sub

Nota. en este enlace hay un ejemplo para crear un listbox con borde
personalizado tambin usando un control shape

108

Pasar el foco entre Textbox al presionar la tecla enter


Este ejemplo muestra una forma de poder, al presionar la tecla enter, pasarle
el foco al siguiente textbox. Como en el ejemplo se utiliza la funcin SendKeys
para enviar la pulsacin de la tecla Tab, el control que reciba el enfoque lo
determinar la propiedad TabIndex
Agregar un arreglo de controles textbox, por ejemplo Text1(0), Text1(1),
Text1(2) etc...

Cdigo fuente en el formulario

Sub PasarFoco(KeyCode As Integer)


' si es la tecla enter ...
If KeyCode = 13 Then
' enva la pulsacin de tecla Tab y pasa el foco _
a la siguiente caja de texto
SendKeys "{TAB}"
End If
End Sub
Private Sub Form_Load()

109

Dim i As Integer
' recorre la matriz de textbox
For i = 0 To Text1.Count - 1
' le especifica la propiedad tabIndex
Text1(i).TabIndex = i + 1
Next
End Sub
Private Sub
Integer)

Text1_KeyPress(Index

As

Integer,

KeyAscii

As

' anvia como parmetro el valor del cdigo de la tacla


Call PasarFoco(KeyAscii)
End Sub

Borrar todos los textbox de un formulario


Si queremos eliminar el contenido de todas las cajas de texto de un formulario,
podemos utilizar un bocle For Each y el operador Type Of
Ejemplo:
La rutina LimpiarTextBox, recibe como parmetro el formulario, por ejemplo
para limpiar todo el contenido de todas las cajas de texto que hay en el el
formulario actual, se ejecutara la rutina de la siguiente forma:

Call LimpiarTextBox(Me)

Colocar en el formulario, un CommandButton y varios controles TextBox


Cdigo fuente en el Form
110

Option Explicit
' recibe como argumento el formulario
''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Sub LimpiarTextBox(frm As Form)
' recorre todos los controles que hay en el formulario
For Each Control In frm.Controls
' verifica que el control es de tipo TextBox
If TypeOf Control Is TextBox Then
'... Si es un Textbox, entonces lo limpia
Control.Text = ""
End If
Next
End Sub
' botn que limpia todos los textbox
'''''''''''''''''''''''''''''''''''''
Private Sub Command1_Click()
Call LimpiarTextBox(Me)
End Sub

Enlaces relacionados

Control ocx para textbox estilo windows xp

Aplicar temas de xp con un archivo manifest

Ocx para cambiar de color al perder el foco

111

Ejemplos bsicos sobre el control CommandButton de


visual basic

-- -- Indice - Contenido

Descripcin del control CommandButton

Propiedades

Mtodos y funciones

Eventos principales del control

Tomar la apariencia de los temas de windows para los botones

Enalces relacionados

112

Descripcin del control


Este control " Botn de comando ", nos permite ejecutar alguna rutina, funcin
o procedimiento, generalmente en el evento click del mismo, para realizar de
esta manera alguna tarea dentro del programa

Como se dijo, se utiliza generalmente en el evento Click par ejecutar alguna


accin cuando se produce dicho evento, y es precisamente el evento Click, el
que por defecto aade Visual Basic al control
Por ejemplo, si colocamos un control Command1 en un formulario, y le damos
DobleClick para que se abra la ventana de cdigo de visual basic, podemos ver
la siguiente rutina:
Texto planoImprimir
1. Private Sub Command1_Click()
2.
3.
4. End Sub

Todas las instrucciones que estn dentro de este procedimiento, llamado


Command1_Click, se ejecutarn cuando presionemos el botn. Por ejemplo
si ejecutamos el siguiente cdigo, lo que hara sera mostrar la fecha del
sistema en la barra de ttulo del formulario, utilizando la funcin Date de Visual
Basic
Texto planoImprimir
1. Option Explicit
2.

113

3. Private Sub Command1_Click()


4.

5.

' -- Establecemos en la barra de ttulo del formulario la fecha


del Pc
Me.Caption = Date

6.
7. End Sub

Este otro ejemplo, al presionar el botn, termina el programa utilizando la


funcin End de vb. Colocar un Botn en el form
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command1_Click()
4.

End

5. End Sub
6.
7. Private Sub Form_Load()
8.

Command1.Caption = "Salir"

9. End Sub

114

Propiedades
Las propiedades que posee el control CommandButton son prcticamente las
que poseen el resto de controles estandar de visual basic, salvo algunas
exclusivas como la propiedad Style.
Propiedad Style
La propiedad Style tiene 2 valores, 0 - Standar y 1 - Graphical. La primera
es del clsico botn y este valor es el asignado por defecto. En cambio
Graphical permite utilizar CommandButton para poder mostrar imgenes,
cambiarle el color del fondo, el tipo de fuente, y utilizando el Api de windows,
se puede cambiar por ejemplo el color de la fuente, es decir el ForeColor que
este control no lo posee.
Esta imagen muestra, en el Command1 , una imagen, por medio de la
propiedad Picture que la puedes cargar desde la ventana de propiedades. El
segundo, el Command2, no tiene imagen, pero muestra como se puede
establecer el color de fondo, propiedad Backcolor, siempre y cuando la
propiedad Style sea de tipo grfico, ya que si est en estndar no surtir
efecto.

115

Otro ejemplo sobre esta propiedad: Al pasar el mouse por encima del
Commandbutton, se cambiar la fuente, en Negrita, el Subrayado, y el color de
fondo, al salir el puntero fuera del botn, se reestablecer a la fuente normal,
y se restaurar el color de fondo usando el color por defecto que utiliza
windows para los botones, mediante la constante VbButtonFace
Para el ejemplo, colocar un Command1, colocar la propiedad Style en Graphical
y pegar estas lneas en el formulario:
Texto planoImprimir
1. Option Explicit
2.
3. ' -- Flag para que no se ejecute constantemente
4. ' -- el cdigo del Form y del CommandButton
5. Dim Flag As Boolean
6.
7. Private Sub Command1_MouseMove(Button As Integer, Shift As Integer,
X As Single, Y As Single)
8.
9.

10.

' -- Establecer la fuente del commandButton en negrita y con su


brayado
If Flag Then

11.

Command1.Font.Bold = True

12.

Command1.Font.Underline = True

13.

Command1.BackColor = vbWhite

14.

Flag = False

15.

End If

16.
17.

End Sub

116

18.
19.

Private Sub Form_MouseMove(Button As Integer, Shift As Intege


r, X As Single, Y As Single)

20.

' -- Quita la negrita, el subrayado, y restaura el color


de fondo

21.

If Flag = False Then

22.

Command1.Font.Bold = False

23.

Command1.Font.Underline = False

24.

Command1.BackColor = vbButtonFace

25.

Flag = True

26.

End If

27.
28.

End Sub

Propiedad Default
Esta propiedad es muy til en ciertas locaciones, sobre todo en formularios y
programas que utilizan bases de datos, y opciones para buscar.
Default puede tener dos valores , True o False. Si est en True, el botn ser el
botn por defecto que se ejecutar cuando se presione la tecla enter. Por
ejemplo hagamos de cuenta que nuestro programa contiene un botn. Ese
botn ejecuta un cdigo para buscar datos en una base de datos. Si el usuario
en un momento determinado, se encuentra escribiendo datos en un control
textbox, y presiona la tecla Enter, el CommandButton al tener la propiedad
Default en True, ejecutar el cdigo que tenga en el evento click. En este
caso , en el evento clic, contendra todo el cdigo para realizar la bsqueda de
registros.
117

Un simple ejemplo
Coloca: Un control TextBox, un CommandButton. Pega el siguiente cdigo
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command1_Click()
4.

MsgBox "Se ejecut el evento Click del commandButton", vbInform


ation

5. End Sub
6.
7. Private Sub Form_Load()
8.

' -- Establecer propiedad Default

9.

Command1.Default = True

10.
11.

MsgBox "Coloca el cursor en un control textbox para que t


ome el foco, " & _

12.

"y luego, presiona la tecla enter, y vers como de


todas formas " & _

13.

"se ejecut el evento click ya que es el control p


or defecto del" & _

14.

"formulario. ( Nota .Solo puede haber un solo bot


n con la propiedad " & _

15.

"Default en un formuario)", vbInformation

16.
17.

End Sub

118

Propiedades de posicin
Las propiedades de posicin son las que permiten cambiar el tamao y la
posicin en el objeto que lo contiene. estas propiedades son cuatro : Left, Top,
Height y Width.
El siguiente ejemplo muestra como usar estas propiedades. Supongamos que
nuestro formulario contiene un botn "Salir" en la parte inferior:

Ahora bien como hacer para que al presionar el botn de maximizar del
formulario o cambiar de tamao el formulario, el botn contine situado en la
esquina inferior derecha ? Para ello hay que modificar la propiedad Left y Top
del botn. Pero donde colocar el cdigo? para ello se debe colocar en el
evento Resize del formulario.
Puedes probar este simple ejemplo con el siguiente cdigo:
Texto planoImprimir
1. Option Explicit

119

2.
3. ' Valores para mrgenes - Prueba cambiando estos valores
4. Private Const MARGEN_IZQUIERDO
5. Private Const MARGEN_INFERIOR

As Single = 60
As Single = 60

6.
7. Private Sub Command1_Click()
8.

Unload Me

9. End Sub
10.
11.
12.

Private Sub Form_Load()

13.

Command1.Caption = "Salir"
End Sub

14.
15.

' -- Posicionar el botn al cambiar de tamao la ventana de f


ormulario

16.

Private Sub Form_Resize()

17.

Command1.Left = (Me.ScaleWidth - Command1.Width) - MARGEN


_IZQUIERDO

18.

Command1.Top = (Me.ScaleHeight - Command1.Height) - MARGE


N_INFERIOR

19.

End Sub

120

Propiedad Enabled
Esta propiedad lo que hace es habilitar o deshabilitar el botn. Es una
propiedad que la poseen casi todos los controles, tanto los de Visual basic,
como otros controles de terceros ( controles ocx o Activex )
Aqu puedes ver ver un pequeo ejemplo de su uso.
Supongamos que nuestro programa contiene un un control de texto donde se
ingresan datos para buscar registros en una base de datos. Y tambin tenemos
un botn que contiene el cdigo que debe ejecutar para realizar la bsqueda
dentro de la base de datos. Si en algn momento el control de texto no
contiene datos, es decir no contiene texto valga la redundancia, no sera
necesario que el botn se encuentre habilitado, por el contrario, deberamos
deshabilitarlo.
Puedes probar este simple ejemplo, colocando un control Textbox , un botn y
pegando el siguiente cdigo en el formulario principal

Texto planoImprimir
1. Option Explicit
2.
3.
4. Private Sub Command1_Click()
5.

MsgBox Text1.Text, vbInformation

6. End Sub
7.
8. Private Sub Form_Load()
9.

Text1.Text = ""

121

10.
11.

Command1.Caption = "Buscar .."


End Sub

12.
13.

' -- El evento Change se produce cuando cambia el contenido

14.

' -- de la caja de texto

15.

Private Sub Text1_Change()

16.

If Text1.Text = "" Then

17.
18.

Command1.Enabled = False
Else

19.
20.
21.

Command1.Enabled = True
End If
End Sub

Modificar propiedades de varios controles


Si en el algn momento se necesita, por ejempo, habilitar o deshabilitar todos
los botones que hay en el formulario, o por ejemplo camabiarle y establecerle
otras propiedades que se deseen, puedes utilizar un bucle For Each para
recorrer todos los controles del formulario,y utilizando el operador TypeOf de
Visual basic, comprobar si el control dentro del bucle es de tipo
CommandButton.

Nota. El ejemplo no tiene ninguna utilidad especifica, solo muestra el uso del
ejemplo.

122

Debes colocar dos controles textBox. Text1 y Text2, y todos los botones que
desees, por ejemplo 4 como mustra la imagen de abajo
Al colocar el cursor en el Text1 se habilitarn todos los botones, luego al
colocar el cursor en el Text2, es decir cuando recibe el foco, se deshabilitarn
todos los botones.

Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Form_Load()
4.

Command1.Caption = "Opcin 1"

5.

Command2.Caption = "Opcin 2"

6.

Command3.Caption = "Opcin 3"

7.

Command4.Caption = "Opcin 4"

8. End Sub
9.
10.

' \\ -- Procedimiento para activar y desactivar los botones

11.

Sub EnabledDisabled(ByVal bValue As Boolean)

12.
13.

' -- Recorrer todos los objetos y controles del form

14.

Dim xCtrl As Control

15.

For Each xCtrl In Me.Controls

123

16.

' xCtrl es un Command Button ?

17.

If TypeOf xCtrl Is CommandButton Then

18.

' si lo es, entonces habilitarlo o deshabilitarlo

19.

xCtrl.Enabled = bValue

20.
21.
22.

End If
Next
End Sub

23.
24.

'\\ -- Deshabilitar

25.

Private Sub Text2_GotFocus()

26.
27.

Call EnabledDisabled(False)
End Sub

28.
29.

'\\ -- Activar

30.

Private Sub Text1_GotFocus()

31.
32.

Call EnabledDisabled(True)
End Sub

Propiedad MousePointer y Mouseicon

124

Estas dos propiedades son muy simples de usar y son comunes a la mayora
de objetos y controles de vb
Mousepointer devuelve o establece el tipo de puntero del mouse mostrado al
pasar por encima de un objeto
MouseIcon establece un icono personalizado para el mouse
Ejemplo. Colocar un control ListBox y un botn. Pegar el siguiente cdigo
fuente en el formulario

Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Form_Load()
4.
5.

With Command1

6.

' -- Puntero de mouse personalizado - Pasar usar con conos

7.

.MousePointer = 99

8.

9.

' -- usar el cono del formulario ( Puedes especificar el q


ue desees cargandolo desde la ventana de propiedades o utilizando l
a funcin LoadPicture)

10.

.MouseIcon = Me.Icon
End With

11.

125

12.

' -- Cargar la lista de punters de mouse para el botn

13.

With List1

14.

.AddItem "0 - Default"

15.

.AddItem "1 - Arrow"

16.

.AddItem "2 - Cross"

17.

.AddItem "3 - Beam"

18.

.AddItem "4 - Icon"

19.

.AddItem "5 - Size Ne SW"

20.

.AddItem "6 - Size Ne SW"

21.

.AddItem "7 - Size N S"

22.

.AddItem "8 - Size NW Se"

23.

.AddItem "9 - Up Arrow"

24.

.AddItem "10 - HourGlass"

25.

.AddItem "Custom"

26.

End With

27.
28.

End Sub

29.
30.

Private Sub List1_Click()

31.

' -- Cambiar la propiedad MousePointer

32.

With List1

33.
34.

If .ListIndex <> -1 Then


Command1.MousePointer = .ListIndex

35.

End If

36.

If .ListIndex = .ListCount - 1 Then

126

37.

Command1.MousePointer = 99

38.

Command1.MouseIcon = Me.Icon

39.
40.
41.

End If
End With
End Sub

Mtodos y funciones
Este control prcticamente no contiene mtodos o funciones. El mas
importante y el mas utilizado es el mtodo SetFocus, que tambin lo posen
muchos otros controles.
Lo que hace el mtodo setFocus, es poder establecer el enfoque a un objeto
especifico, en este caso al botn. Su uso es muy simple, solo basta con
ejecutarlo desde alguna parte de nuestro programa para que el
Commandbutton pase a tener el foco.
Una cosa muy importante a tener en cuenta , es que para poder establecer el
foco a cualquier control de visual basic, el objeto se debe encontrar visible, y
tambin se debe encontrar habilitado. Es decir, si la propiedad Visible o la
propiedad Enabled del objeto se encuentran en False, esto producir un error
en tiempo de ejecucin. Por ello siempre se debe colocar una rutina de error
para poder controlar esto, o comprobando estas propiedades mediante una
instruccin If Then
Para recrear este error puedes ejecutar este cdigo
Coloca dos botones
Texto planoImprimir

127

1. Option Explicit
2.
3. Private Sub Command2_Click()
4.

' -- Esta instruccin generar un error, ya que le intentar pa


sar el foco

5.

' -- al command1, que se encuentra deshabilitado

6.

Command1.SetFocus

7. End Sub
8.
9. Private Sub Form_Load()
10.

' -- Deshabilitamos el Command1

11.

Command1.Enabled = False

12.

MsgBox "Presiona el Botn Command2", vbInformation

13.

End Sub

Para solucionarlo, simplemente puedes hacer algo asi


Colocar dos botones
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command2_Click()
4.

With Command1

128

5.

' -- Si est visible y esta habilitado, entonces .. pasar e


l foco

6.

If .Visible And .Enabled Then

7.

.SetFocus

8.

End If

9.

End With

10.

End Sub

11.
12.
13.
14.

Private Sub Form_Load()


MsgBox "Presiona el Botn Command2", vbInformation
End Sub

Eventos principales del control CommandButton


Aparte del evento Click que se ejecuta cuando lo presionamos, otros eventos
importantes son:

Evento GotFocus y LostFocus : Se disparan dichos eventos cuando el


control recibe o pierde el foco

MouseMove, MouseDown y MouseUp: El primero se dispara cuando


el puntero del mouse se mueve encima del botn, MouseDown cuando
el botn est abajo y cuando est arriba MouseUp
129

Por ejemplo para probar el uso de los mtodos GotFocus y LostFocus (recibe y
pierde el foco) colocar 3 CommandButton, Command1, Command2 y
Command3. Luego un Label1 que mostrar el control que recibe el foco
(GotFocus) y un Label2 que mostrar el control que pierde el foco (LosFocus)
Luego de aadir los controles pegar el cdigo siguiente en el formulario
Texto planoImprimir
1. Private Sub Command1_GotFocus()
2.

Label1 = "El foco lo tiene: " & Command1.Caption

3. End Sub
4.
5. Private Sub Command2_GotFocus()
6.

Label1 = "El foco lo tiene: " & Command2.Caption

7. End Sub
8.
9. Private Sub Command3_GotFocus()
10.
11.

Label1 = "El foco lo tiene: " & Command3.Caption


End Sub

12.
13.
14.
15.

Private Sub Command1_LostFocus()


Label2 = "Perdi el foco el: " & Command1.Caption
End Sub

16.
17.
18.
19.

Private Sub Command2_LostFocus()


Label2 = "Perdi el foco el: " & Command2.Caption
End Sub

130

20.
21.
22.
23.

Private Sub Command3_LostFocus()


Label2 = "Perdi el foco el: " & Command3.Caption
End Sub

Nota: en la ventana de cdigo pods ver que tens 2 combos o listas


desplegables:

El combo de la izquierda muestra los objetos que tiene el formulario, es decir


los controles, rutinas y funciones, y la lista de la derecha los eventos y
mtodos del objeto seleccionado en la lista izquierda.
En la captura del ejemplo anterior, se puede ver que cuando el cursor se
encuentra dentro de la ventana de cdigo est situado en un procedimiento
determinado, las listas se actualizan mostrndote dicho objeto, por ejemplo el

131

cursor est en el control u objeto llamado Command3 en el evento Gotfocus,


y las listas desplegables muestran esto mismo.
Siguiendo el ejemplo anterior, para escribir cdigo en el evento MouseMove del
Command1 para que muestre un mensaje cuando pasa el mouse encima del
botn, se tendra que seleccionar de la lista izquierda el Command1 de esta
forma:

y despus seleccionar el evento que se quiera utilizar disponible en el otro


combo desplegable, en este caso el MouseMove

132

Al hacer esto en la ventana de cdigo visual basic te agrega un procedimiento


vaco:

Ahora el cdigo que escribas dentro de este procedimiento se va a disparar


cada vez que pases el mouse encima del Command1. Por ejemplo para
mostrar un mensaje con la funcin MsgBox cada ves que pases el puntero
encima, agrega lo siguiente:
Texto planoImprimir
1. Option Explicit
2.
3. ' -- \\ Evento MouseMove
4. Private Sub Command1_MouseMove( _
5.

Button As Integer, _

6.

Shift As Integer, X As Single, Y As Single)

7.
8.

MsgBox "Ests encima del botn", vbInformation

9.
10.

End Sub

133

Tomar la apariencia de los temas de windows para los


botones
Por defecto el aspecto de los botones, no toma la apariencia del tema que
tenga activo windows. Para poder hacer que los botones y el resto de los
controles tengan la tengan, se puede utilizar un archivo Manifest.

En el siguiente enlace puedes ver un ejemplo de como implementarlo:


Tomar la apariencia de los temas de windows para los controles del programa

La funcin especfica del control OptionButton es permitirle al usuario elegir


entre diferentes opciones dentro de un grupo de opciones. Este control no se
utiliza de a uno solo, si no que se debe tener por lo menos 2 de ellos, ya que
sera ilgico utilizar uno solo.

En este grupo de opciones solo puede estar un solo botn de opcin


seleccionado al mismo tiempo
134

Luego, de acuerdo a la opcin seleccionada, se utiliza en algn procedimiento o


funcin para realizar alguna opcin u operacin.

Propiedad Value del OptionButton


Esta es la propiedad mas importante de este control. Los valores que puede
tener la propiedad Value son de tipo boolean (Verdadero - Falso) es decir True
y False.
Para probar un ejemplo muy fcil de como verificar el valor de la propiedad
Value , agrega 3 OptionButton dentro de un control Frame como muestra la
imagen anterior.
Mediante la propiedad Caption le cambias el texto de cada botn de opcin.
Luego Agrega un Command1 y en el caption escribe Aceptar.
Ahora pega este cdigo en el formulario:

Private
Sub
Command1_Click()
'Si est seleccionado el Option1 se ejecuta la siguiente
condicin
135

If
MsgBox
End

Option1.Value
"Seleccionaste

=
pagar

True
en

'Si
est
seleccionado
el
Option2
If
Option2.Value
=
True
MsgBox "Seleccionaste pagar con Tarjeta de
End
'Si est
If
MsgBox
End

Then
Efectivo"
If
esta
Then
crdito"
If

seleccionado el Option3 se ejecuta esta otra


Option3.Value
=
True
Then
"Seleccionaste
pagar
mediante
Cheque"
If

End Sub

Al probar el ejemplo se puede ver que al seleccionar un botn de opcin, y


luego presionar el Command1, se evala mediante una condicin If Then, el
valor de los Option1, Option2 y Option3. El Optionbutton que se encuentre
con el valor True en la propiedad Value , ejecutar la funcin MsgBox
mostrando el mensaje correspondiente a la opcin seleccionada.
Este control, al igual que control CommandButton y el control CheckBox, tiene
la propiedad Style, que permite establecer la visualizacin del mismo en modo
estndar o en modo grfico. Los posibles valores son 0 - Standar o 1 Graphical.
Las dems propiedades que posee son comunes a la mayora de los otros
controles del visual basic, como:

Propiedad Forecolor (color de la fuente)

Propiedad Font ( para especificar el tipo de fuente, el estlo, el tamao


etc...)

Propiedad Enabled ( Para habilitar o deshabilitar el control )

Propiedad Hight y Width ( Ancho y alto del control )

136

Propiedad Backcolor ( color del fondo )

Propiedad ToolTipText ( Muestra un recuadro con informacin adicional


cuando el mouse est encima del control )

Propiedad Visible ( determina si el control estar visible - Los valores


son True y False )

Otro ejemplo del control OptionButton:


Coloca 2 controles OptionButton llamados Option1 y Option2 dentro de un
control Frame (opcional). Tambin colocar un control Label llamado Label1,
como est en esta imagen:

Al Option1 en la propiedad Caption escribir " Mostrar la hora del sistema "
y en el Option2 "Mostrar la Fecha del sistema".
Este ejemplo muy simple lo que hace es, cuando hacemos Click en el Option1,
se visualizar la hora en el Label1 usando la funcin Time que devuelve la
hora establecida del Pc. En cambio cuando hagamos Click en el Option2 se
visualizar la Fecha, en este caso usamos la funcin Date del Visual Basic que
recupera la Fecha.

137

Esto se realiza en el evento Click de cada OptionButton. El Evento Click es la


propiedad por defecto. y desde la ventana de diseo al hacer un doble Click
sobre el Option1, se abrir la ventana de cdigo con el procedimiento Click
para este Option1, y todas las instrucciones de cdigo que estn en ese
procedimiento, entre Private Sub Option1_Click y End Sub, se ejecutarn
cuando se le de un click a dicho botn de opcin.

Pegar este cdigo en el formulario:

Private
Sub
Form_Load()
'Le establecemos en tiempo de ejecucin algunas propiedades
al
control
Label1
'cuando
carga
el
formulario
'Esto hace que el control Label se ajuste al texto
Label1.AutoSize
=
True
'Esta lnea cambia la propiedad Forecolor del Label en azul
Label1.ForeColor
=
vbBlue
End
Sub
Private
'Mostramos
Label1
End
Private
'Mostramos
Label1
End Sub

en

el

Sub
Label1

la

fecha

en

el

Sub
Label1

la
=

Hora

Option1_Click()
del
Sistema
Date
Sub
Option2_Click()
del
sistema
Time

Por ltimo un detalle importante sobre el uso de los OptionButton


Por ejemplo supongamos que queremos en un mismo formulario, tener varios
grupos de opciones .Para hacer esto se deben colocar el grupo de OptionButton
contenidos en un control contenedor, por ejemplo un Frame, de esta manera
cada grupo de OptionButton ser nico. Para que se entienda mejor un
ejemplo.

138

Colocar 2 Controles Frame ( Frame1 y Frame2 ) . Dentro del Frame1 agregar 2


OptionButton (Option1 y Option2) y en el Frame2 otros 2 Option (Option3 y
Option4)

Ahora puede haber varios Option Button seleccionados, cosa que no ocurrira si
todos los OptionButton estaran en el mismo control contenedor.
Por ltimo coloca el Option3 y Option4 dentro del Frame1. Ahora estos 2 son
parte de un solo grupo dentro del Frame1, por lo tanto con esta prueba se ve
que solo puede haber uno con la propiedad Value en True, es decir un solo
botn de opcin seleccionado al mismo tiempo.

Ejemplo para crear un OptionButton con grficos


El siguiente ejemplo para descargar es muy simple, y es una idea para poder
crear Controles OptionButton mediante grficos cargados en controles Image
por ejemplo:

139

Enlaces relacionados

Controles ocx para botones y ejemplos

Volver al ndice

Tema 3.- funcionamiento de mdulos.


Modulo de cargar formulario
Para dar inicio se comenz por buscar el logo de la empresa donde se tena la
firma de la compaa y se comenz por cambiar el nombre al formulario, creando
una macro que se llamara ingresar clientes, la cual se grabo y se le asigno la
macro a nuestra imagen.

Despus, procedimos a disear nuestro formulario y darle nombre y editar cada


una de sus partes como se pudo desarrollar en nuestra explicacin de cmo
funciona nuestro programa.

140

Imagen donde se ve el diseo de nuestro formulario.

Imagen en la que se ve el cambio al formulario.


Antes de comenzar, se hizo el primer modulo el cual fue el que mediante en una
imagen en Excel se pudiese cargar todo mi formulario y esto se logro mediante el
siguiente cdigo.

El entorno de VBA para Microsoft Excel es un medio en el cual se unen dos


grandes programas, uno es el programador Visual Basic y otro es el mismo Excel.

141

Este se puede programar con ciertas rutinas que se muestran al experimentar con
el mediante una Macro, ya que al guardarla permite definir un cdigo el cual
muestra al darle la opcin de editar, para esto se muestra el siguiente ejemplo:

En esta figura se puede observar cuales son los botones con los cuales se piensa
trabajar para desplegar las macros que hayamos guardado.

En esta figura estn las macros que se han guardado y se muestran varios
botones como es ejecutar, paso a paso, modificar, eliminar y opciones.
Si seleccionamos la opcin de ejecutar, el cdigo lo que har ser correr todo lo
que se tenga programado en la rutina del cdigo. Por ejemplo:
Si seleccionamos de nuestras macro la opcin de uso de formulas la cual es la
tercera y le damos ejecutar: automticamente se ejecutara el siguiente cdigo:

142

Para comenzar, es necesario destacar que el programa fue hecho a pasos


mediante el programador de macros en Excel. Para esto nuestro primer objetivo
fue programar la macro que me permitiera balancear las cargas de modo de que
sienia una tabla como la siguiente:

Imagen donde se puede ver un desbalance de mi sistema.


Lo que tiene que hacer mi programa en este caso es escribir varias opciones,
donde me de la menor cantidad de porcentaje de desbalance, esto ayuda a que no
toda la carga se vaya a una sola fase y se sobrecaliente y por ello llegue a haber
un cobro de luz muy caro por sobre calentamiento, ya que como sabemos el
calentamiento hace que las molculas internas de un conductor se agiten y por
esta causa conduzca menos electricidad ya que los electrones chocan unos con
otros y no pueden viajar sin obstrucciones , como pasara con una manguera
cuando se obstruye por un doblez, el doblez seria el sobrecalentamiento que hace
que obstruya el paso de agua, el cual seran los electrnes.
Por lo cual se realizo el siguiente formulario:
143

En este cuadro se puede ver como pregunta mi programa por cuantas veces
quiere que se cicle el codigo.

Aqu se puede ver como cambio la fases de modo de que de tener un desbalance
de mas de 60% lo dejo en tan solo un 8,8%., Y Todava se piensa en un futuro
bajar an ms el desbalance con el hecho de separar el numero de cargas. Nota:
cabe aclarar que solo se llevara por mientras un balance de lo que ha metido el
usuario a la tabla de Excel.
Y el programa para este modulo de balanceo es:
Sub Procedimientobalancear(n As Integer)
Dim ncarateres, m As Integer
Dim a2, e2, f2(7) As Double
Dim d2(7) As String

144

'se inicializan mis variables donde e2 que es una variable que es parte de un
arreglo que guarda todos los valores
' que se pueden anotar en la celda de balanceo de circuito
e2 = 0
a2 = Range("J" & ncolJ & "").Value
'se iguala m y n ya que es necesario cada vez que se actualiza el codigo decirle
que la celda de mi respuesta sugerida, es
'igual a la respuesta minima encontrada en algun balanceo anterior o el primero
m=n
'ncarateres guarda cuantas fases son las que se estan contando y se empieza a
tomar control mediante ifs
ncarateres = Range("E" & n).Value
If ncarateres = 1 Then
'aqui pertenece a tres opciones que puede haber por eso e2{0,1,2}, donde
calcamos escribir {A,B,C}, y al final comparar
'cual fue el resultado mas bajo y guardarla en otra casilla y asi para las demas
opcines
For e2 = 0 To 2
If e2 = 0 Then
d2(e2) = "A"
'con Range se elige la celda D&n que es una celda que va cambiando de valor
segun va cambiando n de nuestro procedi
'miento, donde se guarda el valor de la celda activa a una variabiable d2(e2) y se
compara al final con f2(e2) qu
'e es el valor que nos retorno al escribir ya sea {A,B,C}. Y lo mismo pasa para las
dems variables
Range("D" & n & "").Select
ActiveCell.FormulaR1C1 = d2(e2)
f2(e2) = Range("J" & ncolJ & "").Value
End If

145

If e2 = 1 Then
d2(e2) = "B"
Range("D" & n & "").Select
ActiveCell.FormulaR1C1 = d2(e2)
f2(e2) = Range("J" & ncolJ & "").Value
End If

If e2 = 2 Then
d2(e2) = "C"
Range("D" & n & "").Select
ActiveCell.FormulaR1C1 = d2(e2)
f2(e2) = Range("J" & ncolJ & "").Value
End If
'aqui se hace la comparacin entre el valor que dio al entrar {A,B,C} Y lo que se
tenia guardado de la variable
'al inicio y se guarda como opcin de sugeriencia si fue menor en otra casilla la
cual es la k&m
If f2(e2) <= a2 Then
Range("K" & m & "").Select
ActiveCell.FormulaR1C1 = d2(e2)
a2 = Range("J" & ncolJ & "").Value
End If
'finalmente aqui se toma de las tres opciones cual la opcin sugerida ideal y se
deja la opcion en la casillaa D&n.
If e2 = 2 Then
Range("K" & m & "").Select
d2(e2) = ActiveCell.FormulaR1C1
Range("D" & n & "").Select
ActiveCell.FormulaR1C1 = d2(e2)
146

End If
Next
End If

'Aqui sucede lo mismo que el parrafo anterior solo que es para dos fases
{AB,AC,BC}
If ncarateres = 2 Then
For e2 = 3 To 5
If e2 = 3 Then
d2(e2) = "AB"
Range("D" & n & "").Select
ActiveCell.FormulaR1C1 = d2(e2)
f2(e2) = Range("J" & ncolJ & "").Value
End If

If e2 = 4 Then
d2(e2) = "AC"
Range("D" & n & "").Select
ActiveCell.FormulaR1C1 = d2(e2)
f2(e2) = Range("J" & ncolJ & "").Value
End If

If e2 = 5 Then
d2(e2) = "BC"
Range("D" & n & "").Select
ActiveCell.FormulaR1C1 = d2(e2)
f2(e2) = Range("J" & ncolJ & "").Value
End If
147

If f2(e2) <= a2 Then


Range("K" & m & "").Select
ActiveCell.FormulaR1C1 = d2(e2)
a2 = Range("J" & ncolJ & "").Value
End If
If e2 = 5 Then
Range("K" & m & "").Select
d2(e2) = ActiveCell.FormulaR1C1
Range("D" & n & "").Select
ActiveCell.FormulaR1C1 = d2(e2)
End If
Next
End If
'Y en este caso como es para tres fases y no se tiene una combinacin pues
simplemene se pone como sugeriencia y se
'agrega a la fila D la respuesta sin cambios.
If ncarateres = 3 Then
e2 = 6
d2(e2) = "ABC"
Range("D" & n & "").Select
ActiveCell.FormulaR1C1 = d2(e2)
f2(e2) = Range("J" & ncolJ & "").Value

Range("K" & m & "").Select


ActiveCell.FormulaR1C1 = d2(e2)
Range("D" & n & "").Select
ActiveCell.FormulaR1C1 = d2(e2)
End If
148

End Sub

Modulo de Balanceo de Linea.


Para este modulo lo nico que hace es construir un balanceo de lnea si ya se
tienen capturados todos los datos requerido y no se desea agregar algo mas, en
esta pare se le pregunta cuantas veces se quiere balancear y si no se quiere
balancear simplemente se sale del cdigo, no iimportando que este lleno o vacio
alguna celda.
Private Sub CommandButton1_Click()
' se inicializan las variables, donde la columnaA es lo que va a contener mi celda
que se va a verificar, que no sea
'igual a que diga principal, ya que principal es lo que me determina cuando debe
detenerse y contabilizar en donde quedo mi
'cursor
columnaA = ""
'contar2 debe de iniciar en uno ya que no existe celda A0 como inicio, y bien
sabemos que el inicio es A1.
contar2 = 1
'En este ciclo se cuenta cuantas veces tiene que bajar nuestra columna A2 por el
incremento de contar2, donde es guardado,
'mediante un ciclo Do Loop, que significa hacer hast
Do
If columnaA = "PRINCIPAL" Then
Exit Do
End If
Range("A" & contar2 & "").Select
columnaA = ActiveCell.FormulaR1C1
contar2 = contar2 + 1
Loop

149

'se restan los primeros 12 renglones que se cuentan para el siguiente numero para
que con esto podamos obtener el numero
'exacto de columnas a balancear o dicho de otra manera, solo cuenta los circuitos
contar2 = contar2 - 12
'se pone el lugar limite donde queremos balancear
limite = 10 + contar2
'se ingresa cuantas veces se desea repetir..para obtener un resultado mas exacto.
b = InputBox("ingresa cuantas veces quieres ciclar el for:", "desicion 2", "pon tu
numero aqui:")
'se repite el numero de veces que se piensa repetir el ciclo volviendo a empezar
en
For a = 1 To b
n = 11
ncolJ = contar2 + 12
For n = 11 To limite
Procedimientobalancear (n)
Next
Next
End Sub

150

Aqu se puede mostrar cual es el botn que indica nuestra funcin de balancear
las lneas y todo lo anteriormente mostrado.
Modulo de agregar informacin y datos
Para este modulo se quiz agregar la informacin de los textbox que se fueran
realizando

MODULO DE CONVERSIO DE CUALQUIER TIPO DE UNIDAD A WATTS


Resulta que mucho de el trabajo elctrico que se realiza se tiene que trabajar en
watts ya que es la unidad estndar de trabajo en el rea elctrica para esto se
tuvo que proceder a hacer uso de un combo box y de almacenar algunas opcines
en forma numrica para poder controlar mediante ifs y asi solo cambiar lo que
almacenaramos en una caja de texto para convertirla a watts directamente,
Los procedimientos fueron los siguientes

151

Figura donde se muestra el cambio de la seleccin por el nombre CONV.


Como se puede ver en la imagen, para poder hacer la base de datos para nuestro
Combo Box1 primero se dio formato a la siguiente tabla hecha en Excel dndole
nombre de CONV. Donde despus nosotros pudiramos cambiar las propiedades
del combo box que se llama Row Source y quedara de la siguiente manera en el
programadador:

152

Cambio de formato de RowSource para que pueda cambiar la tabla dentro de los
valores que se dieron a la Tabla con el nombre de CONV.

Para lo cual se tiene despus un desplegado de todas las funciones que


guardamos, como se puede observar en la siguiente imagen.

Despus una breve explicacin del cdigo.:

153

'segn el valor del dato que se halla asignado para dar valor a nuestro combobox
si es igual a lo que esta escrito hara la
'funcin de convertirlo segn su equivalencia.
If ComboBox1.Value = "H.P." Then
TextBox11.Value = TextBox4.Value * 745.7
End If
If ComboBox1.Value = "WATTS" Then
TextBox11.Value = TextBox4.Value * 1
End If
If ComboBox1.Value = "KILOWATTS" Then
TextBox11.Value = TextBox4.Value * 1000
End If
If ComboBox1.Value = "JULIO POR SEGUNDO" Then
TextBox11.Value = TextBox4.Value * 1
End If
If ComboBox1.Value = "CABALLO DE VAPOR" Then
TextBox11.Value = TextBox4.Value * 735.499
End If

If ComboBox1.Value = "ft lbf/s" Then


TextBox11.Value = TextBox4.Value * 1.355818
End If
If ComboBox1.Value = "BTU/h" Then
TextBox11.Value = TextBox4.Value * 0.29329722222222
End If
If ComboBox1.Value = "BTU/s" Then
TextBox11.Value = TextBox4.Value * 1055.87
End If
154

If ComboBox1.Value = "KILOCALORIA/h" Then


TextBox11.Value = TextBox4.Value * 1.1630555555556
End If
If ComboBox1.Value = "KILOCALORIA/s" Then
TextBox11.Value = TextBox4.Value * 4187
End If
End Sub

Private Sub ComboBox2_Change()

ComboBox2.RowSource = "OPCIONES"

End Sub

MODULO DE SITUACION DE LOS CONDUCTORES


Para este y otros mdulos se tuvieron que cargar 4 tablas de la norma oficial la
cual son de las ms usadas para calcular calibres de los conductores.
Se realizo lo siguiente:
Se hizo una tabla para las primeras tres situaciones llamando a la hoja situacin,
que se refiere a mis tres tablas de diferentes artculos, como se ve a continuacin.

155

La idea de esto es que mi cdigo al detectar que sepa mi programa cargar las tres
situaciones y a cada una le asigne un numero, como se puede ver en la imagen.
Y esto se carga con el siguiente cdigo:

Modulo de conductor
Para este modulo es importante primero saber cmo defin su tabla, y la defin de
la siguiente manera:

Para cada tipo de conductor le corresponde una situacin, por ejemplo: si eligo la
situacin 1 en mi cdigo de conductor me dara dos opciones ya sea la del cobre o
el aluminio, mas sin embargo si se elige la situacin tres tengo tre opciones de

156

conductores, una va a ser el cobre, otro el nquel y el ultimo va a ser el aluminio,


ahora queda analizar su cdigo:
Private Sub cbosituacion_Change()
'primero se aade un numero a toda la lista de nuestro indice anterior sumandole 1
por que empieza en 0
IndiceSit = cbosituacion.ListIndex + 1
'se dimensiona un contador
Dim ii As Integer
'se limpia la caja del combobox del conductor
cboconductor.Clear
'se empieza a trabajar con la hoja de excel que se llama "Conductor
With Sheets("Conductor")
'se comienza a contar des de mi celda ii=2 hasta el final que es .Range("A" &
Rows.Count).End(xlUp).Row
For ii = 2 To .Range("A" & Rows.Count).End(xlUp).Row
'si la celda ii de la columna 1 es igual a mi indice del inicio entonces se aade a
la lista del combobox su valor
If .Cells(ii, 1) = IndiceSit Then
cboconductor.AddItem .Cells(ii, 3).Value
End If
'se continua contando
Next ii
End With

End Sub
En esta imagen vemos que es lo que se quiere lograr de opciones de las
siguientes tablas

157

tamao
nominal

mm2

0,8235
1,307
2,082
3,307
5,26
8,367
13,3
21,15
26,67
33,62
42,41
53,48
67,43
85,01
107,2
126,67
152,01
177,34
202,68
253,35
304,02
354,69
380,03
405,37

enterrados a 30C temp. Ambiente


temperatura nominal del conductor (vease Tabla
310-13)
60C
75C
90C
60C
75C
90C
Tipos Tipos
Tipos
Tipos
Tipos
Tipos
TW*
RHW* RHH*
UF*
RHW* RHW-2
THHW
TWD*
RHW-2
XHHW* XHHW
*
XHHWCCE
THW THHN*
BM-AL
2
TWD- THWTHHW
DRS
UV
LS
THWN THHW*
LS
XHHW
THW-2*
*
TT
XHHW*
XHHW2
Alumini Alumini Alumini
Cobre Cobre Cobre
o
o
o
----14
----------18
------20
20
25
------25
25
30
------30
35
40
------40
50
55
------55
65
75
40
50
60
70
85
95
55
65
75
85
100
110
65
75
85
95
115
130
75
90
100
110
130
150
85
100
115
125
150
170
100
120
135
145
175
195
115
135
150
165
200
225
130
155
175
195
230
260
150
180
205
215
255
290
170
205
230
240
285
320
190
230
255
260
310
350
210
250
280
280
335
380
225
270
305
320
380
430
260
310
350
355
420
475
285
340
385
385
460
520
310
375
420
400
475
535
320
385
435
410
490
555
330
395
450
158

Tamao
nominal

AWGKcmil

18
16
14
12
10
8
6
4
3
2
1
1/0
2/0
3/0
4/0
250
300
350
400
500
600
700
750
800

456,04
506,71
633,39
760,07
886,74
1013,42

tamao
nominal

mm2

0,8235
1,307
2,082
3,307
5,26
8,367
13,3
21,15
26,67
33,62
42,41
53,48
67,43
85,01
107,2
126,67
152,01
177,34

435
455
495
520
545
560

520
545
590
625
650
665

585
615
665
705
735
750

355
375
405
435
455
470

425
445
485
520
545
560

480
500
545
585
615
630

enterrados a 30C temp. Ambiente


temperatura nominal del conductor (vease Tabla
310-13)
60C
75C
90C
60C
75C
90C
Tipos
Tipos
Tipos
Tipos
Tipos
Tipos
TW*
RHW*
RHH*
UF*
RHW* RHW-2
THHW
TWD*
RHW-2
XHHW* XHHW
*
XHHWCCE
THW
THHN*
BM-AL
2
TWDTHWTHHW
DRS
UV
LS
THWN THHW*
LS
XHHW
THW-2*
*
TT
XHHW*
XHHW-2
Alumini Alumini Alumini
Cobre Cobre Cobre
o
o
o
----14
----------18
------20
20
25
------25
25
30
------30
35
40
------40
50
55
------55
65
75
40
50
60
70
85
95
55
65
75
85
100
110
65
75
85
95
115
130
75
90
100
110
130
150
85
100
115
125
150
170
100
120
135
145
175
195
115
135
150
165
200
225
130
155
175
195
230
260
150
180
205
215
255
290
170
205
230
240
285
320
190
230
255
260
310
350
210
250
280
159

900
1000
1250
1500
1750
2000

Tamao
nominal

AWGKcmil

18
16
14
12
10
8
6
4
3
2
1
1/0
2/0
3/0
4/0
250
300
350

202,68
253,35
304,02
354,69
380,03
405,37
456,04
506,71
633,39
760,07
886,74
1013,42

tamao
nominal

mm2

0,8235
1,307
2,082
3,307
5,26
8,367
13,3
21,15
26,67
33,62

280
320
355
385
400
410
435
455
495
520
545
560

335
380
420
460
475
490
520
545
590
625
650
665

380
430
475
520
535
555
585
615
665
705
735
750

225
260
285
310
320
330
355
375
405
435
455
470

270
310
340
375
385
395
425
445
485
520
545
560

305
350
385
420
435
450
480
500
545
585
615
630

Al aire libre temp.30C


temperatura nominal del conductor (vease Tabla
310-13)
60C 75C
90C
60C
75C
90C
Tipo
Tipos
Tipos
Tipos
Tipos
Tipos
s
TW
RHW
RHH
UF
RHW
RHH
THHW RHW-2
XHHW RHW-2
THW
THHN
USE-2
THWTHHW
XHH
LS
THWTHWN
XHHW
LS
THWNXHHWXHHW
2
2
XHHW
XHHW2
Cobr
Alumini Alumini Alumini
e
Cobre Cobre o
o
o
----18
----------24
------25
30
35
------30
35
40
------40
50
55
------60
70
80
------80
95
105
60
75
80
105
25
140
80
100
110
120
145
165
95
115
130
140
170
190
110
135
150
160

400
500
600
700
750
800
900
1000
1250
1500
1750
2000

Tamao
nominal

AWGKcmil

18
16
14
12
10
8
6
4
3
2

42,41
53,48
67,43
85,01
107,2
126,67
152,01
177,34
202,68
253,35
304,02
354,69
380,03
405,37
456,04
506,71
633,39
760,07

165
195
225
260
300
340
375
420
455
515
575
630
655
680
730
780
890
980
107
886,74
0
115
1013,42
5

195
230
265
310
360
405
445
505
545
620
690
755
785
812
870
935
1065
1175

220
260
300
350
405
455
505
570
615
700
780
855
855
920
985
1055
1200
1325

130
150
175
200
235
265
290
330
355
405
455
500
515
535
580
625
710
795

155
180
210
240
280
315
350
395
425
485
540
595
620
645
700
750
855
950

175
205
235
275
315
355
395
445
480
545
615
675
700
725
785
845
960
1075

1
1/0
2/0
3/0
4/0
250
300
350
400
500
600
700
750
800
900
1000
1250
1500

1280

1445

875

1050

1185

1750

1385

1560

960

1150

1335

2000

0 a 2000v, de 150C a 250C en canalizacin o cables


temperatura nominal del conductor (vease
tamao nominal
Tamao nominal
Tabla 310-13)
150 200
250C
150C
C
C
TIPO TIPO
TIPOS
TIPO
S
S
FEP
FEP
PFAH
Z
mm2
AWGKcmil
FEPB FEPB TFE
SF
SF
NIQUEL O NIQUIEL
COBRE
RECUBIERTO DE
ALUMINIO
COBRE
0,8235 --------18
1,307 --------16
2,082 34
36
39
--14
3,307 43
45
54
--12
5,26 55
60
73
--10
8,367 76
83
93
--8
13,3 96
110
117
75
6
161

21,15
26,67
33,62
42,41
53,48
67,43
85,01
107,2
126,67
152,01
177,34
202,68
253,35
304,02
354,69
380,03
405,37
456,04
506,71
633,39
760,07
886,74
1013,42

120
143
160
186
215
251
288
332
-------------------------------

125
152
171
197
229
260
297
346
-------------------------------

148
166
191
215
244
273
308
361
-------------------------------

94
109
124
145
169
198
227
260
-------------------------------

4
3
2
1
1/0
2/0
3/0
4/0
250
300
350
400
500
600
700
750
800
900
1000
1250
1500
1750
2000

Como se puede observar en las siguientes tablas primero esta la situacin para la
que fue hecha cada tabla y despus temperaturas y tipo de material, ara lo cual
estan diferentes entre cada una de ellas y tambin los tipos de aislantes para los
que puede trabajar cada parte de la tabla a lo que le corresponden ciertos
amperajes y que a su vez le corresponden ciertos calibres en AWG Kcmil, para
esto son los combo box que pusimos en cada parte del formulario, como se puede
ver en la siguiente figura.

162

Para la opcin de tipo de temperatura no cambia mucho el cdigo lo nico que


cambia es a que elemento vamos a llamar pero es el mismo procedimiento

163

Como se puede ver para elegir la temperatura es el mismo procedimiento que


para elegir el conductor, lo nico que cambia es el nombre de los combosboxes
que vamos a utilizar.
Private Sub cbotemperatura_Change()
IndiceTemp = cbotemperatura.ListIndex + 1
Dim jj As Integer
cboaislante.Clear
With Sheets("Aislamiento")
For jj = 2 To .Range("A" & Rows.Count).End(xlUp).Row
If .Cells(jj, 1) = IndiceSit And .Cells(jj, 2) = IndiceConduc And .Cells(jj, 3) =
IndiceTemp Then
cboaislante.AddItem .Cells(jj, 5)
End If
Next jj
End With
End Sub
Pero eso si su base de datos es mas amplia como veremos en su diagrama de
procedencia:

164

En este caso vemos que para cada temperatura existe dos o hasta tres tipos de
conductores y para cada tipo de situacin existen 2 o tres tipo de conductores y
as es como se va ramificando nuestras opciones, para abarcar las 3 tablas que
tenemos.
Asi pues, cuando elegimos una situacin, se activa un ndice de la columna
situacin y cuando elegimos en otro combo box un conductorse activa un cdigo
de conductor y nos despliega esa lista de opciones y finalmente elegimos la
opcin que nos da para elegir la temperatura, pero no acaba todo ah, tambin se
debe elegir el aislante por lo cual se hizo la siguiente tabla.
CODIGO DE
SITUACIN

CODIGO DE
CONDUCTOR
1
1
1
1
1
1
1

1
1
1
1
1
1
1

CODIGOTEMPERAT CODIGO
AISLAMIEN
URA
AISLAMIENTO TO
1
1
TW*
TWD*
1
2
CCE
1
3
1
4 TWD-UV
2
1
RHW*
THHW*
2
2
THW
2
3
165

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3

1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
1
1
1
1
1
1

2
2
2
2
3
3
3
3
3
3
3
3
1
2
2
2
3
3
3
3
1
2
2
2
2
2
2
3
3
3
3
3
3
3
3
1
2
2
3
3
3
3
3
3
1
1
1
2
2
2
166

4
5
6
7
1
2
3
4
5
6
7
8
1
1
2
3
1
2
3
4
1
1
2
3
4
5
6
1
2
3
4
5
6
7
8
1
1
2
1
2
3
4
5
6
1
2
3
1
2
3

THW-LS
THWN*
XHHW*
TT
RHH*
RHW-2
THHN*
THHW
THHW-LS
THW-2*
XHHW*
XHHW-2
UF*
RHW*
XHHW*
BM-AL
RHW-2
XHHW
XHHW-2
DRS
TW
RHW
THHW
THW
THW-LS
THWN
XHHW
RHH
RHW-2
THHN
THHW
THW-LS
THWN-2
XHHW
XHHW-2
UF
RHW
XHHW
RHH
RHW-2
USE-2
XHH
XHHW
XHHW-2
FEP
FEPB
SF
FEP
FEPB
SF

3
3
3

2
2
3

1
1
2

1 PFAH
2 TFE
1 Z

Modulo de calculo de caliber, corriente e ITM

Se utilizo algunas funciones de Excel que me permiten el control y ubicacin de un


numero inmediato superior para seleccin de calibre y primero se extrajo la
corriente a la que deba de trabajar nuestro equipo debido a nuestra carga, voltaje,
potencia, numero de fases y para que pudiera trabajar nuestras formulas

167

Figura donde se puede ver cmo funciona nuestra funcin coincidir anidada en
ndice para poder extraer el amperaje inmediato superior,
La funcin coincidir tiene la siguiente sintaxis
COINCIDIR(valor_buscado,matriz_buscada, [tipo_de_coincidencia]) la funcin lo
que me hace es devolver un valor que corresponda al tipo de coincidencia que yo
desee en una matriz buscada, pero muchas de las veces devolvindome el valor
de la posicin vertical y no el valor y para ello se utiliza la funcin ndice, la cual su
sintaxis es la siguiente: INDICE(matriz; nm_fila; [nm_columna]), en este caso
como con la funcin coincidir ya tenemos el calibre exacto, lo nico que
procedemos es a encontrar que amperaje es con el el que se esta trabajando para
dar un amperaje inmediato superior.

Ahora para esto antes bien se tuvo que saber de que calibre era nuestro conductor
y esto se hizo con la formula de coincidir, pero de otra manera.

168

Frmula para encontrar el calibre que le corresponde segn el amperaje.


Con esta frmula lo que hacemos es de nuestro amperaje que estamos buscando
buscar de todos nuestros amperajes el mayor que le sigue y contabilizarlo de
manera de fila para que nuestra funcin ndice nos retorne que valor es el que le
corresponde.
Es necesario invertir las tres tablas para que pueda funcionar nuestra funcin
coincidir y pueda encontrar el mayor de toda la tabla.
Aqu una demostracin de cmo quedaron las tablas:
tamao
nominal
mm2

enterrados a 30C temp. Ambiente


temperatura nominal del conductor (vease Tabla
Tamao
310-13)
nominal
60C
75C
90C
60C
75C
90C AWGKcmil
Tipos
Tipos
Tipos
Tipos
Tipos
Tipos
TW*
RHW*
RHH*
UF*
RHW* RHW-2
XHHW
TWD*
THHW* RHW-2
XHHW
*
XHHWCCE
THW
THHN*
BM-AL
2
THWTWD-UV
THHW
DRS
LS
THWN* THHWLS
169

XHHW
THW-2*
*
TT
XHHW*
XHHW2
Cobre

BUSCAR
COINCIDIR
INDICE
AMPERAJE
DE
MINIMA
DIFERENCI
A

Alumin Alumin Alumin


io
io
io

Cobre

84,73863
636
0,261363
636

85

AMPERAJE
INMEDIAT
O
SUPERIOR
#CALIBRE
INMEDIAT
O
SUPERIOR
1013,42
886,74
760,07
633,39
506,71
456,04
405,37
380,03
354,69
304,02
253,35
202,68
177,34
152,01
126,67
107,2
85,01
67,43
53,48
42,41

Cobre

560
545
520
495
455
435
410
400
385
355
320
280
260
240
215
195
165
145
125
110

85

85

95

85

90

85

665
650
625
590
545
520
490
475
460
420
380
335
310
285
255
230
200
175
150
130

750
735
705
665
615
585
555
535
520
475
430
380
350
320
290
260
225
195
170
150
170

470
455
435
405
375
355
330
320
310
285
260
225
210
190
170
150
130
115
100
85

560
545
520
485
445
425
395
385
375
340
310
270
250
230
205
180
155
135
120
100

630
615
585
545
500
480
450
435
420
385
350
305
280
255
230
205
175
150
135
115

2000
1750
1500
1250
1000
900
800
750
700
600
500
400
350
300
250
4/0
3/0
2/0
1/0
1

33,62
26,67
21,15
13,3
8,367
5,26
3,307
2,082
1,307
0,8235

tamao
nominal

mm2

BUSCAR

AMPERAJE
DE
MINIMA
DIFERENC
IA
AMPERAJE
INMEDIAT
O
SUPERIOR

95
85
70
55
40
30
25
20
0
0

115
100
85
65
50
35
25
20
0
0

130
110
95
75
55
40
30
25
18
14

75
65
55
40
0
0
0
0
0
0

90
75
65
50
0
0
0
0
0
0

100
85
75
60
0
0
0
0
0
0

2
3
4
6
8
10
12
14
16
18

Al aire libre temp.30C


temperatura nominal del conductor (vease Tabla 310Tamao
13)
nominal
60C
75C
90C
60C
75C
90C
Tipos
Tipos
Tipos
Tipos
Tipos
Tipos
TW
RHW
RHH
UF
RHW
RHH
THHW RHW-2
XHHW RHW-2
THW
THHN
USE-2
THW-LS THHW
XHH
THWN THW-LS
XHHW AWGKcmil
THWNXHHWXHHW
2
2
XHHW
XHHW2
Alumini Alumini Alumin
Cobre
Cobre
Cobre
o
o
io
84,7386
364

80

105

145

105

171

95

100

110

#CALIBRE
INMEDIAT
O
SUPERIOR
1013,42
886,74
760,07
633,39
506,71
456,04
405,37
380,03
354,69
304,02
253,35
202,68
177,34
152,01
126,67
107,2
85,01
67,43
53,48
42,41
33,62
26,67
21,15
13,3
8,367
5,26
3,307
2,082
1,307
0,8235

tamao
nominal
mm2

4
1155
1070
980
890
780
730
680
655
630
575
515
455
420
375
340
300
260
225
195
165
140
120
105
80
60
40
30
25
0
0

3
1385
1280
1175
1065
935
870
812
785
755
690
620
545
505
445
405
360
310
265
230
195
170
145
25
95
70
50
35
30
0
0

6
1560
1445
1325
1200
1055
985
920
855
855
780
700
615
570
505
455
405
350
300
260
220
190
165
140
105
80
55
40
35
24
18

3
960
875
795
710
625
580
535
515
500
455
405
355
330
290
265
235
200
175
150
130
110
95
80
60
0
0
0
0
0
0

4
1150
1050
950
855
750
700
645
620
595
540
485
425
395
350
315
280
240
210
180
155
135
115
100
75
0
0
0
0
0
0

4
1335
1185
1075
960
845
785
725
700
675
615
545
480
445
395
355
315
275
235
205
175
150
130
110
80
0
0
0
0
0
0

2000
1750
1500
1250
1000
900
800
750
700
600
500
400
350
300
250
4/0
3/0
2/0
1/0
1
2
3
4
6
8
10
12
14
16
18

0 a 2000v, de 150C a 250C en canalizacin o cables


temperatura nominal del conductor (vease Tabla 31013)
150C
200C
250C
150C
TIPOS
TIPOS
TIPOS
TIPO
FEP
FEP
PFAH
Z
FEPB
FEPB
TFE
SF
SF
172

Tamao
nominal
AWGKcmil

NIQUEL O
NIQUIEL
RECUBIERTO
DE COBRE

COBRE

BUSCAR

ALUMINIO

84,738636
36

AMPERAJE DE
MINIMA
DIFERENCIA

76

AMPERAJE
INMEDIATO
SUPERIOR

96

110

93

94

#CALIBRE
INMEDIATO
SUPERIOR
1013,42
886,74
760,07
633,39
506,71
456,04
405,37
380,03
354,69
304,02
253,35
202,68
177,34
152,01
126,67
107,2
85,01
67,43
53,48
42,41
33,62
26,67

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
332
288
251
215
186
160
143

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
346
297
260
229
197
171
152

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
361
308
273
244
215
191
166
173

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
260
227
198
169
145
124
109

2000
1750
1500
1250
1000
900
800
750
700
600
500
400
350
300
250
4/0
3/0
2/0
1/0
1
2
3

21,15
13,3
8,367
5,26
3,307
2,082
1,307
0,8235

120
96
76
55
43
34
0
0

125
110
83
60
45
36
0
0

148
117
93
73
54
39
0
0

94
75
0
0
0
0
0
0

4
6
8
10
12
14
16
18

Tema 4.- Alcances posibles.


Los alcances posibles a generar en un futuro estn en el alcance de la
programacin. Actualmente existen programas como AutoCAD que ya pueden
realizar macros y lograr una conexin entre las macros de Excel y el programa de
VBA ser de gran utilidad, ya que podremos controlar la instalacin de nuestro
complejo a desarrollar e ir generando la ficha de clculo de cableado elctrico, con
la que podemos trazar un programa que nos resuelva toda la instalacin en
cuestin.
Otro de los alcances que tenemos es la de poder hacer un programa que funcione
como simulador mediante la aplicacin de ActiveX en la cual se puede generar un
entorno grfico como lo es workbench y otros programas similares.
Tema 5.- obtencin de resultados.
La obtencin de resultados se puede ver en que el clculo de calibre de
conductores de un circuito que en tiempo de bsqueda del clculo del
conductor y sus varios fenmenos que le afectan. Se tiene un ahorro de
tiempo considerable. Ya que solo nos tardamos en meter el tipo de situacin
en el que est el conductor, mientras que en el otro se tiene que recurrir a la
norma y hacer varios procesos matemticos que vienen incluidos en el
programa.
Conclusiones:
Para lograr una automatizacin de un proceso tcnico es recomendable contar
con varios desarrolladores que tengan conocimientos en VBA Excel para poder
lograr una automatizacin del sistema con un ahorro de tiempo considerable y con
funcin de poka-yoke para el usuario, por lo que se recomienda si es posible:
1.- Dejar un tiempo considerable de investigacin sobre la programacin de dichas
tcnicas.

174

2.-Dejar un tiempo como de unos 3 meses de desarrollo en equipo para hacer el


programa lo ms fcil posible y rpido.
3.- Dejar un manual sencillo de cmo funciona el programa y un especialista que
pueda atender en caso de fall.
Bibliografa:
1.-Gustavo Sanchez. (2009). Caracteristicas Generales de Visual Basic . jueves,
26 de marzo de 2009, de blogger.com Sitio web:
http://visualbasicv6.blogspot.mx/2009/03/caracteristicas-generales-de-visual.html
2.- Ben Chinowsky. (2009). Macros y el Editor de Visual Basic. 03/03/2016, de
Microsoft MSDN Sitio web: https://msdn.microsoft.com/eses/library/office/ee814737%28v=office.14%29.aspx?f=255&MSPPError=2147217396#odc_Office14_ta_GettingStartedWithVBAInExcel2010_MacrosAndT
heVisualBasicEditor

175

También podría gustarte