Sunteți pe pagina 1din 119

UNIVERSIDAD TCNICA FEDERICO

SANTA MARA
Apunte de Visual Basic de Excel aplicado a
Hormign Armado I
USM Campus Santiago
I Semestre 2015

Hormign Armado I, UTFSM Santiago.

TABLA DE CONTENIDOS
1. ALCANCE

2. NOCIONES BSICAS

2.1. INGRESAR AL AMBIENTE VISUAL BASIC


2.2. AMBIENTE VISUAL BASIC
2.3. ENTRANDO A UN ESPACIO DE PROGRAMACIN

5
7
8

3. PROGRAMACIN

10

3.1. VARIABLES
3.1.1. TIPOS DE VARIABLES
3.1.2. DECLARACIN DE UNA VARIABLE
3.2. DECLARACIN DE UNA SUB
3.3. DECLARACIN DE UNA FUNCIN
3.4. SENTENCIAS BSICAS DE PROGRAMACIN
3.4.1. DECLARACIN DE UN "FOR"
3.4.2. DECLARACIN DE UN "IF"
3.4.3. DECLARACIN DE UN "SELECT CASE"
3.4.4. DECLARACIN DE UN "DO WHILE".
3.5. LLAMADO DE SUB, FUNCIONES Y VARIABLES DESDE OTRAS SECCIONES
3.6. HERRAMIENTAS TILES DE VISUAL BASIC
3.6.1. MENSAJE EN PANTALLA
3.6.2. CONCATENAR (&)
3.7. MANEJO DE ARREGLOS (MATRICES).
3.7.1. DECLARACIN DE UN ARREGLO
3.7.2. DIMENSIONES DE UN ARREGLO
3.7.3. REDIMENSIONAR UN ARREGLO
3.7.4. PEGAR UN ARREGLO EN UNA HOJA DE CLCULO
3.8. MANEJO DE CADENAS DE TEXTO.
3.8.1. FUNCIN REPLACE
3.8.2. FUNCIN LEN
3.8.3. FUNCIN SPLIT
3.8.4. FUNCIN LEFT
3.8.5. FUNCIN RIGHT
3.8.6. FUNCIN MID
3.8.7. FUNCIN INSTR
3.8.8. FUNCIN JOIN
3.8.9. FUNCIN LCASE
3.8.10. FUNCIN UCASE
3.9. MANEJO DE ARCHIVOS DE TEXTOS

10
10
11
11
12
14
14
15
16
17
18
19
19
22
22
23
23
24
26
28
29
29
29
29
30
30
30
31
31
31
31

1
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


3.9.1. ABRIR UN ARCHIVO DE TEXTO
3.9.2. LEER UN ARCHIVO DE TEXTO
3.9.3. ESCRIBIR UN ARCHIVO DE TEXTO NUEVO:
3.9.4. ESCRIBIR UN ARCHIVO DE TEXTO CONSERVANDO LO ALMACENADO
3.9.5. EJEMPLO DE UTILIDAD
3.10. FUNCIONES TILES DE MICROSOFT EXCEL
3.10.1. GRABAR MACRO
3.10.2. BUSCARV BUSCARH
3.10.3. K.ESIMO.MAYOR & K.ESIMO.MENOR
3.11. MANEJO DE CELDAS
3.11.1. REFERENCIAR UNA CELDA MEDIANTE CELLS().
3.11.2. REFERENCIAR UNA CELDA O RANGO MEDIANTE RANGE()
3.12. RUTINA BUSCAR OBJETIVO
3.12.1. BUSCAR OBJETIVO, FUNCIN DE EXCEL.
3.12.2. BUSCAR OBJETIVO, PROGRAMADA EN VISUAL BASIC A.
3.13. FUNCIONES MATEMTICAS DE VB.
3.14. FUNCIONES DE EXCEL
3.15. MANEJO DE ERRORES
3.15.1. EVITAR QUE LOS ERRORES DERIVEN EN MOSTRAR EL CDIGO

32
32
33
34
34
36
36
38
39
40
40
41
42
42
43
44
45
46
47

4. INTERFAZ GRFICA DE VB

49

4.1. INTRODUCCIN A LOS FORMULARIOS (USERFORM)


4.1.1. INICIANDO UN FORMULARIO
4.1.2. PROGRAMACIN EN UN FORMULARIO
4.2. OBJETOS (CONTROLES)
4.2.1. PROGRAMACIN DE LA RUTINA DE RESPUESTA A UNA ACCIN DE UN OBJETO
4.2.2. MANEJO DE LAS PROPIEDADES DE UN OBJETO

49
49
50
51
52
53

4.2.3. CUADRO DE TEXTO, TEXTBOX (


4.2.4. ETIQUETA, LABEL ( )

56
57

4.2.5.
4.2.6.
4.2.7.
4.2.8.
4.2.9.

MARCO, FRAME ( )
BOTN DE COMANDO, COMMANDBUTTON (
CASILLA DE VERIFICACIN, CKECKBOX ( )
BOTN DE OPCIN, OPTIONBUTTON ( )
CUADRO DE LISTA, LISTBOX ( )

4.2.10. CUADRO COMBINADO, COMBOBOX (


4.2.11. BOTN DE NMERO, SPINBUTTON (

57
58
59
59
60
61

62

4.2.12. TOGGLEBUTTON ( )
4.3. EJECUCIN DE RUTINAS

63
64

5. EJEMPLOS APLICADOS A HORMIGN ARMADO

65

2
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


5.1. MOMENTO CURVATURA
65
5.1.1. CONSIDERACIONES
65
5.1.2. GEOMETRA Y PROPIEDADES DE LA VIGA
66
5.1.3. ANLISIS Y DESARROLLO
67
5.1.4. PROGRAMACIN EN VISUAL BASIC
67
5.2. ARMADO DE VIGAS
73
5.2.1. DISEO VIGA SIMPLEMENTE ARMADA
73
5.2.2. ANLISIS DE LA VIGA DOBLEMENTE ARMADA
76
5.2.3. PROGRAMACIN EN VISUAL BASIC COMO CDIGO
80
5.2.4. INTERACCIN EXCEL - VISUAL BASIC
84
5.3. DIAGRAMA DE INTERACCIN CARGA AXIAL MOMENTO (, )
85
5.4. PUNTOS CARACTERSTICOS DEL DIAGRAMA DE INTERACCIN CARGA AXIAL - MOMENTO
88
5.4.1. PUNTO DE TRACCIN PURA (, ):
88
5.4.2. PUNTO DE FLEXIN PURA:
88
5.4.3. PUNTO DE BALANCE EN FLEXO COMPRESIN:
89
5.4.4. PUNTO DE = .
90
5.4.5. PUNTO DE = . :
90
5.4.6. PUNTO DE COMPRESIN PURA (, ):
91
5.5. DIAGRAMA DE INTERACCIN P-M DE DISEO
92
5.6. EJEMPLO DIAGRAMA DE INTERACCIN CARGA AXIAL - MOMENTO , :
93
5.6.1. CLCULO DEL CENTROIDE PLSTICO:
94
5.6.2. TRACCIN PURA:
94
5.6.3. FLEXIN PURA:
94
5.6.4. PUNTO DE = . :
96
5.6.5. PUNTO DE = . :
96
5.6.6. PUNTO DE BALANCE EN FLEXO COMPRESIN:
97
5.6.7. PUNTO DE COMPRESIN PURA:
98
5.6.8. RESUMEN DE LOS PUNTOS CARACTERSTICOS:
98
5.7. ELABORACIN DE UNA RUTINA EN VISUAL BASIC DE EXCEL QUE CALCULE UN DIAGRAMA DE INTERACCIN
CARGA AXIAL - MOMENTO.
99
5.8. DIAGRAMA MOMENTO CURVATURA CON CARGA AXIAL
106
5.8.1. CDIGO EN VISUAL BASIC:
109
258.1. GRFICA DE KENT & PARK PARA DISTINTAS CUANTAS DE CONFINAMIENTO
114
258.1.1. CDIGO Y COMENTARIOS:
115
258.1.2. UTILIZACIN DEL CDIGO MEDIANTE BOTN EN PLANILLA.
118

3
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

1. Alcance
El presente documento tiene por objetivo acercar al alumno de Hormign Armado I a las
herramientas de anlisis contenidas en Microsoft Excel a travs de Visual Basic.
El documento se encuentra en desarrollo a medida que el curso avanza en contenidos, los cuales
se enumeran a continuacin:
Capitulo
Introduccin
Materiales
Diseo

Tpico
Condiciones del curso - 1. Introduccin
NCh 430 - Otra normas
2. Materiales
3. Conceptos de Diseo - Ejemplo
4. Flexin: Comportamiento - Momento-Curvatura - Agrietamiento
4. Flexin: Post-agrietamiento - Rango no lineal

Flexin

4. Flexin: Rango no-lineal


4. Flexin: Diseo seccin rectangular refuerzo en traccin - Ref en compresin
4. Flexin: Viga de seccin T
4. Flexin - Ejemplos
5. Corte: General - Previo agrietamiento - Post agrietamiento

Corte en Vigas

5. Corte: Post agrietamiento - Diseo


5. Corte: Diseo - Ejemplos
6. Flexo-compresin: Compr. Axial - Flexo-compr. Uniaxial

Flexo-compresin

6. Flexo-compresin: Diseo
6. Flexo-compresin: Cap. de deformacin - Flexin Bi-axial
6. Flexo-compresin: Ejemplo Marco

Adherencia y Anclajes
Detallamiento
Diseo por capacidad

7. Adherencia y Anclajes
8. Detallamiento
9. Diseo por capacidad: Mecanismo de Colapso
9. Diseo por Capacidad: Casos

Profesor Casa Central:


curso.
Profesor Campus Santiago:
Ayudantes Campus Santiago:
o Ignacio Mayorga,
o Ignacio Ruiz,

Gilberto Leiva, gilberto.leiva@usm.cl, coordinador del


Ricardo Bustamante, ricardo.bustamante@usm.cl
ignacio.mayorga@alumnos.usm.cl
ignacio.ruiz@alumnos.usm.cl

4
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

2. Nociones Bsicas
2.1. Ingresar al Ambiente Visual Basic
Para utilizar Visual Basic () para Excel, es necesario ejecutar el software Excel para luego
proceder a ejecutar el VB. Importante destacar que al guardar una planilla de Excel en la cual se
programar, sta debe ser guardada como un archivo de Excel habilitada para Macros (. ).
A continuacin se mostrar la interfaz de Excel

Ilustracin 1-Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..1: Vista "Normal" de
una hoja de Excel.

Luego es necesario ejecutar Visual Basic, para lo cual se tienen dos opciones, la primera es tener
activada en la barra de herramientas de Excel la seccin de Programacin (Excel 2010 y anteriores)
o de Desarrollador (Excel 2013 y posteriores), como se muestra a continuacin:

5
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Ilustracin 2-1-Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..2: se muestra cmo
abrir Visual Basic mediante las herramientas de Excel.

En la imagen anterior se aprecia que en la barra de herramienta, anteriormente mencionada, se


encuentra la opcin para acceder a Visual Basic.
En el caso que esta no est activada, se puede activar en la seccin de opciones de Excel, yendo a
Archivo y luego a Opciones, en donde se ejecutar la siguiente pantalla:

Ilustracin 2-1-Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..3: modo de activar la
herramienta programador o desarrollador de Excel.

6
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Luego se tiene que dirigir a la seccin de Personalizar cinta de opciones y darle un check a la
opcin de Desarrollador o Programacin dependiendo el Excel en el que se est trabajando.
Una forma ms fcil y rpida de entrar a Visual Basic es oprimiendo las teclas "Alt+F11".

2.2. Ambiente Visual Basic


Una vez ingresando desde Excel a Visual Basic se observar lo siguiente:

Ilustracin 2-2-1: ambiente de trabajo en Visual Basic para Aplicaciones.

La interfaz mostrada anteriormente es idntica para los distintos Excel. Se aprecia en esta que la
pantalla est dividida en dos secciones definidas a continuacin:
Lado derecho (verde): en esta seccin es donde se proceder a programar en todas las secciones
definidas anteriormente y se disearn las interfaces grficas en el caso de los formularios.
Lado izquierdo (Rojo): En esta seccin se muestran los archivos de Excel que se mantienen
ejecutados en ese momento, en donde cada archivo est subdividido en tres secciones, las cuales
tienen ciertas caractersticas:

Microsoft Excel Objetos: en esta seccin se muestran las hojas de clculos que posee el
archivo seleccionado, adems de grficos y ThisWorkbook. sta ltima corresponde a la
hoja de trabajo del documento.

Formularios: en los formularios se muestran los Userform, los cuales corresponden a la


interfaces grficas que se pueden crear en VB.

7
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Mdulos: esta seccin est netamente dedicada a la creacin de rutinas de programacin,


macros y creacin de funciones dentro de Excel, para ser utilizadas posteriormente tanto
en las Hojas de clculo como en los Formularios

En las tres secciones anteriores se puede programar, la diferencia radica en lo siguiente:


Programar en las hojas de clculo (Microsoft Excel Objectos) implica que todas las
funciones, variables, y rutinas que se programen en una hoja dada, solo podrn ser
ejecutadas en esa hoja. En el caso de programar en Thisworkbook lo declarado se puede
utilizar en todas las hojas de clculo.
Estos cdigos (en hoja de clculo o en Thisworkbook) no pueden ser utilizados para
interfaz grfica.
Programar en Formularios, la creacin de un formulario (Una Interfaz) funciona de manera
independiente a las hojas de clculo, por ende cada formulario genera su espacio para
escribir cdigos, variables, funciones, rutinas.
Programar en Mdulos considera que la informacin es de uso pblico, es decir, si declaro
una funcin, esta puede ser llamada tanto de una hoja de clculo como de un Userform.
Comentario:
Lo usual, y a modo de llevar un orden es: en el caso de tener varias hojas de clculo que se tengan
distintas "Macros (cdigos que generan una accin)", por hoja, es declarar esas macros en cada
hoja (programar en Microsoft Excel Objetos). En el caso de tener una macro que mezcla
informacin de Varias hojas, ideal que est programada en Thisworkbook. Las funciones generales
que se utilizan programarlas en Mdulos. Y en el caso de hacer una interfaz, utilizar la
programacin en Userform y Mdulos.

2.3. Entrando a un Espacio de Programacin


Como se coment en la seccin anterior, existen tres espacios de programacin,

Microsoft Excel Objetos


Formularios
Mdulos

La forma de entrar a estos difiere:

En el caso de Microsoft Excel Objetos, basta slo decidir en qu hoja programar y hacer
doble click en sta.

En el caso de Formularios, primeramente se debe crear un nuevo formulario (yendo a


Insertar UserForm). Luego creado, click derecho en el Userform Ver cdigo. Como se
observa a continuacin:
8

Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Ilustracin 2-3-1: entrar a un espacio de programacin de un formulario.

En la imagen anterior se destacan dos opciones, las cuales corresponden a Ver cdigo y
Ver objetos. Para el caso de formularios direcciona inmediatamente a los objetos ( se
observa la interfaz con sus diferentes objetos como botones, etiquetas, etc.), pero al
ingresar a los cdigos se abre el espacio para programar.

Y por ltimo, en el caso de los mdulos, para entrar al espacio de programacin basta
solamente te crear y mdulo y doble "click" sobre ste.

9
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

3. Programacin
Se proceder definir los aspectos ms importantes de la programacin en Visual Basic.

3.1. Variables
La capacidad de este programa es bastante amplia en trminos de datos de entrada, pudindose
generar variables del tipo numrico, textos, caracteres entre otros. Adems se pueden generar
variables con dimensiones, generando as variables de tipo matricial.
En este caso se mostrarn algunos de los tipos de variables, las cuales tienen un mayor ndice de
utilizacin en el desarrollo de rutinas relacionas a los cursos de Hormign Armado.

3.1.1. Tipos de Variables

Integer:

corresponde a una variable representa los nmeros enteros.


(orden de magnitud aprox.: E+9 y E-9).

Single:

corresponden a los nmeros reales, adems posee un rango ms amplio


que los del tipo Interger (orden de magnitud aprox.: E+38 y E-45).

Double:

este tipo de variable posee las mismas caractersticas de las variables de


tipo single, la diferencia radica en el orden de magnitud de los mximos
y mnimos. (orden de magnitud aprox.: E+308 y E-324).

Short:

corresponde a una variable numrica de tipo entero, y de valores positivos


y negativos (orden de magnitud aprox.: E+4)

Long:

corresponde a una variable numrica de tipo entero, similar a los Short,


y de valores positivos y negativos (orden de magnitud aprox.: E+18)

String:

corresponden a una de tipo texto, la longitud de sta variable es cercana a


los 2 millones de caracteres. (ejemplo casa)

Char:

corresponde a un carcter individual. (ejemplo X)

Boolean:

las variables de tipo boolean solo pueden tener dos tipos de valores, los
cuales son solamente True o False.

De no definir una variable, VB tomar dicha variable como tipo "Variant" lo asigna como texto,
entero o decimal.
Otra diferencia entre las distintas variables es el tamao en Bytes que ocupan. Por ejemplo una
variable que ser utilizada como contador, es preferible declararla como Integer o Short antes que
Double, debido a que Integer "pesa" menos, que se podra traducir en rutinas ms rpidas, mas
refinadas y livianas.
10
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

3.1.2. Declaracin de una Variable


Para definir las variables se tiene que hacer de la siguiente manera:
Dim Nombre_de_Variable As Tipo_de_Variable

Si queremos definir una variable la cual tenga 2 dimensiones, el caso de una matriz, sta se debe
definir de la siguiente manera:
Dim Nombre_de_Variable(n_inicial To n_final) As Tipo_de_Variable

En la definicin anterior el tipo de variable no es mandatorio incorporarlo. Por ejemplo si se quiere


tener una variable que se llame Tipos_Acero, y que sea una matriz de 33 del tipo Double, se
tendr lo siguiente:
Dim Tipos_Aceros(1 To 3, 1 To 3) As Double

Comentario: las matrices tambin se pueden definir del siguiente modo:


Dim Tipos_Aceros(2,2) As Double

La matriz definida en Ilustracin 2.1.3 tambin corresponde a una matriz de dimensiones 33.
Pero a diferencia del ejemplo anterior, la matriz en este caso se llenar desde el ndice 0 hasta 2.
(en el caso anterior, se tena comienzo desde el ndice 1).
Para llamar o definir un trmino en especfico de esta variable, se tiene que hacer de la siguiente
manera:

Para asignar un valor a un coeficiente de una matriz:


Tipos_Aceros(1, 1) = Valor_a_Asignar

Para asignarle a una variable cualquiera el valor que corresponde a un cierto coeficiente
de una matriz.
Alguna_Variable = Tipos_Aceros(1, 1)

En una seccin posterior se profundizar mas en el tema Matrices. (Manejo de Arreglos


(Matrices).)

3.2. Declaracin de una Sub


Las "Sub" son el espacio donde se debe programar lo que se desee hacer, stas tiene que estar
definas por un nombre y se pueden crear en los tres espacios posibles (Mdulos, Hojas de clculo
o formularios). La forma de declararlas es la siguiente:
Sub Nombre1()

11
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


'Ac va la rutina
End Sub

Dentro de espacio de programacin se pueden crear mltiples Sub de manera independiente de


modo que no interfieren entre s, la nica forma de activarlas es llamarla desde la rutina de una.
Supongamos que se tienen dos Sub, una llamada Nombres y otra Rut, y dentro del cdigo de la
sub rutina Nombres llamaremos a Rut de la siguiente forma:
Sub Nombres()
Call Rut
'Se ejecut la sub Rut
End Sub

Por otro lado, existe una funcin para que stas rutinas sean privadas o pblicas, esto quiere decir
que si se est trabajando dentro de un Userform y se crea una rutina cualquiera de forma privada,
sta no se podr utilizar en los cdigos de las hojas de clculo o mdulos. Para que la rutina quede
de forma privada se tiene que declarar de la siguiente manera:
Private Sub Nombre1()
'Ac va la rutina
End Sub

De manera anloga, si se quiere la rutina sea de carcter pblico y pueda ser utilizada desde todas
las secciones se debe declarar de la siguiente manera:
Public Sub Nombre1()
'Ac va la rutina
End Sub

3.3. Declaracin de una Funcin


La creacin de funciones es de gran utilidad dentro de la programacin ya que permite ordenar los
cdigos y encontrar errores ms fcilmente. Para declarar las funciones se requiere asignarle un
nombre y sealar las variables de entrada para la funcin, las cuales sern utilizadas dentro de la
rutina de la funcin, posteriormente se debe asignar un valor al nombre de la funcin, que ser lo

12
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


que el valor que devolver dicha funcin. Para declarar las funciones se hace de la siguiente
manera,

Public Function Nombre1(Variable1, Variable2)


Dim n As Double 'al definirla ac slo estar en la funcin
n = Variable1 + Variable2
Nombre1 = n 'La funcin devuelve el valor de n
End Function

Private Function Nombre2(Variable1, Variable2)


Dim n As Double 'al definirla ac slo estar en la funcin
n = Variable1 * Variable2
Nombre2 = n 'La funcin devuelve el valor de n
End Function

Se observa que las funciones funcionan de manera similar a las rutinas Sub, ya que stas se
pueden declarar de manera pblica o privada. Del mismo modo como se explic antes.
Para la utilizacin de las funciones dentro de los cdigos, basta simplemente con asignar valores a
las variables de entrada de la funcin, como se muestra a continuacin
Public Sub Suma()
Dim a As Double
Dim b As Double
a = 1
b = 2
Range("A1") = Nombre1(a,b)
End Sub

En el ejemplo anterior al ejecutar la rutina, la Celda A1 tendr un valor de 3. Dado que lo que hace
la funcin creada previamente Nombre1, es sumar los dos parmetros de entrada.

Comentario: es recomendable tambin definir qu tipo de variable se ingresar a la funcin.


(porque de no definirla VB lo tomar como Variant, siendo esta una variable que pesa ms). La
forma de definir el tipo de variable de entrada y el tipo de variable de retorno es:
Public Function Nombre1(Var1 As String, Var2 As String) As Double

13
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Nombre1 = Var1 + Var2
End Function

Las funciones pueden ser utilizadas en planillas de clculos, para utilizarlas, estas funciones deben
ser declaradas como pblicas y no deben tener un nombre que genere conflicto con el nombre de
las celdas por ejemplo AB12, para utilizarlas se debe llamar como cualquier funcin integrada en
Excel.

3.4. Sentencias Bsicas de Programacin


Para generar algoritmos son necesarios elementos bsicos de programacin tales como los For,
If o While, entre otros. Se proceder a mostrar las distintas formas de cmo declarar stas
estructuras.

3.4.1. Declaracin de un "For"


Para caso que se necesite repetir una operacin nmero de veces, una alternativa es aplicar un
For la cual se debe declarar de la siguiente manera
For n = n_o To n_1 Step 2
'Ac va la rutina
Next

En lo anterior se aprecia que se utiliz un paso (Step) de valor 2, esto implica que el valor de la
variable ir aumentando de dos en dos. El valor del paso puede ser positivo o negativo. Adems
no es necesario incorporarlo, ya que al no estar presente, el programa trabaja con un paso
automtico de 1, en tal caso el valor de las variables 0 y 1 deben corresponder a un parmetro
de valor entero.
Por ejemplo, si se quiere definir un proceso reiterativo que parta desde el 5 y termine en 0 con un
paso de 0.5 se tiene que declarar de la siguiente manera

Por otro lado, si se requiere generar un rutina que parta desde 0 hasta 100 con un paso unitario.
Se tiene lo siguiente

14
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

3.4.2. Declaracin de un "If"


En el caso de tener que efectuar distintas operaciones segn alguna condicin o conjunto de stas.
Segn si son incluyentes () o excluyentes (). La manera de declararla, es la siguiente:

Se pueden asignar mltiples de condiciones. Las cuales se sientan en los siguientes funciones
matemticas:

<
>
<=
>=
<>
=

:
:
:
:
:
:

menor que...
mayor que...
menor o igual que...
mayor o igual que...
distinto a...
igual a...

Adems se pueden complementar dichas condiciones utilizando:

And
Or

:
:

corresponde a "Y", lo que en lgica es .


corresponde a "", lo que en lgica es .

Ejemplo:

En el ejemplo anterior, el uso de "And" y "Or" son opcionales y no requieren de ser utilizadas,
basta con slo una condicin. Al igual que el uso del "Elseif", que en este caso se usa dado a la
cantidad de alternativas que se tiene.
Para el caso en que se tienen condiciones que utilizan un caso en especial, es conveniente el uso
de la rutina Case.

15
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Otro aspecto bastante til del uso del If, por su sencillez, es en el caso de que dado una condicin
en especial se asigne un valor, como lo muestra el siguiente ejemplo.

Que es la forma ms simplificada del uso del If.


Un uso bastante comn del uso del "If", es en el caso de condicionar el valor de una variable en
funcin de otras dos o ms variables. Como lo muestra el siguiente ejemplo:

3.4.3. Declaracin de un "Select Case"


El Case funciona de manera similar al If. Solo se puede manejar una variable para las
condiciones, siendo sta variable de cualquier tipo. Para declarar un Case se hace de la siguiente
manera:

Las Clusulas tienen 3 tipos de opciones para definir, las cuales se mostrarn a continuacin:

Forma 1:

lo primero y ms sencillo es definir una expresin, la cual puede


ser una variable, valor o un True o False, lo que indicar que la
variable ser igual a esta expresin.
:

Forma 2:

en el caso de que la variable sea de carcter numrica, se puede


definir un rango para la aplicacin del caso mediante los 2 valores
y la expresin To, de la siguiente manera.

16
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


: 1 2

Forma 3:

la ltima forma es ocupar restricciones del tipo <=, >=, = . Para


poder utilizar este forma es necesario anteponer la expresin Is.
: <=

3.4.4. Declaracin de un "Do While".


En los casos que se est buscando algn resultado en especfico o se requiera efectuar un
procedimiento hasta que se cumpla una condicin, para aquello se requiere definir un Do. Para
aquello existen dos formas de declarar estos bucles, como se muestra a continuacin:
1. Restriccin en fase Inicial
Esta forma permite restringir la iteracin desde un primer momento

2. Restriccin en fase Final


Al considerar la condicin en su fase final, esto permite asegurar que por lo menos de
ejecutar al menos una vez.

Las condiciones a utilizar en estos casos corresponden a tipos de comprobacin, similares a las que
se utilizan en un If.
Ejemplo:

17
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

3.5. Llamado de Sub, Funciones y Variables Desde Otras Secciones


Cuando se tienen definidas funciones, rutinas y/o variables en distintas ubicaciones, sean stas
mdulos, formularios u hojas de clculo, stas pueden ser utilizadas desde cualquier ubicacin con
tan slo anteponer el nombre de la ubicacin de lo que se est buscando, siempre y cuando estn
definidos como pblico. Se mostrarn ejemplos para llamar todos los tipos de elementos

Para hacer el llamado de una funcin, sub, variable, objeto, etc. Se debe Anteponer la ubicacin de
ste. Ejemplo:

Sub que est en un mdulo:

Del mismo modo se llama a funciones que estn en algn mdulo.

Funciones que estn en algn formulario:

En el caso de los objetos(etiquetas, cuadros de textos, cuadros de listas, etc). Se


llaman igual, por ejemplo se quiere el valor de un cuadro de texto que est en un
cierto formulario sera:

El uso de "Value" se ver posteriormente, pero es para especificar que se quiere el


valor del cuadro de texto.

Variable que est definida en una hora o formulario.


Para llamar a una variable que fue definida en alguna hoja, o en algn formulario
en especfico, basta con identificar su origen.

Aqu se mostr un par de ejemplos, pero se puede extrapolar a cualquier combinacin, lo


importante es mencionar la ubicacin de donde se encuentra el elemento de inters. Adems se
puede efectuar lo mismo con elementos de interfaz grfica que an no se han mencionado, tales
como:

TextBox
CheckBox
ListBox
SpinButton
ComboBox
18

Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

OptionButton
CommandButton
Label

Notar que slo es necesario anteponer el nombre de la seccin en la que se encuentre.

3.6. Herramientas tiles de Visual Basic


En esta seccin se mostrarn distintos tipos de herramientas que son bastante tiles en la
programacin, adems de algunas herramientas para utilizar algunas opciones de Excel y algunos
cdigos de programacin con caractersticas muy tiles.

3.6.1. Mensaje en Pantalla


Una de las herramientas ms tiles al momento de comenzar a programar es el mensaje en
pantalla, debido a que pidindole a la rutina que muestre un valor obtenido o cualquier cosa en
medio de un cdigo es bastante til para:

Identificar errores
Entender un cdigo
Uso de interfaz grfica

La forma de hacer que muestre algo por pantalla es mediante el cdigo .


A modo de ejemplo:

Lo que se mostrar por pantalla es lo siguiente:

Algunas propiedades de los mensajes de texto:

Agregar un formato
Formato General:
o

VbCritical:

VbQuestion:
19

Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

VbInformation:

VbExclamation:

La forma de agregar estos formatos generales, es colocndolos despus del texto


mediante posterior a una coma.
Ejemplo:

Mostrar:

Formato de botones (msgbox como funcin):


o

VbAbortRetryIgnore: mostrar los botones Anular, Reintentar, Omitir.

VbOKCancel: mostrar los botones Aceptar y Cancelar.

VbOKOnly: mostrar slo el botn Aceptar.

VbYesNo: mostrar los botones Si y No.

VbYesNoCancel: mostrar los botones Si, No y Cancelar.

Lo lgico sera utilizar el msgbox con distinto tipos de botones para obtener algn retorno,
y en funcin de esta continuar con el cdigo. En este caso, como el mensaje de texto
devolvera un valor (dependiendo del botn seleccionado por el usuario) es correcto decir
que se utilizar como funcin, de modo que se debe programar como tal.
En primer lugar los valores que se obtienen en funcin del botn seleccionado son:
Constante

Valor

Aceptar

Cancelar

20
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Anular

Reintentar

Omitir

Si

No

Y dado que es una funcin se programa como tal. Ejemplo:

Se mostrar:

Existen ms opciones de formato de botones, en esta seccin se expusieron lo que se


consideraron fundamentales.

Agregar un Ttulo: se debe ingresar posterior al formato escogido. Por ejemplo,

(Caso de utilizar el msgbox como slo un mensaje)

(Caso de utilizar el msgbox como funcin)


En el ltimo ejemplo se mostrar,

21
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

3.6.2. Concatenar (&)


Esta herramienta sirve para juntar varios textos distintos y a su vez variables numricas dentro un
texto. En las planillas de clculo sta opcin se puede utilizar mediante la siguiente forma
= (1, 2, )
En el caso de la programacin cuando se requiera unir textos con valores numricos, sea esto para
una variable o algn mensaje, para esto se debe utilizar el carcter &, un ejemplo clsico es al
definir una celda

En el ejemplo anterior el mensaje de texto mostrar el valor de la variable TipoAcero:

3.7. Manejo de Arreglos (Matrices).


La utilizacin de los arreglos es un aspecto fundamental que debemos conocer y aplicar. Las
principales razones de que son de gran utilidad son:

Para realizar operaciones matemticas.


Orden de nuestras variables.
Hacer cdigos ms eficientes.

22
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


El ltimo aspecto es de gran importancia dado que la experiencia nos dice que el uso de matrices
mejora considerablemente el tiempo de ejecucin de una rutina.
Para comenzar, un arreglo es una variable que almacena datos ordenados en columnas y filas. En
el caso de tener un arreglo con solamente filas hablaremos de un vector. Y en su defecto
estaremos utilizando una Matriz.

3.7.1. Declaracin de un Arreglo


Visual Basic tiene dos formas de declarar un arreglo, que es:

En ambos casos son vectores que almacenan datos tipo Double. En lo que difieren ambas formas
es que en el primer caso se tiene un elemento ms, dado que considera que el elemento
PrimeraForma(0).
La manera de llenar dichos vectores as asignndole un valor a una cierta posicin del arreglo, es
decir:

Para el caso de querer declarar una matriz (filas y columnas) es anlogo.

Al igual que el ejemplo del vector, se difiere slo en que en el primer caso considera un elemento
ms, debido a que toma desde el elemento cero.
La forma de llenar el arreglo es anlogo al caso del vector, es decir:

3.7.2. Dimensiones de un arreglo


Para conocer la dimensin que tiene un arreglo utilizaremos la funcin UBound, esta nos entrega
el ndice del ltimo valor del arreglo.
En el caso de los Vectores definidos previamente al utilizar:
23
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


() ()
Obtendramos en ambos casos el nmero 10, debido a que para ambos vectores el ltimo
elemento est en la posicin 10.
En el caso de estar interesados en conocer la cantidad de filas y columnas que tiene una matriz, el
procedimiento es el mismo, pero se debe especificar si se quiere conocer las filas o las columnas,
mediante el nmero 1 2 de la siguiente forma.

Lo que obtendramos en el caso anterior sera 10 y 5.


Tambin es bueno conocer la funcin Lbound, que entrega el ndice del primer elemento del
arreglo. Funciona igual que la funcin Ubound. Es decir si utilizamos:

Esto para el caso de preguntar por los Vectores. Se entregan valores distintos debido a que como
se mencion anteriormente, uno parte desde cero y el otro desde uno. Dependiendo de cmo se
definieron.

3.7.3. Redimensionar un Arreglo


Puede que inicialmente no conozcamos la dimensiones que tendr el vector o matriz que
utilizaremos, para esto existe la funcin Redim y Redim Preserve.
La funcin Redim se utiliza para redimensionar un arreglo, por ejemplo:

En el caso anterior se observa que se redimension la matriz a una que tuviese una fila y una
columna ms. Para el uso de esta funcin se debe tener en cuenta lo siguiente:
La funcin Redim no conserva los valores previos, borra y asigna dimensiones nuevas.
Para que se pueda utilizar, el arreglo tuvo que previamente ser definido como SIN
DIMENSIONES, es decir de la siguiente forma:

La funcin Redim Preserve se utiliza para redimensionar un arreglo pero CONSERVANDO los
valores almacenados. Por ejemplo:

24
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

En este caso se agreg una columna. Para el uso de esta funcin se debe tener en cuenta lo
siguiente:
Solo se pueden redimensionar la cantidad de columnas.
En este caso tambin se debe haber definido el arreglo como sin dimensiones.
Comentario: la funcin Redim Preserve, es de gran utilidad debido a que muchas veces no
tendremos certeza de cuntos elementos tendr la matriz a utilizar. el siguiente ejemplo se
muestra el uso de la funcin Redim Preserve.
Ejemplo funcin Redim Preserve:
Se llenar una matriz que contenga los datos de la siguiente tabla:

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..4: datos que contendr la
matriz creada.

La intencin de este ejemplo es crear una matriz que almacene los datos la tabla mostrada. Ahora
bien, la gracia es que se har genrica de modo que si la tabla de datos tuviese una fila ms, la
matriz pudiese tomarla.
El cdigo es:

25
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Entonces se observa que lo que se hizo es:


Declarar la Variable Viga_Ancho_Alto como un arreglo SIN DIMENSIN. Para as
posteriormente poder utilizar la funcin Redim Preserve.
Se entrar al Do While, siempre y cuando la celda no est vaca. Esto es por que como
queremos que la matriz contenga todos los datos que yo llene en la tabla, debemos saber
cundo parar.
Como se mencion previamente, la funcin Redim Preserve solo permite redimensionar la
cantidad de columnas, por lo que en verdad uno est haciendo es agregando los datos de la
tabla de una forma Traspuesta. Es decir, si uno puede ver el contenido de la matriz creada
sera as:

Por ende los mensajes por pantalla que mostrara sera 3 5. Que corresponden a tres filas y cinco
columnas.

3.7.4. Pegar un arreglo en una hoja de clculo


Muy til para visualizar los resultados obtenidos es pegar los datos de un arreglo en una hoja de
clculo.

26
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Una formar de hacer esto es recorriendo todo el arreglo e ir vaciando su contenido en celdas.
Mediante el uso de la sentencia For esto es sencillo. Sin embargo no es la forma ms eficiente.
Una manera ptima de hacerlo es seleccionado un rango y pegando los datos. (mucho ms rpido
que corriendo todos los elementos de la matriz y pegando uno a uno).
Se selecciona el rango donde se mostrarn los valores, para esto hay que conocer las dimensiones
de la matriz, se utilizar la funcin UBound:

Donde el rango es:

Se utiliz la funcin Range para seleccionar el rango. La celda (11,2) que corresponde a la "B11".
se asign porque ah se copiarn los datos.
Ahora bien los datos se copiarn tal cual estn en la matriz. Y como se coment anteriormente
estos estn transpuestos a los originales. Por lo que si se desea pegar los datos como estaban
originalmente se puede ocupar la funcin de Excel Transponer. Como se muestra a continuacin.

Donde Rango es:

Corriendo el cdigo lo que se obtiene es:

27
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..5: Se muestra lo
obtenido de mostrar los datos de una matriz en una hoja de clculo.

Lo que se hizo en este ejemplo fue:


Crear una matriz general para la cantidad de filas que se tengan en la tabla que comienza
en la celda "B2".
Almacenar los datos en esta matriz.
Mostrar los datos a travs de una hoja de clculo. Mostrarlos segn distribucin del
arreglo y la transpuesta de ste.

3.8. Manejo de Cadenas de Texto.


En este apartado se vern algunas funciones para trabajar las cadenas de texto (Strings). El buen
manejo de las cadenas de texto facilita a los usuarios a crear rutinas que apunten a manejo de
datos, modificacin de archivos, creacin de archivos, lectura, etctera.
Las principales funciones son:
Para los ejemplo se usar la cadena de texto:

28
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

3.8.1. Funcin REPLACE


Remplaza un caracter de una cadena de texto por otro a eleccin. Por ejemplo, al utilizar:

Se mostrar por pantalla el texto:

3.8.2. Funcin LEN


Entrega la cantidad de caracteres que posee la cadena de texto. Por ejemplo:

Se obtiene 33.

3.8.3. Funcin SPLIT


Crea un vector que almacena lo filtrado de una cadena. La dimensin que se asigna al vector
depende de la cantidad de particiones en que queda la cadena despus del filtro.
A modo de ejemplo, si uno utiliza:

El mensaje por pantalla mostrar 4. Debido a que se filtr todo lo que no lleva espacio (" "). Por
ende los elementos del vector generado sern:

3.8.4. Funcin LEFT


Devuelve la parte de la cadena que se encuentra a la izquierda de la posicin indicada.
Considerando el caracter de la posicin indicada. Por ejemplo, al utilizar:
29
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

En la posicin 12 se encuentra la letra "" de "". Por ende se mostrar:

3.8.5. Funcin RIGHT


Devuelve la parte de la cadena que se encuentra a derecha de la posicin indicada. La posicin se
contabiliza del ltimo caracter hacia la izquierda. Considerando el caracter de la posicin indicada.
Por ejemplo, al utilizar:

En la posicin 15 de derecha a izquierda se encuentra la letra "" de "". Por ende se


mostrar:

3.8.6. Funcin MID


Con esta funcin se puede extraer parte de una cadena. Se debe seleccionar la posicin desde
donde se comenzar a extraer, y la cantidad de caracteres a extraer. Por ejemplo:

En la posicin 10 se encuentra la letra "" de "". Y como se extraern 3 caracteres se


mostrar:

3.8.7. Funcin INSTR


Devuelve la posicin de una caracter especificado, dentro de una cadena. En caso que el caracter
est ms de una vez, solo devolver la primera posicin. por ejemplo:

La letra "" se encuentra en las posiciones 7, 12, 15, 17 31. Notar que esta funcin es sensible a
las maysculas, y no considera el caracter "" igual a "". Lo que mostrar por pantalla ser 7.
debido que es la primera posicin donde se encuentra el caracter buscado.

30
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

3.8.8. Funcin JOIN


Funcin para vectores que sirve para unir los elementos de un vector. Por ejemplo:

Se unir "" con "", mediante una separacin (" ").

3.8.9. Funcin LCASE


Funcin que cambia de maysculas a minsculas. Por ejemplo:

Se mostrar:

3.8.10. Funcin UCASE


Funcin que cambia de minsculas a maysculas. Por ejemplo:

Se mostrar:

3.9. Manejo de Archivos de Textos


En esta seccin se ver los aspectos bsicos de manejar archivos de texto. La utilidad que tiene
esto apunta a que muchos de los programas que utilizamos en ingeniera civil permiten exportar
sus datos en un formato de texto. Por ende aprender a manejar estos archivos y complementando
con el manejo de cadenas de texto puede ser de gran utilidad.
Entonces, a modo de motivacin la razones del porqu aprender esto:
Poder leer y manipular la informacin que exportan los programas.
31
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


El mantener la informacin en archivos de texto hace que las planillas de Excel no estn
colapsadas implicando rutinas ms eficientes en velocidad.

3.9.1. Abrir un Archivo de Texto


para abrir un archivo de texto es necesario conocer la direccin donde se encuentra. Para esto se
utilizar una funcin de muy til. La funcin . entrega la ruta donde se
encuentra el libro de Excel que se est utilizando. Por ejemplo:

Mostrar que el archivo que estoy utilizando est en el escritorio (dado que ah lo tengo
guardado).

Ahora bien, supongamos que se quiere abrir un archivo de texto que se llama y se
encuentra en la carpeta que est en el escritorio con nombre . Se debe hacer de la siguiente
forma:

Tener en consideracin:

Se cre una variable tipo texto que incluye la direccin en formato que utiliza . Notar
que al final de la direccin tiene que estar especificado que el archivo corresponde a una
archivo de texto, por eso la extensin . .
hace referencia a que el archivo ser abierto para ser ledo, no para poder escribir
sobre este.
# hace referencia al nombre de archivo abierto, para efectos de cdigo, y como se
ver un poco ms adelante, VBa tratar a este archivo abierto como nmero 1.
Se pueden tener muchos archivos de texto abiertos a la vez.
El archivo se encontrar abierto pero de forma interna, es decir como usuarios no
notaremos que el archivo est abierto debido a que no se abre ninguna pestaa en el
computador.

3.9.2. Leer un Archivo de Texto


Una vez que se ha abierto el archivo, se est en condicin de comenzar a leerlo. La forma de hacer
esto:

32
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Donde:

() hace referencia a que se har lo que se especifica hasta que el


archivo llegue a su fin. (END OF FILE). El nmero 1, es porque es el archivo nmero 1. Se
culmina con .
#, se refiere a leer una lnea y asignrsela a la variable cadena.

Por ende se recorre el archivo de texto y cada lnea pasa a ser tomada por una variable que se
llam cadena. Teniendo la lnea como cadena de texto asignada en una variable se puede trabajar
sta mediante lo que se aprendi en (Manejo de Cadenas de Texto.)

3.9.3. Escribir un Archivo de Texto Nuevo:


En este caso se debe abrir el archivo de texto en el cual se va a escribir, este puede o no existir, de
no existir lo crea. Por ende ya no sera de la forma , tal como se muestra a
continuacin:

Considerar qu:

hace referencia a que el archivo que se abrir ser utilizado para escribir.
Si el archivo ya existe y se abre como se borrar todo lo que ste contiene.
#, "" se refiere a escribir el texto.
cada vez que se utiliza #, "" es una lnea nueva. Por ende en este caso se
tendra:
33

Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..6: resultado de escribir
en un archivo de texto.

3.9.4. Escribir un Archivo de Texto Conservando lo Almacenado


En este caso se debe abrir el archivo de texto en el cual se va a escribir conservando lo que ya
tiene. Solo se podr escribir sobre el archivo de texto y no leerlo.

Considerar qu:

hace referencia a que el archivo se abrir para seguir escribiendo sobre este.
El texto nuevo se escribir a continuacin del existente. Es decir por debajo de la ltima
lnea.

3.9.5. Ejemplo de Utilidad


Supongamos tenemos un registro de aceleracin basal del terremoto del 2010, denominado
concepcin. La fuente es una estacin que contiene la implementacin de un acelergrafo.
34
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


El formato del registro est en un archivo de texto, como se muestra en la siguiente imagen:

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..7: registro de
concepcin.

Donde,
En la primera columna corresponde al tiempo y la segunda a la aceleracin percibida en /2. Se
observa que los datos estn separados por un espacio.
Si se desea extraer estos datos y graficarlos en Excel para ver el tiempo historia sera:

Se observa qu:

Se abri el archivo de texto para ser ledo.


Se declar una matriz que ir almacenando todos los datos que contenga el archivo de
texto. Esto se aprendi en la seccin Manejo de Arreglos (Matrices).
35

Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Se utiliz el manejo de cadenas para poder trabajar con la informacin que contena el
archivo de texto. Esto se aprendi en la seccin Manejo de Cadenas de Texto.

Ahora bien, como ya se tiene una matriz que contiene todos los grficos, se puede pasar dicha
matriz a una hoja de clculo y mostrar la grfica de los datos obtenidos. La forma de pasar los
datos de una matriz a la hoja de clculo se explico en la seccin Manejo de Arreglos (Matrices).
Se obtiene:

Aceleracin [g]

Tiempo historia
5
3
1
-1 0

10

20

30

40

50

60

70

80

90

100

-3
-5

Tiempo [seg]

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..8: resultado de graficar
los datos de la matriz registro aceleracin.

3.10.

Funciones tiles de Microsoft Excel

En esta seccin se presentarn algunas funciones tiles de Microsoft Excel, pensando en ser
utilizadas y llamadas desde Visual Basic.

3.10.1. Grabar Macro


Microsoft Excel presenta una herramienta de gran utilidad que permite grabar lo que uno realiza
en las hojas de clculo, con el fin de posteriormente realizar la misma accin nuevamente. La idea
es que se utilice para rutinas que son repetitivas.
Pero la gran caracterstica que posee es que al momento de ser grabada la accin todo queda
registrado como una rutina que se almacena con el nombre de en lenguaje Visual
Basic. El siguiente ejemplo muestra la utilidad de esto:

Para comenzar a grabar Macro, ir a

36
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..9: herramienta de Excel
que permite grabar una rutina y despus visualizar su cdigo.

Se abre una ventana emergente que solicita al usuario ingresar el nombre con cual se grabar la
rutina. Esta se grabar en el ambiente de Visual Basic seccin Mdulos. Se aprendi en la seccin
Ambiente Visual Basic.
Posterior a esto ya se est grabando todo y escribiendo instantneamente lo que uno realice en
una rutina Sub. Por ejemplo, supongamos que ya se realiza lo que se observa a continuacin:

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..10: ejemplo de grabar
una Macro.

Para detener la grabacin se debe ir a Luego ah mismo se


puede acceder a ver lo grabado, poner . Y se ver
lo siguiente:

37
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Si se observa se grab todo lo que se ejecut. Ahora bien, el lenguaje en el cual se graba quizs no
va muy de la mano de cmo se ha enseado en este tutorial, dado que existen muchas formas de
hacer lo mismo. Por ejemplo, el siguiente cdigo realiza lo mismo, pero ms acorde a lo que se ha
enseado.

Que claramente es ms legible.


Comentario: el uso de esta herramienta es muy potente, debido a que permite al usuario a hacer
mucho sabiendo poco, es simplemente grabar cosas, verlas, modificarlas un poco y en trminos
concreto copiarlas. Para cuando uno est aprendiendo es fundamental.

3.10.2. BuscarV BuscarH


Esta funcin busca un valor especfico en la primera columna de una matriz de tabla y devuelve, en
la misma fila, un valor de otra columna de dicha matriz de tabla. La V de BUSCARV significa
vertical. Utilicar BUSCARV en lugar de BUSCARH si los valores de comparacin se encuentran en
una columna situada a la izquierda de los datos que desea buscar.
= buscarV(valor_buscado; matriz_buscar_en; indicador_columnas; ordenado)
38
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Donde sus parmetros de entrada son:

Valor_buscado: valor que se buscar en la primera columna de la matriz de tabla.


Valor_buscado puede ser un valor o una referencia. Si valor_buscado es inferior al menor
de los valores de la primera columna de matriz_buscar_en, BUSCARV devuelve al valor de
error #N/A.

Matriz_buscar_en: dos o ms columnas de datos. Use una referencia a un rango o un


nombre de rango. Los valores de la primera columna de matriz_buscar_en son los valores
que busca valor_buscado. Estos valores pueden ser texto, nmeros o valores lgicos. Las
maysculas y minsculas del texto son equivalentes.

Indicador_columnas: nmero de columna de matriz_buscar_en desde la cual debe


devolverse el valor coincidente. Si el argumento indicador_columnas es igual a 1, la
funcin devuelve el valor de la primera columna del argumento matriz_buscar_en; si el
argumento indicador_columnas es igual a 2, devuelve el valor de la segunda columna de
matriz_buscar_en y as sucesivamente.
Si indicador_columnas es:
o
o

Inferior a 1, BUSCARV devuelve al valor de error #VALUE!


Superior al nmero de columnas de matriz_buscar_en, BUSCARV devuelve el valor
de error #REF!

Ordenado: valor lgico que especifica si BUSCARV va a buscar una coincidencia exacta o
aproximada:
o

Si se omite o es VERDADERO, se devolver una coincidencia exacta o aproximada. Si


no localiza ninguna coincidencia exacta, devolver el siguiente valor ms alto inferior a
valor_buscado.
Los valores de la primera columna de matriz_buscar_en deben estar clasificados segn
un criterio de ordenacin ascendente; en caso contrario, es posible que BUSCARV no
devuelva el valor correcto. Para obtener ms informacin, vea Ordenar datos.

Si es FALSO, BUSCARV slo buscar una coincidencia exacta. En este caso, no es


necesario ordenar los valores de la primera columna de matriz_buscar_en. Si hay dos
o ms valores en la primera columna de matriz_buscar_en, se utilizar el primer valor
encontrado. Si no se encuentra una coincidencia exacta, se devolver el valor de error
#N/A.

3.10.3. K.esimo.mayor & K.esimo.menor


Devuelve el valor k-simo mayor (o menor) de un conjunto de datos:

39
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


= K. esimo. mayo(matriz; k. esimo_buscado)

3.11.

Manejo de Celdas

Las celdas de las planillas se pueden declarar de dos formas distintas. Mediante la denotacin de
celda o mediante un rango, este ltimo puede seleccionar ms de una celda.

3.11.1. Referenciar una Celda mediante Cells().


En este caso se debe conocer el nmero de Fila y de Columna a la cual se quiere referenciar. En la
interfaz clsica de Hoja de Excel, se tiene que por el costado izquierdo estn numeradas las filas,
mientras que por el costado superior se tienen las letras de las diferentes columnas.
La forma de referencial la celda es:

Como en este caso se requiere conocer el nmero de la fila (no la letra). Para esto, en vez de
contar las leras es conveniente seleccionar el rango, y Excel arroja el nmero de filas.
Ejemplo:
Se requiere asignar el valor de la Celda "5" a la variable (previamente definida) .
Entonces se tiene:

Nmero de la fila:
5
Nmero de la columna: ? dos opciones, contar o seleccionar rango y que nos diga el
propio Excel la fila.

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..11: seleccionando un
rango se obtiene el nmero de la columna que tiene cierta celda. En el ejemplo la celda AA5

Ya sabiendo la fila y la columna de la celda a referenciar se lleva a cdigo.

Ventaja
40
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


La ventaja de referenciar una celda de este modo es que es de fcil uso para cdigos en que es
necesario variar la celda. Porque dado que se ingresa la fila y la columna, estos perfectamente
podran tener un valor variable que permita el poder recorrer una tabla de datos, por ejemplo.

3.11.2. Referenciar una Celda o Rango Mediante Range()


Otra forma de referenciar una celda es mediante la letra de su columna y el nmero de su fila. De
la siguiente forma:

Para el caso de referenciar un rango se denota de la siguiente forma:

Ahora bien, con lo ya aprendido, la celda uno y dos las podemos escribir como Cells() o como
Range(). Adems se puede asignar mediante la notacin que ocupa Excel para un Rango. Ver el
siguiente ejemplo.
Ejemplo de uso:
Es muy comn trabajar con matrices en los cdigos. Por ende, si se requiere asignar a una matriz
un rango de una hoja, una alternativa sera hacerlo de la siguiente forma:

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..12: tabla de una hoja de
Excel que pasar a ser una matriz mediante Range().

Por lo tanto el Rango que se desea utilizar es desde la celda 4 a la 8. Por ende segn lo antes
explicado se tiene:

Celda 1:
Celda 2:

4
8

Para el cdigo, se crear una matriz que se llamar Geometra_Vigas y se le asignar el rango
mencionado.

41
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Los tres casos cumplen con el objetivo, crendose una Matriz de 5 filas y 4 columnas. En donde su
primera columna ser el nombre de la viga, la segunda el alto, tercera el ancho y cuarta el
recubrimiento.
Importante
La variable Geometra_Vigas no debe ser previamente declarada (Dim G). Todo lo referente a
matrices se ver en un apartado posterior.
Ventajas
Las ventajas de preferir usar Range() antes que Cells() son:

Para el caso de querer referenciar una celda en especfico y que sta no variar (celda fija).
Es conveniente ocupar Range() debido a que el cdigo queda ms legible. (es ms fcil
encontrar la celda ("AA56") que la celda (56,27)).
Para llenar Matrices es de gran utilidad.

3.12.

Rutina Buscar Objetivo

Esta funcin de Excel es una de las ms potentes que posee este programa y de gran utilidad. Lo
que hace es variar el valor de una celda, de tal manera que una segunda celda, la cual depende de
la primera, obtenga un valor dado especfico.
La funcin es muy til en los casos donde la variable buscada no se logra despejar explcitamente
de una ecuacin, sino que est implcita en ella y para la obtencin de sta se requiere hacer
iteraciones.

3.12.1. Buscar Objetivo, funcin de Excel.


La funcin es propia de Excel y se puede utilizar yendo a Datos Anlisis Buscar Objetivo
Ejemplo:
Se tiene una Funcin que depende de la variable . Se quiere que la funcin sea igual a 45.
Nota: se tiene la opcin de hacer la funcin objetivo a la celda C3 variando la celda B3. Sin
embargo, lo que se har ser crear en otra celda el delta entre lo obtenido y lo que se desea
obtener, y a sta funcin aplicar Buscar objetivo variando la celda B3.

42
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Por qu esto?, la razn del porqu es debido a que muchas funciones que se utilizan son muy
complejas, lo que hace dificultoso que Excel d con el valor exacto que cumpla la condicin. Es por
esto que creando una celda como el diferencial uno puede asignar una tolerancia, cmo?,
asignando a la celda E3 la siguiente frmula:

De este modo, se dejar de iterar cuando el F(x) buscado con el F(x) obtenido difieran en la
centsima.

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..13: funcin buscar
objetivo.

Se observa en el ejemplo anterior que la funcin requiere:

Definir la celda: corresponde a la celda a la cual se obtendr el valor deseado.


Con el Valor: corresponde al valor deseado.
Cambiando la celda: corresponde a la celda que se iterar su valor.

Al apretar aceptar comienza la iteracin que es bastante rpida.


Nota: hay funciones que tiene ms de una solucin. Y Buscar Objetivo no detecta esto, solamente
se detiene al momento en que encuentra la primera. Por ende es recomendable comenzar la
iteracin (dejar el valor de x en este caso) en un valor cercano al esperado.

3.12.2. Buscar Objetivo, programada en Visual Basic A.


Al ser la funcin Buscar Objetivo una iteracin de una variable que se detiene al encontrar un
resultado. Es posible programar una rutina que haga lo mismo y que incluya la sentencia Do
While. Sin embargo nuestra experiencia nos dice que los resultados de hacer esto no son mejores
que la funcin Buscar Objetivo, debido al tiempo en la obtencin del resultado.

43
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Es por esta razn que es preferible utilizar la funcin Buscar Objetivo en una hoja de clculo, pero
programarla por dentro.
La manera de declarar esta funcin desde VB es la siguiente:

Donde,

La primera celda corresponde a la celda donde se espera el valor.


valor corresponde al valor esperado
Y la segunda celda en la celda que se iterar.

La mayor utilidad que tiene definir la funcin mediante VB, es que permite generar varias
funciones objetivos. Cmo se ver en el siguiente ejemplo:
Supongamos que en el ejemplo anterior se desea utilizar la funcin Buscar Objetivo para ms de
una celda:

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..14: funcin buscar
objetivo, para mltiple celdas.

Para esto se requiere de la siguiente programacin:

Que ejecutar la funcin objetivo en todas las filas requeridas y de manera rpida.

3.13.

Funciones matemticas de VB.

Es necesario saber cmo aplicar algunas herramientas matemticas esenciales, como lo pueden
ser el clculo de un coseno, seno o un logaritmo entre otros, para esto existe una herramienta
matemtica la cual ofrece de manera sencilla todas las opciones disponibles. Para ocupar esta
herramienta se declara de la siguiente manera:

Sin embargo para la aplicacin no es necesario anteponer Math.


44
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Las funciones matemticas ms utilizadas son:
FUNCIN
Abs
Acos
Asin
Atan
Ceiling
Cos
Cosh
Exp
Floor

DESCRIPCIN
Devuelve el valor absoluto de un nmero.
Devuelve el ngulo cuyo coseno es el nmero especificado.
Devuelve el ngulo cuyo seno es el nmero especificado.
Devuelve el ngulo cuya tangente corresponde al nmero especificado.
Devuelve el valor entero ms pequeo que es mayor o
igual Decimal especificado o Double.
Devuelve el coseno del ngulo especificado.
Devuelve el coseno hiperblico del ngulo especificado.
Devuelve e (base de los logaritmos naturales) se produce a la potencia
especificada.
Devuelve el entero ms grande que sea menor o igual que Decimal o el nmero
especificado de Double.

IEEERemainder Devuelve el resto que es el resultado de la divisin de un nmero especificado


por otro nmero especificado.

Log

Devuelve el logaritmo natural (de e base) de un nmero especificado o el


logaritmo de un nmero especificado en una base especificada.

Log10
Max
Min
Round

Devuelve el logaritmo en base 10 de un nmero especificado.

Sin
Sinh
Sqrt
Tan
Tanh
Truncate

Devuelve el seno del ngulo especificado.

Devuelve el mayor de dos nmeros.


Devuelve el menor de dos nmeros.
Devuelve un valor de Decimal o de Double redondeado al valor entero ms
cercano o a un nmero especificado de dgitos fraccionarios.
Devuelve el seno hiperblico del ngulo especificado.
Devuelve la raz cuadrada de un nmero especificado.
Devuelve la tangente del ngulo especificado.
Devuelve la tangente hiperblica del ngulo especificado.
Calcula la parte entera de Decimal o un nmero especificado de Double.
Tabla 1: funciones matemticas de Visual Basic.

3.14.

Funciones de Excel

De igual manera que en la seccin anterior, se pueden utilizar funciones utilizadas frecuentemente
en una planilla de Excel. Es importante tener esto en consideracin debido a que Excel contiene
una infinidad de funciones que pueden ser usadas en VB.
Para utilizar estas funciones es necesario ingresar el siguiente cdigo:

45
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

3.15.

Manejo de Errores

Los errores pueden provenir de un gran espectro de posibilidades, las cuales tengan que ver con la
programacin en s. Por ejemplo el caso de no definir una variable, o errores matemticos como
tener una divisin por 0, son los errores ms recurrentes.
Generalmente la mayora de los errores los detecta e informa al usuario mediante una
ventana emergente como la siguiente:

Que sera en el caso que por algn motivo se haya ejecutado una divisin por cero. Se observa que
en este caso es bastante especfico .
Los errores ms recurrentes son:

Divisin por cero: dir explcitamente Divisin por cero.


Tipo de variable: este error ocurre cuando una variable toma un tipo de dato que no le
corresponde. Por ejemplo declarar una variable como y asignarle un valor de
texto. dir que No coinciden los tipos.
Error matricial: en el caso que se llame a un ndice de una matriz, pero que este no exista.
Por ejemplo un vector de cinco elementos y que se llame a un elemento seis. dir
que Sub ndice fuera del intervalo.

Entre muchos otros, siendo estos del tipo ejecucin. Muchos de estos los detecta y da la
alternativa de ir a la seccin de cdigo donde se encuentra la falta. cmo? mediante el botn
depurar, que lo que hace, es amistosamente dirigirnos a la parte del cdigo que se encuentra la
inconsistencia y no solo eso sino que adems la destaca en amarillo. Muy til.
Sin embargo, existe un sin fin de situaciones donde no se puede acceder a depurar, y es ac
cuando empiezan los dolores de cabeza intentando descubrir el error. Que por cierto no tiene
porque ser un error que interrumpa la ejecucin sino que podra ser un error que haga que los
resultados no sean vlidos. Entonces, cabe preguntarse, qu hacer en estos casos?, intentar
descubrirlo, no queda otra. Una forma de encontrar de manera rpida el error es apoyndose en
los mensajes de texto, ubicarlos en ciertas partes del cdigo de modo de saber hasta dnde est
46
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


corriendo bien, dado a que si el mensaje se muestra sabremos que el cdigo se ejecut hasta ah.
O mostrar una variable en especfico, para saber si se est considerando bien, etctera. Son de
gran utilidad.

3.15.1. Evitar que los Errores Deriven en Mostrar el Cdigo


Para programaciones ms elaboradas donde no es deseable que al ocurrir un error el usuario
visualice el cdigo, existe la alternativa de manejar los errores en tiempo de ejecucin.
Para esto existen funciones de como:

: que como su traduccin indica, en caso de haber error no se contina y


se salta a donde especifique el programador. De este modo, podra por ejemplo pedrsele
al usuario que vuelva a comenzar porque ha ocurrido un error.
A modo de ejemplo:

La imagen anterior muestra una interfaz grfica que claramente al apretar el botn se
obtendr un error. Para evitar el error se utilizar como se muestra a
continuacin.

Donde:

47
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


o
o

direcciona a la lnea ___. Esta lnea debe llevar


los dos puntos.
se utiliza para terminar la ejecucin del . De no poner esto, se
ejecutara de todas forma el mensaje.

: en este caso, de haber error se omite y el cdigo contina en


la siguiente lnea. Es la forma ms sencilla para evitar que salte la ventana emergente de
error de , pero de este modo el usuario no se da cuenta que hubo un error y podra
interpretar mal la informacin.
El cdigo sera:

Y en el caso de ingresar un valor negativo, no se mostrara el mensaje por pantalla


diciendo : dado que el error estara en esa lnea y se la saltara. Pero al
ingresar una letra, se mostrara como respuesta cero, dado que el error se produce al
asignarle valor a la variable , por ende al saltarse esta lnea, sta nunca obtuvo un
valor.

48
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

4. Interfaz Grfica de VB
En esta seccin se vern los aspectos necesarios para poder lograr una interfaz grfica que
incorpore los diferentes objetos que presenta Visual Basic para aplicaciones.

4.1. Introduccin a los Formularios (UserForm)


Los formularios (Userforms) corresponden a la interfaz grfica que almacena los diferentes objetos
(recin mencionados) que dan vida y utilidad a ste.

4.1.1. Iniciando un Formulario


La manera de crear un UserForm es simplemente yendo a:
Insertar UserForm
En la ventana de Visual Basic.
Con lo que se debera visualizar lo siguiente:

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..15: creacin de un
formulario. Se observan los principales aspectos.

En la imagen anterior se observan varios aspectos importantes:

49
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

El formulario se crea con un nombre automtico, que depende de la cantidad de


formularios existentes, en este caso, al ser el primero se llam UserForm1.

En el recuadro en verde se pueden seleccionar el formulario que se desea. El contenido de


las diferentes carpetas que se observan en el recuadro verde se vio con mayor detalle en
la seccin Ambiente Visual Basic.

El recuadro en rojo (cuadro de herramientas) es fundamental en el formulario, dado que


ste contiene a los objetos (Etiquetas, botones) que se insertarn en el formulario. La
forma de abrir este cuadro es mediante el cono que se observa en la imagen o yendo a
Ver Cuadro de Herramientas.

Tambin se observa debajo del recuadro verde que estn las propiedades del formulario,
esto se ver en una seccin aparte.

4.1.2. Programacin en un Formulario


La programacin de los formularios se basa a responder con algn cdigo a alguna accin que sea
ejecutada en el formulario. Es decir, uno debe programar que cuando inicie el formulario corra
cierto cdigo, que cuando se seleccione alguna opcin se ejecute otro, y as.
Para hacer esto se debe entrar a la seccin donde se programa, existen dos formas:
1. Click derecho Ver cdigo

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..16: ingresar a la seccin
donde se programan los formularios.

2. O simplemente Doble Click al fondo del formulario.


Se observar una hoja en blanco en donde uno puede comenzar a escribir las rutinas que se
utilizarn en el formulario (Funciones o Subs).
La hoja en blanco presenta las siguientes propiedades:

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..17: seccin donde se
programan los formularios.

50
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


En la imagen anterior se observan dos caractersticas muy importantes en lo que es la
programacin de un formulario. Se presentan como cuadros combinados (permiten seleccionar
una opcin). Estos son:

Cuadro Combinado de la izquierda (color verde): En este cuadro permite seleccionar lo


siguiente:
o

(General): caen todas las rutinas declaradas como Sub y Funciones. Al asignar esta
seccin, en el cuadro combinado de la derecha (color rojo) se cargarn todas las
funciones y rutinas que hay en el formulario.

Objetos: caen todos los objetos creados en el formulario (botones, etiquetas,


Imgenes, etctera). Adems del formulario en s, que tambin tiene acciones
(como cuando se abre, cuando se cierra, etctera). Al seleccionar algn objeto, en
el cuadro combinado de la derecha (color rojo) se cargarn todas las acciones que
se pueden hacer este objeto.

Cuadro Combinado de la derecha (color rojo): este cuadro depende de lo seleccionado en


el cuadro anterior. En el caso de haber seleccionado (General) en el anterior, se mostrarn
ac las funciones o rutinas, seleccionado una se ir automticamente a la parte de la hoja
que contiene sta. En el caso de haber seleccionado un objeto, ac se mostrarn las
acciones que se pueden hacer con ste, al seleccionar una se abrir instantneamente un
cdigo que permite programar en caso que se haga dicha accin. Esto se ver ms
detalladamente en la seccin posterior.

Tener esto presente es muy til al momento de agilizar el encontrar una rutina y o funcin en
especfico (caso de tener cdigos muy extensos).

4.2. Objetos (Controles)


En esta seccin se mostrar los diferentes tipos de objetos que le dan vida a los formularios. Se
vern los principales aspectos que permiten comprender la utilidad de cada uno de estos.
Los objetos que se vern son:

Etiqueta (Label)
Cuadro de Texto (Text Box)
Cuadro Combinado (Combo Box)
Cuadro de Lista (List Box)
Casillas (Check Box)
Botn de opcin (Option Button)
Marco (Frame)
Botn de Comando (Command Button)
51

Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Barra de Tabulaciones (Tab Strip)


Pgina Mltiple (Multi Page)
Barra de Desplazamiento (Scroll Bar)
Botn de Nmero (Spin Button)
Imagen (Image)

La creacin de un objeto en el formulario se hace mediante el cuadro de herramientas que se


explic en la seccin Iniciando un Formulario.

4.2.1. Programacin de la rutina de respuesta a una accin de un objeto


El apretar un botn, ingresar una tecla, iniciar un formulario, terminar un formulario, posicionar el
mouse sobre una etiqueta, seleccionar algo. Son algunos ejemplos de lo que en ste formularios
llamaremos como Acciones.
Estas acciones actan sobre los objetos o formularios, y la forma de declarar una respuesta
(cdigo) a una accin es la siguiente:

En la seccin anterior se coment que al seleccionar el un objeto en el recuadro


combinado de la izquierda (ver Programacin en un Formulario). En el recuadro
combinado de la derecha aparecan todas las acciones de dicho objeto. Y al hacer click en
una se abra el cdigo en el cual se puede especificar la respuesta.
Ejemplo:

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..18: ir a la seccin donde
se programa la respuesta a una accin.

Se observa que se seleccion el objeto TextBox1 y se desea programar la respuesta


cuando la accin sea que ste cambie. Es decir, cada vez que el valor del cuadro de texto
1 cambie, se ejecutar la rutina que est dentro de:

52
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Del mismo modo se programan todas las respuestas a las acciones. Las acciones ms utilizadas
son:

_Click():
Accin de clickear el objeto. Siempre utilizado en los botones de comando.

_Change():
Accin de que cambie de valor el objeto. Se utiliza en los objetos que pueden cambiar de
valor, como por ejemplo un cuadro de texto, un cuadro de lista, entre otros.

_AfterUpdate():
Accin de despus que se actualiz de valor del objeto. Se asimila a Change() la diferencia
radica en que ste acta despus de haber cambiado todo el valor.

_mouseMove():
Accin de pasar el mouse por sobre el objeto.

_Initialize():
Accin de iniciar el formulario. Importante declarar ac por ejemplo los datos que cargan
el formulario.

_Terminate():
Accin de cerrar el formulario.

Existen otras, pero estas son las de mayor Utilidad.

4.2.2. Manejo de las propiedades de un objeto


Los objetos (etiquetas, cuadros de texto, botones, listas, etctera) tienen propiedades como el
ancho, el alto, el estilo, el valor que toman, el si estn o no habilitados, entre otros. Es importante
saber cmo manipular estos, para hacer un correcto uso del objeto en un formulario.
El lugar donde se controlan las propiedades es:

53
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu. .Error! Utilice la pestaa
Inicio para aplicar 0 al texto que desea que aparezca aqu..19: Ambiente Visual Basic, se observa un objeto (textbox)
que se ha cambiado su propiedad Text.

En la imagen anterior se muestra que las propiedades del objeto TextBox se muestran en el
recuadro rojo. Las propiedades del objeto escogido estn en el recuadro rojo.
Se observa que lo que se modific es la propiedad Text del objeto TextBox1. Ahora bien, muchas
veces se requiere que en tiempo de ejecucin se vean modificadas las propiedades de algn
objeto, la forma de hacer esto es la siguiente:

Se observa que primero se pone el formulario al cual pertenece el objeto, posterior el nombre del
objeto seguido de la propiedad que se quiere modificar. En este ejemplo se modific lo mismo que
se hizo mediante el recuadro del ambiente de Visual Basic.
Ejemplo de aplicacin
Se har lo que se muestra en la siguiente Ilustracin:

54
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Como se observa, lo que se har es que al apretar el botn Bloquear/Desbloquear se activar la


propiedad Enabled (habilitado) del objeto textbox que se observa.
La forma de hacer esto es asignando un cdigo a la accin de hacer click sobre el objeto "botn".
En la seccin anterior (Programacin de la rutina de respuesta a una accin de un objeto) se
explic ms a fondo este aspecto.
Entrando a la seccin donde se programa la respuesta a la accin de clickear se pone el siguiente
cdigo:

Se observa que se utiliz en tiempo de ejecucin el cambio de las propiedades Enabled y Caption.
De este modo se trabajan todas las propiedades que tienen los objetos.
Las propiedades ms comunes y que muchas son generales para todos los objetos son:

Enabled: propiedad que hace referencia a si el objeto est habilitado o no (para ser
usado). Booleana, es decir True o False.
Visible: propiedad que hace referencia a si el objeto es visible o no. Es de tipo booleana.
Font: propiedad de la fuente de la letra. (Tamao, tipo de letra, altura, estilo).
o

En el caso del tipo de letra se debe especificar del siguiente modo:

En el caso del tamao de letra se debe especificar del siguiente modo:

En el caso del estilo negrita o cursiva se debe especificar del siguiente modo:

55
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

En el caso del color de letra se debe especificar del siguiente modo:

Height: la altura del objeto.


Left: valor que especifica la posicin horizontal del objeto, medido desde borde del
formulario o del Frame.
Locked: propiedad que hace referencia a si el objeto est bloqueado o no (para ser
usado). Booleana, es decir True o False. La diferencia con Enabled es que ac el objeto no
se pone de color opaco.
Top: valor que especifica la posicin vertical del cuadro de texto, medido desde borde del
formulario o del Frame.
Width: el ancho del objeto.
Value: entrega el valor que tiene el objeto actual.

Estas son solo algunas propiedades.


Comentario: debido a que cada objeto tiene bastantes propiedades, no se profundizar en estas y
se dejar tarea para el usuario conocerlas mediante el recuadro en rojo.

4.2.3. Cuadro de Texto, TextBox (

Los Cuadros de Texto son la principal herramienta para la recepcin de informacin. Corresponde
a las cajas donde el usuario del formulario puede ingresar los valores que sern los que utilizar el
cdigo.
La apariencia que tiene es:

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..20: cuadro de texto
(TextBox)

Las propiedades ms comunes que se utilizan son:

Font: se explic previamente (Manejo de las propiedades de un objeto)


Enabled: se explic previamente (Manejo de las propiedades de un objeto)
Text: se roba el valor que tiene como String.
Value: se explic previamente (Manejo de las propiedades de un objeto)

La recomendacin de cmo obtener los valores de una cuadro de texto es:

56
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Para el caso de utilizar los cuadros de texto para ingreso de valores. Para tomar el valor del
objeto usar la propiedad Value.
Para el caso de utilizar los cuadros de texto para el ingreso de cadenas de testo. Para
tomar el valor del objeto usar la propiedad Text.

Si se desea restringir el tipo de caracteres que ingresan dentro se puede utilizar una sub rutina
predeterminada para limitar el ingreso de datos, por ejemplo, que sean slo nmeros, se debe
utilizar el siguiente cdigo:

4.2.4. Etiqueta, Label ( )


Este objeto es de gran utilidad dentro de los formulario, ya que tiene la particularidad de ser los
textos que orientan al usuario.
Las principales propiedades que se utiliza son:

Caption: es el texto que lleva escrito la etiqueta.


Visible: se explic previamente (Manejo de las propiedades de un objeto). Muchas veces
en funcin de lo que hace el usuario se hacen o no visibles ciertas etiquetas.

Un ejemplo de una etiqueta es:

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..21: se observan dos
objetos, una etiqueta (Label) y un cuadro de texto (TextBox).

En este caso la propiedad Caption del objeto Label corresponde a Ingrese su nombre.

4.2.5. Marco, Frame (

Los Frames son marcos que se generan para agrupar otros controles.

57
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Son de gran utilidad ya que funcionan como un sub formulario dentro de otro formulario. Ms
adelante se ver que para el manejo de mltiples objetos (por ejemplo el querer que se verifiquen
que muchos cuadros de texto no estn vacos) son de gran utilidad.
Adems que brindan un bonito aspecto y orden, como lo muestra la siguiente imagen:

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..22: objeto marco
(Frame).

La propiedad que ms utiliza este objeto es el Visible y Caption. Visible se utiliza ya que como
funciona como sub formulario, al hacer un frame invisible implica que se hace todo lo que
contenga invisible. La propiedad Caption es para darle el nombre y en el ejemplo anterior la
propiedad tiene valor "Este es un frame".

4.2.6. Botn de Comando, CommandButton (

Este control es un botn de accin, el cual reacciona al hacer un Click sobre ella, este control se
visualiza de la siguiente manera:

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..23: objeto botn
(CommandButton)

Las propiedades que ms se utilizan es Caption y Enabled.


Dado que lo que se espera de un botn es que se ejecute una rutina al momento de hacer click
sobre ste. Se debe programar como se explic en la seccin (Programacin de la rutina de
respuesta a una accin de un objeto). La siguiente imagen muestra el cdigo de la rutina que se
ejecuta al apretar un botn y que tiene como finalidad saludar por pantalla.

58
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Entonces lo que ocurre al apretar el botn es:

4.2.7. Casilla de Verificacin, CkeckBox (

Este control corresponde a una caja en la cual se puede dar un "Check", la estructura de estos
controles son la siguiente:

Este control es independiente de los dems Chekbox que existan, adems ste control tiene dos
valores, los cuales son True cuando esta con un check y False en caso contrario, como se
muestra a continuacin:
1. =
De igual manera que en los controles anteriores, si se le quiere cambiar el nombre que aparece
junto al Checkbox, se debe aplicar la funcin Caption:
1. =

4.2.8. Botn de Opcin, OptionButton ( )


Este control es muy similar al Checkbox ya que para utilizar este control es necesario hacer Click
sobre alguna opcin, la estructura es la siguiente:

Este control interacta con los dems similares que existan en una misma seccin de este tipo, por
lo que no son independientes, si se requieren seleccionar ms de una de estas opciones se
recomienda dividirlas con el control Frame, lo que independiza los Optionbutton que existan.
Por otro lado este control puede tomar dos valores, los cuales corresponden a True cuando est
seleccionado y False en caso contrario, como se muestra a continuacin:
59
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


1. =
De igual manera que en los controles anteriores, si se le quiere cambiar el nombre que parece
junto al Optionbutton, se debe aplicar la funcin Caption:
1. =

4.2.9. Cuadro de Lista, ListBox (

Este control corresponde a un rectngulo en el cual existen mltiples opciones, las cuales se
pueden agregar o eliminar. Adems los tems seleccionados pueden tener mltiples columnas, un
ejemplo de esto es lo siguiente

Como en el ejemplo anterior se ve que existen dos opciones y est seleccionada una, la cual est
destacada en azul, si no se dice especifica otra accin, solamente se podr seleccionar una sola
opcin. Para poder seleccionar ms opciones existen los siguientes comandos

Para seleccionar opciones especificas por separado se debe ingresar el siguiente cdigo
1. =
Para seleccionar opciones las cuales estn juntas, de debe declarar lo siguiente
1. =

Para especificar el nmero de columnas que posee el Listbox se debe ingresar lo siguiente:
1. =
Para eliminar todos los datos dentro del ListBox se debe aplicar el siguiente comando:
1.
Para agregar tems se debe realizar lo siguiente
1
.
. ( , ) = " 3"

Para el caso anterior tanto el nmero de la fila como el de la columna parten desde el 0, en caso
de querer remover un tem se debe hacer lo siguiente:

1
60
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


.
. ( , )

O si se quiere remover toda la fila el proceso es similar como se muestra a continuacin
1.
Para verificar cual tem esta seleccionado o indicar en un comienzo cual dato seleccionar, hay que
utilizar la opcin selected de ste control, la cual tiene dos opciones, true para indicar que est
seleccionado y false en caso contrario. La forma de utilizar esta funcin es la siguiente:
1. ( ) =
Si se requiere obtener el contenido dentro de algn tem basta con hacer lo siguiente
= 1. ( , )

= 1. ( )

Por ltimo, para saber cuntos tems (Filas) existen en la ListBox, se debe ingresar lo siguiente:
1.

4.2.10. Cuadro Combinado, ComboBox (

Este control es muy similar a la anteriormente descrita, slo que en este control las opciones se
ocultan en la pestaa derecha del control, adems en este control solo se puede seleccionar un
slo tem a diferencia del anterior que se podan seleccionar mltiples. La visualizacin clsica de
estos controles es la siguiente:

Para este control todas las funciones mencionadas en la de ListBox son aplicables, excepto por la
de seleccin mltiple, dado eso se proceder a mostrar a simplemente mostrar los comandos con
una simple descripcin

Numero de Columnas
1. =

Borrar todo
1.

Agregar tems
1
.
. ( , ) = " 3"

61

Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Remover tems de columnas mltiples


1
.
. ( , )

Remover filas completas


1.

Seleccin de tem
1. ( ) =

Obtener o cambiar contenido de algn tem


= 1. ( , )

= 1. ( )

Conteo de filas existentes


1.

4.2.11. Botn de Nmero, SpinButton (

Este control permite aumentar o disminuir el valor de alguna variable, por lo mismo se relacionan
generalmente con los Textbox, tal como se muestra a continuacin:

La principal funcin que posee este control son las subrutinas integradas relacionadas al uso de
ambos botones, dichas rutinas se mostrarn a continuacin y se mostrar la aplicacin para
relacionarlas con un Textbox:

Botn Superior
1_()
2. = 2. +

Botn inferior
1_()
2. = 2.

62
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


En las rutinas anteriores se genera que al apretar una de las opciones, el valor del Textbox
aumenta o disminuye en , segn corresponda.

4.2.12. ToggleButton (

Este control es similar a un CommandButton a diferencia que este control tiene valores
predeterminados, los cuales corresponden a true cuando est seleccionado y false cuando no.
La visualizacin de este control en sus distintas formas es la siguiente

ToggleB
utton1
ToggleB
utton1

(Seleccionado)

(No seleccionado)

Para verificar el estado de este control en alguna rutina o para asignar automticamente el estado
de sta se requiere declarar:
1. =
Finalmente si se desea cambiar el nombre que se presenta en el control se debe utilizar la funcin
Caption tal como en los controles anteriores, de forma que se genere lo siguiente
1. = " "

63
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

4.3. Ejecucin de Rutinas


Lo principal que se busca en este captulo es mostrar cmo crear o eliminar secciones para
efectuar algunas rutinas, como hacer correr las rutinas, detenerlas, encontrar errores entre otros
temas de inters.
Ejecucin de rutinas
Primera es necesario conocer cmo ejecutar las rutinas, para aquello se deben ejecutar con el
botn Play (
) o apretar la tecla F5, ste botn se encuentra en la barra superior del Visual
Basic, como se muestra en la siguiente imagen

Adems se encuentra los comandos para pausar y detener las rutinas respectivamente, segn sea
su requerimiento.

64
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

5. Ejemplos Aplicados a Hormign Armado


5.1. Momento curvatura
A continuacin se obtendr el grfico de momento-curvatura, obtenido mediante un algoritmo en
Visual Basic. Para aquello primeramente se presentarn los parmetros de la viga que se analizar
y las consideraciones de anlisis que se efectuarn, luego de esto se mostrar el cdigo de VB y su
respectivo comentario. Finalmente la visualizacin de este, ya sea en las hojas de clculo o en un
Userform.

5.1.1. Consideraciones
Se trabajar bajo la ley de Navier para elementos en flexin, la que postula que las caras planas
permanecen planas. Por otro lado se considerar que el acero tiene un comportamiento elastoplstico y se supondr que la deformacin mxima del acero traicionado es de un 10%.
En relacin al hormign, se utilizar alguna de las curvas de distribucin de esfuerzo-deformacin,
en este caso la deformacin inicial del hormign es variable, se considerar que ste no se
encuentra confinado y adems que la deformacin recorre desde un 0 hasta un 3.8 . En este
caso se considerar la curva de Hognestad, mostrada a continuacin

Ilustracin 2

65
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

5.1.2. Geometra y Propiedades de la viga


En la siguiente imagen se mostrar la seccin transversal de la viga, en la cual se indica la posicin
del acero, las zonas en compresin y traccin del hormign, las deformaciones de las secciones y
los esfuerzos y fuerzas dentro del elemento, tal como se muestra a continuacin

c
Cc

c
H

Compresin
Traccin

As

xc

Ts

s
Ilustracin 3

Los valores de algunas de las propiedades mostradas en la figura anterior sern mostrados en la
siguiente lista

= 2.1 106 [ 2 ]
= 15100 [2 ]
= 4200 [2 ]

= 250 [2 ]
= 25 []
= 50 []
= 3 []
= 16.31 [2 ]

El trmino corresponde a la deformacin del acero, en tanto es la deformacin de la fibra


ms comprimida del hormign, en un instante dado. Por otro lado corresponde a la fuerza
generada al integrar los esfuerzos generados por las deformaciones existentes, adems esta fuerza
se ubica a una distancia de la seccin superior de la viga, que corresponde al centroide de los
esfuerzos en compresin. y es la fuerza en traccin generada por el esfuerzo en el acero.

66
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

5.1.3. Anlisis y desarrollo


Para generar una grfica del momento curvatura se requieren la interaccin de mltiples pares de
momento y curvatura las cuales estn relacionadas mediante la profundidad del eje neutro (c), la
curvatura se obtiene de la siguiente manera
=

Lo siguiente es definir el valor del momento, ya que se est trabajando con una viga, se supondr
que sta no est expuesta a cargas axiales, sean estas de traccin o compresin, dado esto se
tienen que compatibilizar las deformaciones dentro de la viga y el equilibrio de fuerzas dentro de
la seccin analizada, dado esto primero, se debe generar un equilibrio de fuerzas, de donde se
obtiene lo siguiente
(, ) (, ) = 0 { }
De la ecuacin anterior se procede a despejar el valor de para respetar la igualdad, luego se
procede a realizar una sumatoria de momento a la altura de la fibra del acero, con esto se obtiene
el valor del momento asociado a unas deformaciones dadas del concreto y acero. Con esto se
obtiene finalmente que
= (, ) ( (, ))
De la ecuacin anterior se obtiene el valor del momento el cual es funcin de la deformacin del
hormign y de la profundidad del eje neutro, ya que la fuerza generada por el hormign depende
de stas al igual que la ubicacin de esta reaccin ().
Finalmente para generar el diagrama se tiene que realizar un barrido de la deformacin del
hormign desde 0 hasta un 3.8 . Y obtener el valor de C asociado a esa deformacin ya que solo
existe un valor de que genere el equilibrio de fuerzas dentro de la seccin y con esto obtener el
valor de la curvatura y del momento.

5.1.4. Programacin en Visual Basic


Para realizar la rutina anterior de manera ms clara se crearn funciones independientes para no
generar confusiones, algunas de las funciones sern por ejemplo

Para calcular el esfuerzo de una barra de acero dependiendo la deformacin de sta.


La resultante de los esfuerzos del hormign
La ubicacin de la resultante de la fuerza en compresin
El valor del esfuerzo del hormign segn su deformacin entre otras

Dado lo anterior se adjuntar los cdigos a continuacin


1.- la siguiente funcin es sencilla y lo que hace es entregar el valor de la deformacin asociado a
una deformacin dada, stas ecuaciones se obtuvieron de la curva de Hognestad mostrada
anteriormente. Los datos de ingreso son nicamente la deformacin del hormign (e),
67
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Function esf(e)
e0 = 0.002
If e < e0 Then
esf = 2 * (e / e0) - (e / e0) ^ 2
Else
esf = 1 - 0.15 * (e - e0) / (0.0038 - e0)
End If
End Function

2.- La siguiente funcin (ccmc) tiene como objetivo entregar el valor de la resultante de los
esfuerzos del hormign, para lo cual se procedi a realizar una suma de Riemman, para lo cual se
discretiz la longitud desde el eje neutro hasta la cara en traccin (c), para el correcto
funcionamiento de esta funcin, se tienen que ingresar la deformacin mxima del hormign (e),
el ancho de la viga (b) y la resistencia del hormign (fc), dado sto, la funcin es la siguiente
Function ccmc(c, fc, b, e)
n = 1000
dc = c / n
dcc = 0
For i = 1 To n
dcc = dcc + b * fc * dc * esf((2 * i - 1) * e / (2 * 1000))
Next i
ccmc = dcc
End Function

3.- la funcin ts mostrada a continuacin, es bastante sencilla, lo que realiza es entregar el valor
del esfuerzo de una barra de acero, segn su deformacin (e) y esfuerzo de fluencia (fy), trabaja
tanto para barras en traccin y compresin, el cdigo de esta funcin es el siguiente
Function ts(e, fy)
If Abs(e) > fy / 2100000 Then
ts = fy * e / Abs(e)
Else
ts = 2100000 * e
End If
End Function

4.- esta ltima funcin es para determinar la ubicacin de la fuerza concentrada, generada por la
deformacin del hormign. El resultado entregado se represent en la figuran anterior con xc, y
para obtener sta es necesario ingresar la longitud de la zona en compresin (c) y la deformacin
mxima del hormign (e). La rutina es la mostrada a continuacin
Function x_cc_mc(c, e)
n = 1000
dc = c / n
dcc_1 = 0
For i = 1 To n
dcc_1 = dcc_1 + dc * ((2 * i - 1) / 2) * dc * esf((2 * i - 1) * e / (2 *
1000))

68
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Next i
dcc_2 = 0
For j = 1 To n
dcc_2 = dcc_2 + dc * esf((2 * j - 1) * e / (2 * 1000))
Next j
x_cc_mc = dcc_1 / dcc_2
End Function

Con las funciones creadas anteriormente, dentro del mismo modulo se crear la siguiente rutina
(sub) para crear el diagrama de momento curvatura. Para aquello, primeramente se mostrar la
visualizacin de la planilla final en donde se observarn los datos y sus posiciones

Dada esta estructura de datos se procede a mostrar el cdigo generado en Visual Basic
Declaracin de variables
Dim u As Double
Dim c As Double
Dim curv(1 To 39) As Double
Dim momento(1 To 39) As Double
Public Sub mcVSA()
Range("j4", "k41").Value = ""
fy = Range("c6")
fc = Range("c5")
b = Range("c3")
h = Range("c4")
r = Range("c7")
As_trac = Range("c8")
Carga_axial = 0
c_aux = h - r
For i = 1 To 38
def_hor = i / 10000
c = c_aux
u = def_hor
aux = True
Do

69
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


'Compresin zona Hormign
ComH = ccmc(c, fc, b, u)
'Fin Compresin
'borde traccin
es_bt = 10000 * (h - r - c) / c
F_acero = As_trac * ts(u * es_bt / 10000, fy)
mom = (h - r - c + x_cc_mc(c, u)) * ComH
axial = ComH - F_acero 'compresin positivo
If Round((axial - Carga_axial) / 1000, 1) = 0 Then
aux = False
momento(i) = mom / 100000
curv(i) = u * 100 / c
c_aux = 1.2 * c
ElseIf c < 0 Then
aux = False
Else
c = c - 0.01
End If
Loop While aux = True
Next i
For j = 1 To 38
Range("j" & j + 3) = momento(j)
Range("k" & j + 3) = curv(j)
Next i
End Sub

Con lo anterior slo resta asignar la rutina o macro al botn utilizado, para aquello se debe realizar
lo siguiente

En la figura anterior se ve claramente cual botn insertar, una vez hecho esto, se debe tener
activado el modo diseo para posteriormente seleccionar el botn y oprimir la opcin
propiedades, para asignarle un nombre a dicho comando, como se muestra a continuacin

70
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

En el casillero anterior se debe colocar el nombre del CommandButton1, un ejemplo sera



Una vez realizado, se debe asignar la rutina o macro al botn, para aquello se puede realizar doble
clic sobre el botn en modo de diseo y agregar el siguiente cdigo
1_()


O se puede ir directamente a la interfaz de visual Basic y copiar este cdigo dentro de la hoja que
se est trabajando, tal como se muestra a continuacin

71
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Finalmente se debe guardar el archivo como un libro de Excel habilitado para macros, una vez
hecho esto se puede ejecutar el cdigo.
Advertencias:
Ya que en el cdigo se genera un algoritmo iterativo de gran espectro, la solucin puede tardar
algunos minutos segn la potencia del equipo.

72
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

5.2. Armado de Vigas


5.2.1. Diseo Viga Simplemente Armada
En el siguiente ejemplo se ver como implementar un cdigo en Visual Basic que calcula los
parmetros de diseo de una viga Simplemente Armada.
5.2.1.1.

Parmetros a considerar:

Se trabajar con la viga de la figura 1.1 cuyos parmetros a considerar:

= 2.1 106 [2 ]
= 4200 [2 ]
= 250 [2 ]
= [ ]
= 25 []
= 50 []
= 3 []

Asumiendo comportamiento regido por la ley de Navier de secciones planas permanecen planas,
se tiene la siguiente distribucin de esfuerzos y deformaciones:

Figura 1: esquemas viga simplemente armada.

Notar: que se trabajar con el rectngulo equivalente de esfuerzos en compresin que permite
utilizar ACI318 para estado ltimo.
En base a:

Equilibrio interno de la seccin


Leyes constitutivas de los materiales

73
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Se obtienen las siguientes expresiones:
=
(. 1)
de la relacin en los esfuerzos (ley de Navier) se obtiene que
=

( )

Donde
=
Y considerando las siguientes situaciones:

si

el acero est en el rango lineal elstico, por lo cual la fuerza en traccin ser:
=

Si es mayor, el acero fluye por lo cual la fuerza en traccin ser:


=
Y por el rectngulo equivalente,
= 0.85 1 ()
Y por equilibrio de momento
= (


) .

Nota: podra calcularse respecto a otro punto de la seccin.


Por ltimo se debe cumplir qu:
= (318 08)
5.2.1.2.

Anlisis de la seccin simplemente armada

Como la Viga se disear como Viga Simplemente Armada es fundamental saber si es que con la
seccin actual se puede obtener la resistencia nominal requerida que cumpla con ser una falla tipo
dctil que es lo que estipula 318 08.
Para esto, se calcular cul es la mxima resistencia nominal cuando la seccin se arma con el
mximo acero permitido (a mayor acero en traccin, menor deformacin debido a que el
hormign para equilibrar la fuerza en traccin necesita ms seccin en compresin lo que se
74
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


traduce en bajar el eje neutro por ende disminuir la deformacin en el acero). Se trabajar con
una deformacin ltima del acero mnima del 0.005 para as obtener un factor de reduccin de
0.9 (318 08 9.3).
Dado que:

Entonces:
=

( )

Siendo = 0.003, = 0.005 = 47 se obtiene que = 17,625 []


Y con las relaciones antes obtenidas se obtiene que,
= 31.44 [ ]
= = 28.3 [ ]
Este ltimo resultado quiere decir que hasta momentos de . [ ] la solicitacin se
puede cubrir con acero de modo que la falla ltima esperada sea falla dctil con deformacin en
el acero mayor al . Esto ltimo dado que de requerir satisfacer momentos mayores a este,
no es posible armndola simplemente si se quiere obtener una falla dctil, debido a que las
deformaciones obtenidas en el acero en traccin seran bajo el 5 .
Para los casos en que el momento requerido sea mayor al valor obtenido, una solucin es
adicionar acero en compresin de modo que el eje neutro sube y as la deformacin en el acero
aumenta y permite adicionar mayor cuanta en traccin para cubrir el delta de momento. Ms
adelante se desarrollar esta idea con mayor profundidad.

75
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Por otro lado se puede calcular los centmetros cuadrados que estn asociados a este valor lmite.
Despejando de la ecuacin 1.
0.85 1
=

= 18.95 [2 ]
Cuantas mayores a sta darn una deformacin ltima inferior al 5 . No cumpliendo con el
cdigo.

5.2.1.3.

Calcular los centmetros cuadrados necesarios para cubrir lo requerido

Suponiendo que = 25 [ ]
Como el momento requerido es inferior a 28.3 [ ], en estado ltimo la deformacin en el
acero ser mayor al 5 con lo que ser 0.9.
Con lo que la resistencia nominal debe ser

= = 27.78 [ ]

De la ecuacin 2 se tiene,
= (

1
)
2

= 0.85 1 (

Despejando , se obtiene = 15.17 y,


= 68.5 []
Por ecuacin 1
=

= . [ ]

Nota: no se calcul la deformacin del acero debido a que por anlisis antes mencionado esta ser
mayor al 5 .

5.2.2. Anlisis de la Viga Doblemente Armada


Con los resultados obtenidos hasta ahora se tiene:

76
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

La viga armada simplemente (slo refuerzo a traccin) resiste un momento mximo ltimo
( ) de:
= = 28.3 [ ]
Para cumplir con una deformacin en el acero mayor al 5 ( = 0.9).

La cuanta que le brinda esa resistencia mxima es:


= 18.95 [2 ]

Estos ltimos resultados indican, como se coment, que para cuantas menores la deformacin en
el acero ser mayor al cinco por mil y para cuantas mayores no.
Ahora bien, Qu sucede si la solicitacin de la viga es mayor a ?.
Si la solicitacin es mayor, se requiere una mayor cuanta de refuerzo en traccin, y como se
coment asignar una cuanta mayor implica no cumplir con la deformacin del acero en traccin.
Para esto, se requiere entonces asignar acero en compresin, que le entrega mayor ductilidad a la
viga dado que el eje neutro sube debido a que necesita menos seccin en compresin ya que el
acero en compresin tambin trabaja. Entonces al asignarle acero en compresin se puede asignar
cierta cuanta en traccin de modo de cumplir con las deformaciones.

Figura 1: esquemas Viga Doblemente armada.

Supongamos el caso en que el solicitado es 40 [ ]. Este valor es mayor que 28.3 [ ]


por ende se requiere refuerzo en compresin cunto? Una forma alternativa, pero muy til de
saber cunto acero en compresin se requiere sin tener que hacer mayores clculos es:

Se requiere cubrir un momento extra de,


40
=
31.44 = 13 [ ]
0.9
77

Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Este delta de momento se cubrir con un momento par generado por el refuerzo en
traccin que se asignar y el refuerzo en compresin. De modo qu si se tiene:

Figura 3: esquema representativo del aporte del momento par.

Primero, como se busca no alterar el equilibrio, de modo de conservar el mismo eje neutro y el
mismo estado de deformaciones se impone la condicin:
=
Ahora bien, el momento que genera el par fuerza es:
= ( ) ( ) = 13 [ ]
Implica que,
( ) =
=

( )

Siendo el recubrimiento superior. Se obtiene,


= . [ ]

Y,
=
=



( )

o,
78
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


=
=
( )
Saber si fluye o no arriba, es muy sencillo y se desprende del diagrama de estado de
deformaciones,
=

( )

Con los valores que se calcularon para el estado de mxima cuanta:


=

0.003 (17.625 3)
= 0.00248 .
17.625

Por lo que se debe agregar:


= = . [ ]

7.04 [2 ] = 40 [ ]
El anlisis antes obtenido es muy til para clculos rpidos. Sin embargo si se solicita verificar una
viga dada ciertas cuantas en compresin y traccin se debe entrar a utilizar las ecuaciones que se
vern a continuacin.
Verificacin de resultados:
Al igual que el equilibrio analizado para la viga simplemente armada, se generan las siguientes
ecuaciones:
= +
(. 1)

= (

1
) + ( )
2
(. 2)

Al igual que el acero en traccin, el acero en compresin debe analizarse para el caso en que fluye
o en que no. (Para el clculo de la fuerza )
Entonces, los resultados obtenidos se tuvieron qu:

= 18.95 + 7.04 = 25.99[2 ]


= 0 + 7.04 = 7.04[2 ]
Se supone = 0.9 (acero en traccin fluyendo)
Se supone acero en compresin fluyendo

Entonces:
79
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


De la ecuacin 1:
= 0.85 1 +
Despejando C y remplazando se obtiene:
= . []
Verificacin de deformaciones (para ver si los supuestos fueron bien hechos)
=

( )
= 0.002489 () .

( )
= 0.005 () .

De la ecuacin 2 se obtiene:
= 0.85 1 (

1
) + ( )
2

= 44.445 [ ]
= = [ ]
Valor que se requera.

5.2.3. Programacin en Visual Basic como cdigo


DECLARACIN DE VARIABLES GLOBALES
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim

H As Double
B As Double
Fpc As Double
Fy As Double
E As Double
B1 As Double
r As Double 'recubrimiento inferior
c As Double
c_max_SA As Double
e_cu As Double
d As Double
Mn_max_SA As Double
As_max_SA As Double
es As Double
As1 As Double
Asp As Double

80
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Dim
Dim
Dim
Dim

As1_extra As Double
Asp_extra As Double
esp As Double
rp As Double 'recubrimiento inferior

MACRO PRINCIPAL:
Sub Viga_simplementeA()
Dim Mu_max_SA As Double 'Mximo momento que se puede cubrir con viga SA,'para obtener una deformacin es mayor al 5 por mil.
Dim Mu As Double
'Ingreso de datos.
B = 25 'cm.
H = 50 'cm.
Fpc = 250 'kgf/cm2.
Fy = 4200 'kgf/cm2.
E = 50 'kgf/cm2.
r = 3 'cm.
rp = 3 'cm.
Mu = 40 'ton-m.
e_cu = 0.003 'deformacin ltima del hormign.
''
d = H - r
B1 = beta(Fpc) 'B1 tomar el valor que toma Beta en la funcin beta con
valor de entrada Fpc.
Call resistenciaMaxSA 'Se llama a la macro que calcular la resistencia
mxima admisible para Viga 'simplemente armada (supuesto: es = 0.005).
If Mu * 10 ^ 5 < 0.9 * Mn_max_SA Then 'Calcula el rea requerida slo en
el caso en que se pueda 'obtener una deformacin ltima del acero mayor a 0.005.
As_req = raiz(0.85 * Fpc * B1 ^ 2 * B * 0.5, -0.85 * Fpc * B1 * B * d,
(Mu * 10 ^ 5) / 0.9)
MsgBox "La viga NO requiere ser doblemente armada. Se cubre con: " &
Round(As_req, 2) & " [cm2] con una deformacin de es = " & Round(es, 4)
''la funcin Round(variable, decimal a redondear) es redondear.
Else ' en el caso que no, se calcula los aceros extra a agregar con el
momento par
As1_extra = (Mu * 10 ^ 5 / 0.9 - Mn_max_SA) / (Fy * (d - rp))
esp = e_cu * (c_max_SA - rp) / c_max_SA
If esp < Fy / E Then
Asp_extra = Fy * As1_extra / (E * esp)
Else
Asp_extra = As1_extra
End If
MsgBox "La viga SI requiere ser doblemente armada, con acero inferior : "
& Round(As_max_SA, 2) + Round(As1_extra, 2) & " [cm2]" & " Acero
superior: " & Round(Asp_extra, 2) & " [cm2]"

81
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

End If
End Sub

FUNCIONES Y MACROS SECUNDARIAS


Private Function beta(x As Double) 'x es el valor de entrada a la funcin
'(en este caso x = Fpc).
'ACI318S-08 Cap 10.2.7.3
If x <= 280 Then
beta = 0.85
Else
If (0.85 - (0.2) / 280 * (x - 280)) < 0.65 Then
beta = 0.65
Else
beta = 0.85 - (0.2) / 280 * (x - 280)
End If
End If
End Function

Sub resistenciaMaxSA()
c_max_SA = e_cu * d / (0.005 + e_cu)
Mn_max_SA = 0.85 * Fpc * B1 * c_max_SA * B * (d - B1 * c_max_SA / 2) ''Resistencia mxima 'admisible Viga simplemente armada al 0.005.
As_max_SA = 0.85 * Fpc * B1 * c_max_SA * B / Fy 'Centmetros cuadrados de
acero en traccin'para obtener una deformacin del 0.005.
End Sub

Private Function raiz(aa As Double, bb As Double, cc As Double)


'Se buscar el valor de c que cumple con el equilibrio de la seccin
cuando se tiene un 'momento nominal requerido = Mu/0.9.
'1.- ALTERNATIVA SOLUCIN ECUACIN CUADRTICA
Dim x1 As Double 'primera raiz
Dim x2 As Double 'segunda raiz
x1 = (-bb + Sqr(bb ^ 2 - 4 * aa * cc)) / (2 * aa)
x2 = (-bb - Sqr(bb ^ 2 - 4 * aa * cc)) / (2 * aa)
'el criterio para escoger el valor correcto del eje neutro ser el que
est ms cerca del 'centro de la viga.
Dim dis1 As Double
Dim dis2 As Double
If x1 > 0 And x2 > 0 Then
dist1 = Abs(H / 2 - x1)
dist2 = Abs(H / 2 - x2)
If dist1 < dist2 Then
c = x1
Else
c = x2

82
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


End If
Else
c = Application.WorksheetFunction.Max(x1, x2)
End If
' Con el valor del eje neutro encontrado se procede a calcular el rea
requerida
raiz = (0.85 * Fpc * B1 * c * B / Fy)
es = e_cu * (d - c) / c
'2.- ALTERNATIVA POR NEWTON RHAPSON
'Se buscar el eje neutro con el algoritmo de Newton Rhapson
'Dim dif_acep As Double
'Dim incremento As Double
'dif_acep = 0.01 'Valor admisible para terminar la iteracin del mtodo
'paso = 0.001 'Paso de la iteracin
'c_o = 0 'comeienzo
'Dim encontrado As Boolean
'encontrado = False 'variable que al ser verdadera se terminar la
iteracin
'Do While encontrado = False
'c_1 = c_o + paso
'c_1 = c_o - (c_o ^ 2 * aa + c_o * bb + cc) / (2 * c_o * aa + bb)
'Formulacin de Newton Rhapson
'
If c_1 - c_o < dif_acep Then 'Verificacin para ver si el mtodo
converge
'
encontrado = True
'
End If
'
'c_o = c_o + paso
'Loop
'c = c_o
''
End Function

EL cdigo al correrlo mostrara por pantalla:

83
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

5.2.4. Interaccin Excel - Visual Basic


Para trabajar Excel apoyado por Visual Basic, una vez que el cdigo ya est realizado, basta
referenciar que la entrada de datos sea por medio de celdas de Excel, de modo que:
El ingreso de datos y resultados en la planilla sea as:

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..24

Entonces el antiguo ingreso de datos debe ser modificado por:


'Ingreso de datos.
B = Range("c3") 'cm.
H = Cells(4, 3) 'cm. cells(fila,columna)
Fpc = Cells(5, 3) 'kgf/cm2.
Fy = Cells(6, 3) 'kgf/cm2.
E = Cells(7, 3) 'kgf/cm2.
r = Cells(8, 3) 'cm.
rp = Cells(9, 3) 'cm.
Mu = Cells(10, 3) 'ton-m.
e_cu = Range("c11") 'deformacin ltima del hormign.

Notar que se observan dos formas de referencias, mediante Range o mediante Cells, ambas son
vlidas. Sin embargo para cdigos ms complejos es ms til trabajar con Cells debido a que se
puede hacer un barrido en sus filas y en sus columnas mediante valor numrico. La propiedad
Range sirve para asignar un rango, por ejemplo si se quisiera eliminar los datos ingresados,
mediante cdigo, habra que ocupar Range(cells(3,3),cells(10,3)).ClearContents.
Ahora para que se muestren los resultados en las filas de la columna H, habra que agregar al
cdigo, en la parte que aparecer:

84
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


MsgBox "La viga NO requiere ser doblemente armada. Se cubre con: " &
Round(As_req, 2) & " [cm2] con una deformacin de es = " & Round(es, 4)
Cells(5,8) = "NO"
Cells(6,8) = Round(As_req, 2) & " [cm2]"
Cells(7,8) = "-"
Cells(8, 8) = Round(es, 4)
Cells(9, 8) = "-"
Anlogamente agregar para el caso en que requiera ser doblemente armada:
Cells(5,8) = "SI"
Cells(6,8) = Round(As_max_SA, 2) + Round(As1_extra, 2) & " [cm2]"
Cells(7,8) = Round(Asp_extra, 2) & " [cm2]"
Cells(8, 8) = 0.005
Cells(9, 8) = Round(esp, 4)

Notas:
El uso de "&" es para concatenar el valor numrico a un texto, en este ejemplo es para que
pegue en la celda la cuanta y la unidad. Al asignarle a VB algo entre doble comillas, lo
asigna como texto (igual que en Excel) o String.

El MsgBox ya no sera necesario dado que se est mostrando el resultado en las celdas
asignadas.

5.3. Diagrama de Interaccin carga axial momento (, )


Las columnas son elementos estructurales que estn sometidos a esfuerzos principalmente de
compresin y tambin de flexin. El comportamiento del elemento est dominado por las fuerzas
de compresin que actan sobre l, condicionando su resistencia a flexin.
Para el diseo se emplea un enfoque de anlisis a flexo-compresin (carga axial y de momento
flector). El anlisis es similar al hecho en vigas, con la diferencia que ahora el equilibrio se realiza
con la presencia de carga axial. La inclusin de la carga axial se traduce en agregar una incgnita al
problema, cosa que matemticamente no tendra solucin, es por esto que para los elementos de
flexo-compresin la solucin de asocia a un par (, ). Para efectos prcticos, esto se entiende
como que para una columna sometida a un esfuerzo axial dado, podr resistir un momento
nominal que depender de la carga axial.
Ahora bien, qu cargas axiales se considerar?, En estricto rigor se deben considerar todas las
combinaciones ( , ) a las cuales se espera est sometido el elemento. Para efectos prcticos,
uno puede hacer un barrio desde la carga axial mxima y la carga axial mnima que resiste la
columna de modo de tener todas las posibles combinaciones de resistencias (, ), del
elemento. A la representacin grfica de esto es lo que se conoce como el diagrama de
interaccin carga axial - momento, y este es fundamental para el diseo.
85
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

El diagrama de interaccin obtenido ser el de resistencia nominal. El cdigo estipula que ste
debe ser minorado por un factor que se explicar al final de este apartado.
Para la elaboracin del diagrama de interaccin se debe resolver el equilibrio en la seccin
sometida a un momento flector y una carga axial en el instante en que falla el elemento (, ).
La falla se produce por el aplastamiento del hormign ( = 0.003).
El siguiente esquema muestra el estado tensional y de deformacin en la seccin al momento de
estado ltimo.

De la figura anterior se observan lo siguiente:

Las fuerzas sobre la seccin:


o Una carga de compresin y una de flexin. En la figura se representan como
(, ).

Las fueras de reaccin de la seccin:


o Compresin del hormign: magnitud calculada segn rectngulo equivalente del
cdigo ACI. Que es una aproximacin fidedigna para el estado ltimo del concreto.
o Fuerzas del refuerzo: estas pueden ser en traccin o en compresin y dependen
del estado de deformaciones de la seccin transversal.

Centroide plstico (): corresponde al punto de la seccin que al cargarlo, la


deformacin axial de toda la seccin es uniforme. La carga axial externa () se debe
aplicar en este punto debido a que as no genera un momento.
Al es un centroide (en este caso de esfuerzos), se obtiene al igual que cualquier centroide,
por ejemplo geomtrico. La frmula es:

86
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Y con respecto a la Imagen anterior:


=

( ) + ( ) + . (/)
+ + .

Medido desde arriba hacia abajo. Este centroide podra ser ms preciso si para el esfuerzo
en compresin se restaran las reas que utilizan los aceros, sin embargo la diferencia es
despreciable.
Entendindolo conceptualmente es lgico que para la seccin de la imagen anterior, el
centroide plstico est ms abajo de la mitad, debido a que existe mayor refuerzo en la
seccin inferior. Del mismo modo para una seccin de refuerzo simtrico el centroide
plstico caer en la mitad.

Nota: para efectos de este apunte, cuando se hable de refuerzo inferior, es solamente
referido a la disposicin de la imagen, que correspondera al rea de acero . Anlogo
para refuerzo superior (). Se menciona esto debido a que al ser columnas (elementos
verticales) es absurdo hablar de refuerzo inferior o superior.

Las ecuaciones de equilibrio que rigen el sistema son:


= + ( )
Donde,
= 0.85
=
=
Y por estados de deformacin se sabe qu:
=

Y la ecuacin de momento se tiene qu:

= (

1
) + ( ) + ( ) ( )
2

Siendo = ( ).

87
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Se tienen dos ecuaciones y dos incgnitas (, ), por ende el sistema tiene solucin. Basta
implementar un algoritmo y se puede hacer el barrido completo. En un apartado posterior se
implementar el algoritmo en VBa que incorpore lo aprendido en el tutorial.

5.4. Puntos caractersticos del diagrama de interaccin carga axial - momento


5.4.1. Punto de traccin pura ( , ):
La capacidad ltima en traccin del elemento ser cuando slo estn actuando las barras de
refuerzo, y llevndolas a un estado ltimo cuando estas fluyen.

Y por equilibrio se tiene:


= ( + )

5.4.2. Punto de flexin pura:


Ocurre cuando la carga axial es igual a cero. es decir se est en presencia de flexin pura. Mismo
equilibrio que se hace en vigas.

88
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Las ecuaciones de equilibrio en este caso son:


= +
(. 1)

= (

1
) + ( )
2
(. 2)

Ajustando las fuerzas de los refuerzos de acero en funcin de su deformacin.


Siendo

= ( ).

5.4.3. Punto de balance en flexo compresin:


Ocurre cuando el concreto llega a su deformacin ltima en el mismo instante que el acero de
refuerzo a su deformacin de fluencia. Se obtiene por equilibrio al hacer.

89
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

En este caso se conoce la deformacin del refuerzo en traccin inferior ( = ), por ende se
obtiene el valor del eje neutro () de la compatibilidad de deformaciones:
=

Luego con el valor del eje neutro, se obtiene la deformacin del acero superior ( =

).

con esto se puede obtener el valor de la carga axial y momento que generan ese estado de
deformacin. (utilizando la ecuacin 1 y 2).

5.4.4. punto de = .
Ocurre cuando la deformacin del refuerzo en traccin es del 4 por mil. punto til para efectos de
la normativa. (factores de minoracin). Se calcula del mismo modo que el punto de balance,
solamente cambia el valor de la deformacin.
=

= 0.004

Luego con el valor del eje neutro, se obtiene la deformacin del acero superior ( =

).

con esto se puede obtener el valor de la carga axial y momento que generan ese estado de
deformacin. (utilizando la ecuacin 1 y 2).

5.4.5. Punto de = . :
Ocurre cuando la deformacin del refuerzo en traccin es del 5 por mil. punto til para efectos de
la normativa. (factores de minoracin). Se calcula del mismo modo que el punto de balance,
solamente cambia el valor de la deformacin.
90
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

= 0.005

Luego con el valor del eje neutro, se obtiene la deformacin del acero superior ( =

).

con esto se puede obtener el valor de la carga axial y momento que generan ese estado de
deformacin. (utilizando la ecuacin 1 y 2).

5.4.6. Punto de compresin pura (, ):


Mxima compresin que soporta la columna sometida slo a una carga axial.

Y por equilibrio se tiene:


= . + ( + )
Donde es el rea de concreto igual a ( + ).
Es decir el esfuerzo mximo en el concreto sumado al esfuerzo cuando las barras en compresin
estn fluyendo. (recordar que el factor de 0.85 propone el ACI para el rectngulo equivalente de
esfuerzos en el concreto cuando se tiene una deformacin ltima.
Nota: la expresin anterior es vlida para cuando la carga se aplica sobre el , por que osino
hubiese un pequeo momento y el punto de compresin no caera sobre el eje de las ordenadas.
Cabe mencionar que ACI tomando en consideracin esto ltimo restringe la compresin mxima,
por el hecho de existir pequeas excentricidades.

91
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

5.5. Diagrama de Interaccin P-M de diseo


Al igual como se hace en elementos en flexin, el cdigo 318 08 impone factores que
reducen la resistencia nominal de la seccin a modo seguridad donde se debe velar por cumplir:
( , ) (, )

( )

Donde ( , ) corresponde a las solicitaciones mayoradas que actan sobre el elemento,


(, ) es la resistencia nominal de la seccin (DI antes calculado), y corresponde al factor de
reduccin de resistencia que apunta a prevenir el tipo de falla frgil (al igual que en elementos en
flexin).
La forma en que el cdigo (ACI) prevee la falla frgil es asignndole mayor factor a los estados
ltimos que tienen menor ductilidad y uno menor a los con mayor. Por ende el factor depender
de la deformacin del refuerzo en traccin, que al igual que en vigas, se tendr un factor de =
0.65 para deformaciones bajo el 2 por mil (seccin controlada por compresin), = 0.9 para
secciones con deformacin del refuerzo en traccin superior al 5 por mil (seccin controlada por
tensin). Y una transicin lineal desde un rgimen a otro. Esto se especifica en la seccin
9.3.2.2 318 08.
En la misma seccin se especifica que se puede utilizar de forma alternativa una reduccin que
depende de la carga axial, que ser la que se implementar y explicar en este apunte. Consiste
que el factor se incrementar linealmente desde = 0.65 = 0.9 en la medida que
disminuye desde 0.1 ( ), el que sea menor, hasta cero.
Es decir, como se tendr el diagrama de interaccin de resistencia nominal (, ), se calcular:
0.1 0.65
Y a partir del valor ms pequeo de los dos, se reducir segn corresponda para obtener la curva
de diseo ( , ). Segn la siguiente recta:
= 0.9 (

0.25 0.65
)
0.65

0.1

Por otro lado, se especifica en el cdigo que para los elementos sometidos flexin y carga axial, la
carga axial mxima debe ser:
() = 0.8 [0.85 + ( + )]
Que equivalente a:
() = . [ ]
En el ejemplo se puede ver la aplicacin de la minoracin. Se escogi esta forma alternativa
debido a que no se almacen la deformacin del acero en la rutina de Vba, sino las cargas axiales.

92
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

5.6. Ejemplo diagrama de interaccin carga axial - momento (, ):


Se obtendr el diagrama de interaccin (, ) y ( , ) de la siguiente columna:

Se tienen los siguientes datos y parmetros a consideras:

= 2.1 106 [2 ]
= 4200 [2 ]
= 250 [2 ]
= 40 []
= 60 []
= 5 []
= 5 []
= 425 = 19.63 [2 ]
= 225 = 9.82[2 ]

Con el refuerzo provisto se obtiene una cuanta de:


=

( + )
100 = 1.23 [%]

Que est dentro de lo permitido por 318 08 ( 21.6.3.1) que limita la cuanta de
refuerzo longitudinal en elementos a flexo - compresin como mnimo 1% y mximo 6%. Sin
embargo, como recomendacin, no superar el 3-4%.
Observacin: en este caso, al tener un refuerzo asimtrico (ms acero inferior que superior), se
tendr diferentes valores dependiendo del sentido en que se analice. Se calcular en este caso
cuando la flexin genera que el refuerzo inferior se tracciona. (lado derecho del diagrama de
interaccin).

93
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

5.6.1. Clculo del centroide plstico:


Calculado desde la parte superior se tiene:
( ) + ( ) + . (/)
+ + .

=
=

9.82 4200 (5) + 19.63 4200 (60 5) + 0.85 250 40 60 (60/2)


9.82 4200 + 19.63 4200 + 0.85 250 40 60
= . []

Tambin respecto a la reduccin del diagrama de integracin se utiliza el valor de:


. = 0.1 250 40 60 = []

. = 128.18 []

( )

Por ende se reducir utilizando el valor de 0.1 que es el menor valor (60 []).
Tambin se utilizar el valor mximo de carga axial admisible:
() = 0.8 [ ] = 0.8 627.44 = . []
En base a lo expuesto, se procede a calcular los puntos caractersticos del diagrama de
interaccin (, ) y su correspondiente reduccin para diseo:

5.6.2. Traccin Pura:


= ( + ) = 4200 (19.63 + 9.82) = . []
=
Para diseo:
= . ( , ) = (0.9 127.7,0 ) = (. [], )

5.6.3. Flexin Pura:


= +
(. 1)
= (

1
) + ( )
2

(. 2)
Asumiendo que en el estado ltimo el refuerzo inferior est en fluencia y el superior en
estado lineal ( <

).

Se tiene:

94
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

= = 19.63 4200 = . []
= = 9.82 2.1 106 = . []
Siendo,

=

Se obtiene,

= . (.
) []

Y la fuerza en compresin del hormign es:


= 0.85 1 = 0.85 250 0.85 40 = . [/]
Donde,
1 = 0.85 ( 310 08 10.2.7.3, )
Por ecuacin 1 (equilibrio de fuerzas) se tiene:

82.47 = 7.25 + 20616.7 (0.003

5
)

Despejando se obtiene:
= . []
Con lo que se obtiene:
=


8.123 5
= 0.003
= .

8.123

55 8.123
= 0.003
= .

8.123

Con lo que se verifica que los supuestos fueron bien hechos.


Ahora, de la ecuacin 2 se obtiene:
0.85 8.123
8.123 5
) + 20616.7 (0.003
) (55 5)
2
8.123
= . [ ]

= 7.25 8.123 (55

= ( ).
Para diseo:
= . ( , ) = (0,0.9 42.14 ) = (, . [ ])

95
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

5.6.4. Punto de = . :
Al conocer el estado de deformacin del acero inferior, se obtiene c.

55
=
= . 0.003
= 0.005

Se despeja y se obtiene:
= . []
Y por estado de deformacin:
=


20.63 5
= 0.003
= 0.00227

20.63

Las fuerzas a considerar son:

= = 19.63 4200 = . []
= = 9.82 4200 = . []
= 0.85 1 = 0.85 250 0.85 23.57 40 = . []

Entonces por equilibrio,


= + ( )
= 149.02 + 41.23 82.47 = . []
Y la ecuacin de momento se tiene qu:
= (

1
) + ( ) + ( ) ( )
2

0.85 20.63
) + 41.23 (31.63 5) + 82.47 (55 31.63)
2
= . [ ]

= . (31.63

Para diseo:
Segn el criterio de diseo utilizado depende del valor de la carga axial.
Como = . [] > [ ]
= . ( , ) = (0.65 107.78 , 0.65 64.32 )
= (. [] , . [ ])
NOTA: segn criterio por deformacin el factor en este caso sera 0.9.

5.6.5. Punto de = . :
Su procedimiento de clculo es anlogo al punto anterior, con la diferencia que la
deformacin del acero inferior es en este caso = 0.004.

96
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

55
= . 0.003
= 0.004

Se despeja y se obtiene:
= . []
Y por estado de deformacin:
=


23.57 5
= 0.003
= 0.00236

23.57

Las fuerzas a considerar son:

= = 19.63 4200 = . []
= = 9.82 4200 = . []
= 0.85 1 = 0.85 250 0.85 23.57 40 = . []

Entonces por equilibrio,


= + ( )
= 170.3 + 41.23 82.47 = . []
Y la ecuacin de momento se tiene qu:
= (

1
) + ( ) + ( ) ( )
2

0.85 23.57
) + 41.23 (31.63 5) + 82.47 (55 31.63)
2
= . [ ]

= . (31.63

Para diseo:
Segn el criterio de diseo utilizado depende del valor de la carga axial.
Como = . [] > [ ]
= . ( , ) = (0.65 129.07 , 0.65 67.06 )
= (. [] , . [ ])
NOTA: segn criterio por deformacin el factor en este caso sera distinto de 0.65.

5.6.6. Punto de balance en flexo compresin:


Su procedimiento de clculo es anlogo a los puntos anteriores, con la diferencia que la
deformacin del acero inferior es en este caso = .
=

55
= 0.003
= 4200
2.1 106

Se despeja y se obtiene:
97
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


= []
Con lo que se obtiene:
= 0.0025
Las fuerzas a considerar son:

= . []
= . []
= . []

Entonces por equilibrio,


= . []
= . [ ]

Para diseo:
Segn el criterio de diseo utilizado depende del valor de la carga axial.
Como = . [] > [ ]
= . ( , ) = (0.65 197.19 , 0.65 72.22 )
= (. [] , . [ ])

5.6.7. Punto de compresin Pura:


= . + ( + )
= 0.85 250 (40 60 (9.82 + 19.63)) + 4200 (9.82 + 19.63) = . []
=
Para diseo:
Segn el criterio de diseo utilizado depende del valor de la carga axial.
La carga axial mxima fue calculada previamente:
() = . []
= . ( , ) = (0.65 501.95 , 0) = (. [] , )

5.6.8. Resumen de los puntos caractersticos:

[]

[ ]

[]

[ ]

123.7

111.33

0.00

98
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


42.14

0.00

37.93

107.78

64.32

70.06

41.81

129.07

67.06

83.90

43.59

197.19

72.22

128.17

46.94

627.44

326.27

0.00

En la siguiente grfica se observan los puntos caractersticos:

Puntos Caractersticos del Diagrama de


Integracin.
CARGA AXIAL [ton]

700
600
500

400
300
200
100
0
-100 0

10

20

30

40

50

60

70

80

-200
MOMENTO [ton-m]

De los resultados obtenidos se desprende, entre otras cosas, que a mayor carga axial menor
capacidad de deformacin (ductilidad) presenta la seccin. Esto se puede observar en un diagrama
de carga axial - curvatura, que se presentar en el apartado siguiente.

5.7. Elaboracin de una rutina en Visual Basic de Excel que calcule un diagrama
de Interaccin carga axial - momento.
La siguiente rutina desarrolla un diagrama de interaccin ( , ) donde se tienen las siguientes
caractersticas:

Ingreso de datos mediante cdigo.


Desarrollo matemtico en VBa.
Slo se utiliza la hoja de Excel para votar resultados y graficarlos.
Realiza un diagrama de interaccin en ambos sentidos (positivo y negativo).

El objetivo de la rutina es que se familiaricen sobre el uso de diferentes herramientas que se


presentaron a lo largo del tutorial. Como se ver la comprobacin se hizo mediante el software
Etabs y los resultados difieren en un error despreciable.

99
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Algunos comentarios:

Se grafican 150 puntos por sentidos variando el eje neutro desde /0.85 hasta 0.75 .
Estos valores se escogieron para evitar problemas de excentricidad. Es decir, para valores
donde el eje neutro es muy grande o muy pequeo, los resultados obtenidos no tienen
sentido. Por ejemplo un eje neutro de dos, en la columna del ejemplo anterior, se obtiene
una carga axial de traccin y un momento negativo, cosa que deja de tener sentido (por el
momento negativo). Se podra haber implementado un algoritmo que busque el valor en
que el momento es cero, y graficar hasta ah, pero sencillamente consider que es
absolutamente innecesario, y que slo complicara el cdigo.

En el cdigo constantemente se habla se Positivo y Negativo, se refiere a los sentidos de


anlisis segn la siguiente convencin:

La siguiente imagen muestra el rango de valores graficados:

100
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Diagrama de Interaccin P-N


Negativo

Positivo

800

Carga axial [ton]

600
400
200
0

-70

-20

30

80

-200
Momento [ton - m]

Observacin: el cdigo se encuentra comentado y sigue la lgica de cmo se explic en este


apunte. Se recomienda que para su estudio se copie y pegue en VBa, porque por temas de espacio
queda poco legible.
El diagrama obtenido del ejercicio anterior es:

Diagrama de Interaccin P-M


700
600
500

Carga axial [ton]

400
300
200

100
0
-80

-60

-40

-20

20

40

60

80

-100
-200
Momento [ton-m]
Ilustracin 25: Diagrama de interaccin (P-M) de la columna en estudio. El exterior diagrama Nominal y el interior de
diseo.

El cdigo es el siguiente:

101
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


'DEFINICIN DE VARIABLES
Dim B As Double 'ancho columna
Dim H As Double 'alto columna
Dim dr As Double 'recubrimiento
Dim fy As Double 'esfuerzo de fluencia del acero
Dim E As Double 'mdulo elstico del acero
Dim fpc As Double 'resistencia especificada a compresin del hormign f'c
Dim ecu As Double 'deformacin ltima del hormign
Dim As1 As Double 'rea de acero del refuerzo inferior As
Dim Asp As Double 'rea de acero del refuero superior As'
Dim Pi As Double 'constante pi
Dim d As Double 'H-r
Dim cp1 As Double 'centroide plstico positivo
Dim cp2 As Double 'centroide plstico negativo
Dim b1 As Double 'beta 1. factor rectngulo equivalente
Dim matriz_Pn1_Pn2_Mn1_Mn2_Curv() As Double ' matriz de 5 filas, que se
le irn agregando columnas
'las filas son: Pn1,Pn2, Mn1, Mn2, Curvatura 1/m.
Dim aux As Double 'contador de datos
'INGRESO DE DATOS
Sub Ingreso_de_Datos()
B = 40 'cm
H = 60 'cm
dr = 5 'cm
fy = 4200 'kgf/cm2
E = 2.1 * 10 ^ 6 'kgf/cm2
fpc = 250 'kgf/cm2
ecu = 0.003
Pi = 3.14159265358979
As1 = 19.6349540849362 'cm2
Asp = 19.6349540849362/2 'cm2
d = H - dr
'CALCULO DE BETA
If fpc <= 280 Then
b1 = 0.85
Else
b1 = beta(fpc)
End If
''
cp1=(0.85*fpc*B*0.5*H^2+As1*fy*d+Asp*fy*dr)/(0.85*fpc*B*H+(Asp+As1)*fy)'c
p positivo
cp2=(0.85*fpc*B*0.5*H^2+Asp*fy*d+As1*fy*dr)/(0.85*fpc*B*H+(As1+Asp)*fy)'c
p negativo
Call Diagrama_de_Interaccion
End
Sub
Dim
Dim
Dim

Sub
Diagrama_de_Interaccion()
c As Double 'distancia al eje neutro, medida desde arriba [cm]
es As Double 'deformacin unitaria del refuerzo inferior
esp As Double 'deformacin unitaria del refuerzo superior

aux = 1 ' COMPRESIN PURA

102
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


ReDim Preserve matriz_Pn1_Pn2_Mn1_Mn2_Curv(1 To 5,1 To aux)'se agrega una
columna
'el primer dato ser compresin pura... por ende se recorrer el diagrama
de arriba hacia abajo.
matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,aux)=(0.85*fpc*(H*B-As1Asp)+fy*(As1+Asp))/1000
matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,aux)=(0.85*fpc*(H*B-As1Asp)+fy*(As1+Asp))/1000
matriz_Pn1_Pn2_Mn1_Mn2_Curv(3,aux) = 0
matriz_Pn1_Pn2_Mn1_Mn2_Curv(4,aux) = 0
matriz_Pn1_Pn2_Mn1_Mn2_Curv(5,aux) = 0
For c=H/0.85 To 0.75*dr Step -(H/0.85-0.75*dr)/150 'el paso es solo para
generar 150 puntos
es = ecu*(d-c)/c 'por ley de navier
esp = ecu*(c-dr)/c 'por ley de navier
aux = aux + 1 ' nueva columna de datos
ReDim
Preserve
matriz_Pn1_Pn2_Mn1_Mn2_Curv(1
'redimensiona un vector

To

5,

To

aux)

If Abs(es)<=fy/E Then 'diferentes casos en funcin de la deformacin


del acero.
If Abs(esp)<=fy/E Then
matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,aux)=(Asp*E*esp+b1*0.85*fpc*c*BAs1*E*es)/1000'Pn positivo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,aux)=(As1*E*esp+b1*0.85*fpc*c*BAsp*E*es)/1000'Pn negativo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(3,aux)=(Asp*E*esp*(cp1dr)+0.85*fpc*b1*c*B*(cp1-b1*c/2)+As1*E*es*(d-cp1))/100000'Mn positivo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(4,aux)=-(As1*E*esp*(cp2dr)+0.85*fpc*b1*c*B*(cp2-b1*c/2)+Asp*E*es*(d-cp2))/100000'Mn negativo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(5,aux)=ecu/c*100
Else
matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,aux)=(Asp*fy+b1*0.85*fpc*c*BAs1*E*es)/1000'Pn positivo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,aux)=(As1*fy+b1*0.85*fpc*c*BAsp*E*es)/1000'Pn negativo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(3,aux)=(Asp*fy*(cp1dr)+0.85*fpc*b1*c*B*(cp1-b1*c/2)+As1*E*es*(d-cp1))/100000'Mn positivo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(4,aux)=-(As1*fy*(cp2dr)+0.85*fpc*b1*c*B*(cp2-b1*c/2)+Asp*E*es*(d-cp2))/100000'Mn negativo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(5,aux)=ecu/c*100
End If
Else
If Abs(esp)<=fy/E Then
matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,aux)=(Asp*E*esp+b1*0.85*fpc*c*BAs1*fy)/1000'Pn positivo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,aux)=(As1*E*esp+b1*0.85*fpc*c*BAsp*fy)/1000'Pn negativo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(3,aux)=(Asp*E*esp*(cp1dr)+0.85*fpc*b1*c*B*(cp1-b1*c/2)+As1*fy*(d-cp1))/100000'Mn positivo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(4,aux)=-(As1*E*esp*(cp2dr)+0.85*fpc*b1*c*B*(cp2-b1*c/2)+Asp*fy*(d-cp2))/100000'Mn negativo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(5,aux)=ecu/c*100
Else

103
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


If c < dr Then
matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,aux)=(-Asp*fy+b1*0.85*fpc*c*BAs1*fy)/1000'Pn positivo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,aux)=(-As1*fy+b1*0.85*fpc*c*BAsp*fy)/1000'Pn negativo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(3,aux)=(-Asp*fy*(cp1dr)+0.85*fpc*b1*c*B*(cp1-(b1*c)/2)+As1*fy*(d-cp1))/100000'Mn positivo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(4,aux)=-(-As1*fy*(cp2dr)+0.85*fpc*b1*c*B*(cp2-(b1*c)/2)+Asp*fy*(d-cp2))/100000'Mn negativo
Else
If c > d Then
matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,aux)=(Asp*fy+b1*0.85*fpc*c*B+As1*fy)/1000'P
n positivo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,aux)=(As1*fy+b1*0.85*fpc*c*B+Asp*fy)/1000'P
n negativo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(3,aux)=(Asp*fy*(cp1dr)+0.85*fpc*b1*c*B*(cp1-(b1*c)/2)-As1*fy*(d-cp1))/100000'Mn positivo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(4,aux)=-(As1*fy*(cp2dr)+0.85*fpc*b1*c*B*(cp2-(b1*c)/2)-Asp*fy*(d-cp2))/100000'Mn negativo
Else
matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,aux)=(Asp*fy+b1*0.85*fpc*c*BAs1*fy)/1000'Pn positivo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,aux)=(As1*fy+b1*0.85*fpc*c*BAsp*fy)/1000'Pn negativo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(3,aux)=(Asp*fy*(cp1dr)+0.85*fpc*b1*c*B*(cp1-(b1*c)/2)+As1*fy*(d-cp1))/100000'Mn positivo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(4,aux)=-(As1*fy*(cp2dr)+0.85*fpc*b1*c*B*(cp2-(b1*c)/2)+Asp*fy*(d-cp2))/100000'Mn negativo
End If
End If
matriz_Pn1_Pn2_Mn1_Mn2_Curv(5,aux)=ecu/c*100
End If
End If
Next c
aux = aux + 1 'TRACCIN PURA
'el ltimo dato es traccin pura
ReDim Preserve matriz_Pn1_Pn2_Mn1_Mn2_Curv(1 To 5, 1 To aux)
matriz_Pn1_Pn2_Mn1_Mn2_Curv(1, aux) = -fy*(As1+Asp)/1000'Pn positivo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(2, aux) = -fy *(As1+Asp)/1000'Pn negativo
matriz_Pn1_Pn2_Mn1_Mn2_Curv(3, aux) = 0
matriz_Pn1_Pn2_Mn1_Mn2_Curv(4, aux) = 0
matriz_Pn1_Pn2_Mn1_Mn2_Curv(5, aux) = 0
'se pegan los resultados para poder graficarlos.
Range(Cells(2,1),Cells(aux+1,5)).Value
Application.WorksheetFunction.Transpose(matriz_Pn1_Pn2_Mn1_Mn2_Curv)
Call Minoracin
End Sub
Sub Minoracin()
Dim phi As Double 'factor de reduccin de resistencia

104
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Dim k As Double
Dim matriz_Pd1_Pd2_Md1_Md2() As Double 'matriz de 4 filas que contendr n
columnas.
' las filas son Carga axial positiva y negativa, momento positivo y
momento negativo todas de diseo.
Dim CeroPuntoUno As Double 'Valor desde cual comienza a aumentar de 0.65
hasta 0.9 el factor
Dim Pc As Double 'compresin Pura
Dim Pb As Double 'carga axial de balance
Pc = matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,1) 'carga axial de compresin
Pb = Punto_Balance()/1000 ' se llama a la funcin Punto_Balance
'se ocupa una funcin de excel, se escoge el menor de los dos, segn
permite ACI
CeroPuntoUno = WorksheetFunction.Min(0.1*fpc*B*H/1000,0.65*Pb)
For k = 1 To UBound(matriz_Pn1_Pn2_Mn1_Mn2_Curv, 2)
ReDim Preserve matriz_Pd1_Pd2_Md1_Md2(1 To 4, 1 To k)
If matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,k)>CeroPuntoUno/0.65 Then
If matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,k)>0.8*Pc Then
matriz_Pd1_Pd2_Md1_Md2(1,k)=Pc*0.8*0.65
Else
matriz_Pd1_Pd2_Md1_Md2(1,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,k)*0.65
End If
matriz_Pd1_Pd2_Md1_Md2(3,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(3,k)*0.65
Else
If matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,k)>= 0Then
phi=0.9(0.25*0.65/CeroPuntoUno)*matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,k)
matriz_Pd1_Pd2_Md1_Md2(1,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,k)*phi
matriz_Pd1_Pd2_Md1_Md2(3,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(3,k)*phi
Else
phi = 0.9
matriz_Pd1_Pd2_Md1_Md2(1,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(1,k)*phi
matriz_Pd1_Pd2_Md1_Md2(3, k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(3,k)*phi
End If
End If
If matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,k)>CeroPuntoUno/0.65 Then
If matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,k)>0.8*Pc Then
matriz_Pd1_Pd2_Md1_Md2(2,k)=Pc*0.8*0.65
Else
matriz_Pd1_Pd2_Md1_Md2(2,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,k)*0.65
End If
matriz_Pd1_Pd2_Md1_Md2(4,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(4,k)*0.65
Else
If matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,k)>=0 Then
phi=0.9(0.25*0.65/CeroPuntoUno)*matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,k)

105
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

matriz_Pd1_Pd2_Md1_Md2(2,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,k)*phi
matriz_Pd1_Pd2_Md1_Md2(4,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(4,k)*phi
Else
phi = 0.9
matriz_Pd1_Pd2_Md1_Md2(2,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(2,k)*phi
matriz_Pd1_Pd2_Md1_Md2(4,k)=matriz_Pn1_Pn2_Mn1_Mn2_Curv(4,k)*phi
End If
End If
Next k
Range(Cells(2,6),Cells(aux+1,9)).Value
Application.WorksheetFunction.Transpose(matriz_Pd1_Pd2_Md1_Md2)
End Sub
Private Function beta(x As Double)
If (0.85-(0.2)/280*(x-280))<0.65 Then
beta = 0.65
Else
beta = 0.85-(0.2)/280*(x - 280)
End If
End Function
Public Function Punto_Balance()
c = ecu*d/(fy/E + ecu)
esp = ecu * (c - dr) / c
If Abs(esp)<=fy/E Then
Punto_Balance = b1*0.85*fpc*c*B-fy*As1 + Asp*E*esp
Else
Punto_Balance = b1*0.85*fpc*c*B - fy*As1 + Asp*fy
End If
End Function
Sub ttulos() 'Rotula las columnas de datos.
Cells(1,1)="Pn positivo"
Cells(1,2)="Pn negativo"
Cells(1,3)="Mn positivo"
Cells(1,4)="Mn negativo"
Cells(1,5)="Curvatura ltima"
Cells(1,6)="Pd positivo"
Cells(1,7)="Pd negativo"
Cells(1,8)="Md positivo"
Cells(1,9)="Md negativo"
End Sub

5.8. Diagrama Momento Curvatura con carga axial


El diagrama de momento curvatura representa grficamente el estado de deformacin que tiene
la seccin a medida que se va aumentando su carga a flexin. Este nos sirve principalmente para
conocer el nivel de ductilidad que tiene la seccin, de modo de poder asegurar que al momento de
la falla se produzca segn el criterio que deseamos (evitar falla frgil).

106
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


En un apartado anterior se obtuvo el diagrama momento curvatura de una viga (sin carga axial),
en esta ocasin se realiza lo mismo pero considerando la carga axial. Las ecuaciones que se
presentan a continuacin, estn en respuesta del equilibrio interno de la seccin que se
representa en la siguiente imagen:

= + ( )
)) + ( ) + ( ) ( )
= ( ( +

Donde,

= ( )
0

Se debe considerar cmo vara la deformacin del hormign ( ), a medida que vara . Con la
siguiente relacin:
=

corresponde al centroide del esfuerzo en compresin del hormign, calculado como:


Y,

Este medido desde el eje neutro hacia arriba.

EJEMPLO:
107
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Se trabajar con la siguiente columna (misma del diagrama de interaccin P-M, ejemplo anterior).
Y considerando una carga axial de = 91.125 [].


[]
41.5
[]
41.5

0.002

0.0059

0.0035

0.0044

0.0055

0.0094

0.0139
[]
(separacin del estribo)
20

(rea del estribo)


1.13
[ ]
Esto considerando un refuerzo transversal:
[] 7.5 (separacin del estribo)
(rea del estribo)
[2 ] 2.01
Se obtiene mediante una rutina en Visual Basic (ver ms adelante) se obtiene el siguiente
diagrama:

Momento Curvatura.
Elemento Flexo-compresin

45
40

Momento [t-m]

35
30
25
20
15
10
5
0
0

0,1

0,2

0,3
0,4
Curvatura [1/m]

0,5

0,6

Ilustracin 26: diagrama momento - curvatura con carga axial de 91.13 [ton].

108
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

0,7

Hormign Armado I, UTFSM Santiago.


Se grafic hasta la falla en compresin del hormign que estipula el modelo utilizado.

5.8.1. Cdigo en Visual Basic:


6. Sub momento_curvatura_axial()
7. 'Declaracin de Variables
8. Dim fpc As Double 'Resistencia cilndrica del hormign
9. Dim eo As Double
10.
Dim euu As Double
11.
Dim e50u As Double
12.
Dim e50h As Double
13.
Dim e50c As Double
14.
Dim e20c As Double
15.
Dim rho As Double 'Cuanta de acero confinamiento
16.
Dim Bc As Double 'Ancho Ncleo Confinado
17.
Dim Hc As Double
18.
Dim B As Double
19.
Dim H As Double 'Alto Ncleo Confinado
20.
Dim Sh As Double 'Separacin del refuerzo transversal
21.
Dim Ae As Double 'rea transversal del estribo (de una rama)
22.
Dim ec As Double
23.
Dim as1 As Double
24.
Dim asp As Double
25.
Dim r As Double
26.
Dim rp As Double
27.
Dim Fy As Double
28.
Dim E As Double
29.
Dim d As Double
30.
31.
''
32.
Dim cc As Double
33.
Dim N As Double
34.
Dim Cs As Double
35.
Dim Ts As Double
36.
37.
38.
'Valores que son constantes
39.
fpc = 300
40.
B = 45
41.
H = 45
42.
Bc = 41.5
43.
Hc = 41.5
44.
Sh = 7.5
45.
eo = 0.002
46.
'Ae = 1.13097335529233
47.
Ae = 2.0096
48.
r = 3
49.
rp = 3
50.
Fy = 4200
51.
E = 2.1 * 10 ^ 6
52.
as1 = 14.7262155637022
53.
asp = 14.7262155637022
54.
cp = 45 / 2
55.
''
56.
57.
d = H - r

109
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.

e50u = (0.21 + 0.002 * fpc) / (fpc - 70)


euu = 1.6 * e50u - 0.6 * eo
rho = 2 * Ae * (Bc + Hc) / (Bc * Hc * Sh)
e50h = 0.75 * rho * Sqr(Bc / Sh)
e50c = e50u + e50h
e20c = 1.6 * e50c - 0.6 * eo
MsgBox e50c
Dim aa As Double
Dim bb As Double
Dim ccc As Double
'ecm = 0.0052
Call borrar
N = 91125
Dim ec_kd_es_esp_M_Cur() As Double
Dim contador As Integer
For ecm = 0.0002 To e20c Step 0.0002
'I.ANTES DE eo
If ecm < eo Then

aa = fpc * B * (ecm / eo - ecm ^ 2 / (3 * eo ^ 2)) 'trmino


que acompaa a kd^2.
85.
'CASO 1 Acero superior en inferior fluyendo
86.
Cs1 = Fy * asp
87.
Ts1 = Fy * as1
88.
kd1 = (N - Cs + Ts) / (fpc * B * (ecm / eo - ecm ^ 2 / (3 *
eo ^ 2)))
89.
'MsgBox kd1
90.
91.
If ecm * (kd1 - rp) / kd1 > Fy / E And ecm * (d - kd1) /
kd1 > Fy / E Then
92.
kd = kd1
93.
Cs = Cs1
94.
Ts = Ts1
95.
End If
96.
97.
'CASO 2 Acero superior en inferior rango lineal.
98.
bb = -1 * (N - ecm * E * (asp + as1))
99.
ccc = -1 * ecm * E * (d * as1 - rp * asp)
100.
kd2 = raiz(aa, bb, ccc)
101.
'MsgBox kd2
102.
103.
If ecm * (kd2 - rp) / kd2 < Fy / E And ecm * (d - kd2) /
kd2 < Fy / E Then
104.
kd = kd2
105.
Cs = E * asp * ecm * (kd2 - rp) / kd2
106.
Ts = E * as1 * ecm * (d - kd2) / kd2
107.
End If
108.
109.
'CASO 3 Acero superior en rango lineal e inferior fluyendo.
110.
bb = -1 * (N - ecm * E * asp + Fy * as1)

110
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


111.
ccc = -1 * ecm * E * rp * asp
112.
kd3 = raiz(aa, bb, ccc)
113.
'MsgBox kd3
114.
115.
If ecm * (kd3 - rp) / kd3 < Fy / E And ecm * (d - kd3) /
kd3 > Fy / E Then
116.
kd = kd3
117.
Cs = E * asp * ecm * (kd3 - rp) / kd3
118.
Ts = as1 * Fy
119.
End If
120.
121.
'CASO 4 Acero superior fluyendo e inferior en rango lineal.
122.
bb = -1 * (N - ecm * E * as1 - Fy * asp)
123.
ccc = -1 * ecm * E * d * as1
124.
kd4 = raiz(aa, bb, ccc)
125.
'MsgBox kd4
126.
127.
If ecm * (kd4 - rp) / kd4 > Fy / E And ecm * (d - kd4) /
kd4 < Fy / E Then
128.
kd = kd4
129.
Cs = asp * Fy
130.
Ts = E * as1 * ecm * (d - kd4) / kd4
131.
End If
132.
133.
'MsgBox "El Kd encontrado (menor a e0) es: " & kd
134.
'MsgBox "cc: " & cc
135.
136.
ybarra = (2 * ecm * kd ^ 2 / (3 * eo) - ecm ^ 2 * kd ^ 2 /
(4 * eo ^ 2)) / (ecm * kd / eo - ecm ^ 2 * kd / (3 * eo ^ 2))
137.
cc = fpc * B * (ecm * kd / eo - ecm ^ 2 * kd / (3 * eo ^
2))
138.
139.
M = (cc * (cp - kd + ybarra) + Cs * (cp - rp) + Ts * (d cp)) * 10 ^ -5
140.
curv = ecm / kd
141.
'MsgBox M
142.
143.
Else
144.
'II.despus DE eo
145.
aa = fpc * B * (1 - eo / (3 * ecm) - ecm / (4 * (e50c eo)) + eo ^ 2 / (4 * ecm * (e50c - eo)))
146.
'CASO 1
147.
Cs1 = Fy * asp
148.
Ts1 = Fy * as1
149.
kd1 = (N - Cs + Ts) / (fpc * B * (1 - eo / (3 * ecm) - ecm
/ (4 * (e50c - eo)) + eo ^ 2 / (4 * ecm * (e50c - eo))))
150.
'MsgBox kd1
151.
If ecm * (kd1 - rp) / kd1 > Fy / E And ecm * (d - kd1) /
kd1 > Fy / E Then
152.
kd = kd1
153.
'MsgBox "kd1"
154.
Cs = Cs1
155.
Ts = Ts1
156.
End If
157.
158.
'CASO 2
159.
bb = -1 * (N - ecm * E * (asp + as1))

111
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


160.
ccc = -1 * ecm * E * (d * as1 - rp * asp)
161.
kd2 = raiz(aa, bb, ccc)
162.
'MsgBox kd2
163.
If ecm * (kd2 - rp) / kd2 < Fy / E And ecm * (d - kd2) /
kd2 < Fy / E Then
164.
kd = kd2
165.
'MsgBox "kd2"
166.
Cs = E * asp * ecm * (kd2 - rp) / kd2
167.
Ts = E * as1 * ecm * (d - kd2) / kd2
168.
End If
169.
170.
'CASO 3
171.
bb = -1 * (N - ecm * E * asp + Fy * as1)
172.
ccc = -1 * ecm * E * rp * asp
173.
kd3 = raiz(aa, bb, ccc)
174.
'MsgBox kd3
175.
If ecm * (kd3 - rp) / kd3 < Fy / E And ecm * (d - kd3) /
kd3 > Fy / E Then
176.
kd = kd3
177.
'MsgBox "kd3"
178.
Cs = E * asp * ecm * (kd3 - rp) / kd3
179.
Ts = as1 * Fy
180.
End If
181.
182.
'CASO 4
183.
bb = -1 * (N - ecm * E * as1 - Fy * asp)
184.
ccc = -1 * ecm * E * d * as1
185.
kd4 = raiz(aa, bb, ccc)
186.
'MsgBox kd4
187.
If ecm * (kd4 - rp) / kd4 > Fy / E And ecm * (d - kd4) /
kd4 < Fy / E Then
188.
kd = "kd4"
189.
'MsgBox kd4
190.
Cs = asp * Fy
191.
Ts = E * as1 * ecm * (d - kd4) / kd4
192.
End If
193.
194.
'MsgBox "El Kd encontrado (mayor a eo) es: " & kd
195.
196.
ybarra = ((5 / 12) * (eo * kd / ecm) ^ 2 + kd ^ 2 / 2 - ecm
* kd ^ 2 / (6 * (e50c - eo)) + eo * kd ^ 2 / (4 * (e50c - eo)) - (1 /
2) * (eo * kd / ecm) ^ 2 - eo ^ 3 * kd ^ 2 / (12 * ecm ^ 2 * (e50c eo))) / (kd * (1 - eo / (3 * ecm) - ecm / (4 * (e50c - eo)) + eo ^ 2 /
(4 * ecm * (e50c - eo))))
197.
cc = fpc * B * kd * (1 - eo / (3 * ecm) - ecm / (4 * (e50c
- eo)) + eo ^ 2 / (4 * ecm * (e50c - eo)))
198.
M = (cc * (cp - kd + ybarra) + Cs * (cp - rp) + Ts * (d cp)) * 10 ^ -5
199.
curv = ecm / kd
200.
'MsgBox M
201.
202.
End If
203.
204. contador = contador + 1
205. ReDim Preserve ec_kd_es_esp_M_Cur(1 To 6, 1 To contador)
206.
207. ec_kd_es_esp_M_Cur(1, contador) = ecm

112
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


208. ec_kd_es_esp_M_Cur(2, contador) = kd
209. ec_kd_es_esp_M_Cur(3, contador) = ecm * (d - kd) / kd
210. ec_kd_es_esp_M_Cur(4, contador) = ecm * (kd - rp) / kd
211. ec_kd_es_esp_M_Cur(5, contador) = M
212. ec_kd_es_esp_M_Cur(6, contador) = curv * 100
213.
214. Next
215.
216.
217. Range(Cells(3,
1),
Cells(2
+
contador,
6))
=
WorksheetFunction.Transpose(ec_kd_es_esp_M_Cur)
218.
219.
220. 'MsgBox UBound(ec_kd_es_esp_M_Cur, 2)
221. End Sub
222.
223.
224. Private Function raiz(aa As Double, bb As Double, cc As Double)
225. 'Se buscar el valor de c que cumple con el equilibrio de la
seccin cuando se tiene un
226. 'momento nominal requerido = Mu/0.9.
227. '1.- ALTERNATIVA SOLUCIN ECUACIN CUADRTICA
228. Dim x1 As Double 'primera raiz
229. Dim x2 As Double 'segunda raiz
230. x1 = (-bb + Sqr(bb ^ 2 - 4 * aa * cc)) / (2 * aa)
231. x2 = (-bb - Sqr(bb ^ 2 - 4 * aa * cc)) / (2 * aa)
232. 'MsgBox "x1: " & x1 & "
x2: " & x2
233.
234. 'el criterio para escoger el valor correcto del eje neutro ser el
que est ms cerca del
235. 'centro de la viga.
236. Dim dis1 As Double
237. Dim dis2 As Double
238. If x1 > 0 And x2 > 0 Then
239. dist1 = Abs(H / 2 - x1)
240. dist2 = Abs(H / 2 - x2)
241.
If dist1 < dist2 Then
242.
c = x1
243.
Else
244.
c = x2
245.
End If
246. Else
247. c = Application.WorksheetFunction.Max(x1, x2)
248. End If
249. ' Con el valor del eje neutro encontrado se procede a calcular el
rea requerida
250. raiz = c
251. End Function
252. Sub borrar()
253. Dim i As Integer
254. Do While Cells(3 + i, 1) <> ""
255. i = i + 1
256. Loop
257. Range(Cells(3, 1), Cells(3 + i, 6)).ClearContents
258. End Sub

113
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

258.1.

Grfica de Kent & Park para distintas cuantas de confinamiento

En el siguiente ejemplo se ver cmo implementar un cdigo en Visual Basic que permite graficar
curvas del comportamiento esfuerzo - deformacin del hormign sometido a carga en
compresin. Para diferentes cuantas de refuerzo de confinamiento ( ).
Se utilizar el modelo de Kent & Park para el comportamiento del hormign, de modo de
considerar un aumento en la ductilidad aportado por el confinamiento. Los parmetros que rigen
la curva son:

Se mostrarn los resultados mediante la siguiente interfaz:

114
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..27: Planilla de
visualizacin

El objetivo de la Macro es:

Para las reas trasversales de los estribos que se tienen en las celdas bajo la celda "B9"
( [2 ]). Calcular la grfica correspondiente.

Que los resultados del esfuerzo en compresin para una deformacin dada se muestren a
continuacin de los datos de la ltima cuanta calculada.

Trabajar con varias "Sub rutinas" de modo de entender cmo interactuan entre s.

258.1.1.

Cdigo y comentarios:

Dim Grfico As Excel.Chart


utiliza en dos rutinas

'Esta

variable

se

declara

Sub Generar_grficos()
Dim
Dim
Dim
j =
i =

j As Integer
i As Integer
a As Double
0
0

'Declaracin de Variables
Dim fpc As Double 'Resistencia cilndrica del hormign
Dim eo As Double
Dim euu As Double
Dim e50u As Double
Dim e50h As Double
Dim e50c As Double

115
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

ac

ya

que

se

Hormign Armado I, UTFSM Santiago.


Dim e20c As Double
Dim rho As Double 'Cuanta de acero confinamiento
Dim Bc As Double 'Ancho Ncleo Confinado
Dim Hc As Double
'Alto Ncleo Confinado
Dim Sh As Double 'Separacin del refuerzo transversal
Dim Ae As Double 'rea transversal del estribo (de una rama)
Dim ec As Double
''
'Valores que son constantes
fpc = Range("c4")
Bc = Cells(5, 3)
Hc = Cells(6, 3)
Sh = Cells(7, 3)
eo = 0.002
e50u = (0.21 + 0.002 * fpc) / (fpc - 70)
euu = 1.6 * e50u - 0.6 * eo
''
'
Call borrar 'Se ejecuta la sub rutina Borrar. Y contina el cdigo.
Cells(23, 3) = "ec" 'Se escribe ec en range("c23")
ActiveSheet.ChartObjects(1).Delete 'Borrar grfico, esto se hace debido a
que la macro le agrega series de datos al grfico_
'si no se borrara el grfico, la capacidad de veces que se podra
ejecutar la macro sera finita, dado que Excel trabaja_
'con cierta cantidad mxima de series de datos para los grficos.
Call Crear_grfico 'Se llama a la sub rutina llamada Crear_grfico. Esta
se ejecuta y contina con el cdigo.
Do While Cells(10 + j, 2) <> "" 'Hacer mientras no se tope con una celda
vaca bajo range("B9"). Empieza con Do while_
'y termina con Loop. El uso de "" significa vacio.
Ae = Cells(10 + j, 2)
rho = 2 * Ae * (Bc + Hc) / (Bc * Hc * Sh)
e50h = 0.75 * rho * Sqr(Bc / Sh)
e50c = e50u + e50h
e20c = 1.6 * e50c - 0.6 * eo
Cells(23, 4 + j) = "fc(" & Ae & " cm2)" 'Escribe en la respectiva
columna el esfuerzo en funcin del rea utilizada.
Paso = 0.0001 'Paso que se utilizar para el barrido de ec
i = 0 'importante definirlo afuera del siguiente while, dado que
como para cada rea se har lo mismo, por ende_
' este contador debe reiniciar el dnde se pegarn los
resultados.
ec = 0 'anlogo a la explicacin anterior. Para cada rea se debe
comenzar con ec=o
Do While ec <= e20c 'Hacer mientras ec sea menor igual que e20c
If ec <= eo Then 'condicin de la curva utilizar

116
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.


Cells(24 + i, 4 + j) = fpc * (2 * (ec / eo) - (ec / eo) ^ 2)
'Pega el esfuerzo obtenido
Else
Cells(24 + i, 4 + j) = fpc * (1 - (ec - eo) / (2 * (e50c - eo))) 'Rama
descendente H. confinado
End If
Cells(24 + i, 3) = ec ' pega la deformacin
i = i + 1 ' para pegar el siguiuente dato una celda ms abajo
ec = ec + Paso 'aumento de ec
Loop 'Fin del segundo while
j = j + 1 ' siguiente columna para pasar a la siguiente rea
Grfico.SeriesCollection.NewSeries 'Agrega una serie de datos al char
llamado Grfico
Grfico.SeriesCollection(j).XValues = Range(Cells(24, 3), Cells(23 + i,
3)) 'Agrega las deformaciones como variable x
Grfico.SeriesCollection(j).Values = Range(Cells(24, 3 + j), Cells(23 +
i, 3 + j)) 'Agrega los esfuerzos como variable y
Loop 'Fin del primer while.
End Sub
Sub Crear_grfico()
Set
Grfico
=
ActiveSheet.ChartObjects.Add(Left:=300,
Width:=450,
Top:=10, Height:=300).Chart 'Crear un grfico y se le asigna el nombre
Grfico.
'Left = ubicacin desde izquierda a derecha. Width = Ancho del grfico.
Top = ubicacin de arriba a abajo, Height = altura del grfico.
Grfico.ChartType = xlXYScatterLinesNoMarkers 'Formato de grfico (con
ttulo, con leyendas, etc)
Grfico.ApplyLayout (1) 'Formato de grfico (Lineas recatas con o sin
marcadores, etc)
Grfico.Legend.Clear 'Borrar leyendas
Grfico.ChartTitle.Text = "Kent & Park" 'Ttulo del grfico
End Sub
Sub borrar()
Dim j As Integer
Dim i As Integer
Do While Cells(23 + i, 3) <> "" ' Para saber hasta qu fila borrar
i = i + 1
Loop
Do While Cells(23, 3 + j) <> "" 'Para saber hasta que columna borrar
j = i + 1
Loop
Range(Cells(23, 3), Cells(23 + i, 3 + j)).ClearContents 'Borra el rango
End Sub

117
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

Hormign Armado I, UTFSM Santiago.

258.1.2.

Utilizacin del cdigo mediante botn en planilla.

Suponiendo que el cdigo se escribe en la Hoja1(Hoja1). Del cdigo anterior se identifican 3


macros:

Sub Generar_grficos(): macro que podra definirse como principal, ya que de sta macro
se hace una llamado a las otras dos macros (Call Borrar y Call Crear_grfico).

Sub Borrar(): macro que borra datos utilizados para las grficas

Sub Crear_grfico: macro que crea el grfico y le asigna algunos formatos.

Entonces para asignarles estas macros a los botones, basta referenciarlas. Para esto, al momento
de crear un botn de control de formulario (recordar que a stos se le asignan macros. Los
botones de Control ActiveX se le asigna un cdigo) se despliega la siguiente ventana que permite
asignarle una macro al botn.

Y se observa las macros que se tienen.


En el ejemplo, se tiene dos botones de formulario. A uno se le asign la macro Generar_grficos, y
al otro la macro Borrar.

118
Tutorial - Ignacio Mayorga / Ignacio Ruiz.

S-ar putea să vă placă și