Documente Academic
Documente Profesional
Documente Cultură
SANTA MARA
Apunte de Visual Basic de Excel aplicado a
Hormign Armado I
USM Campus Santiago
I Semestre 2015
TABLA DE CONTENIDOS
1. ALCANCE
2. NOCIONES BSICAS
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.
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
49
49
50
51
52
53
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 ( )
57
58
59
59
60
61
62
4.2.12. TOGGLEBUTTON ( )
4.3. EJECUCIN DE RUTINAS
63
64
65
2
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
3
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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
Corte en Vigas
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
4
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
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.
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.
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.
7
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
En el caso de Microsoft Excel Objetos, basta slo decidir en qu hoja programar y hacer
doble click en sta.
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.
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.
Integer:
Single:
Double:
Short:
Long:
String:
Char:
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.
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
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 asignarle a una variable cualquiera el valor que corresponde a un cierto coeficiente
de una matriz.
Alguna_Variable = Tipos_Aceros(1, 1)
11
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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
12
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
13
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
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.
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...
And
Or
:
:
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.
Las Clusulas tienen 3 tipos de opciones para definir, las cuales se mostrarn a continuacin:
Forma 1:
Forma 2:
16
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
Forma 3:
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.
Para hacer el llamado de una funcin, sub, variable, objeto, etc. Se debe Anteponer la ubicacin de
ste. Ejemplo:
TextBox
CheckBox
ListBox
SpinButton
ComboBox
18
OptionButton
CommandButton
Label
Identificar errores
Entender un cdigo
Uso de interfaz grfica
Agregar un formato
Formato General:
o
VbCritical:
VbQuestion:
19
VbInformation:
VbExclamation:
Mostrar:
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.
Reintentar
Omitir
Si
No
Se mostrar:
21
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
22
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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:
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:
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.
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.
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.
Por ende los mensajes por pantalla que mostrara sera 3 5. Que corresponden a tres filas y cinco
columnas.
26
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
27
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
28
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
Se obtiene 33.
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:
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.
Se mostrar:
Se mostrar:
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.
32
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
Donde:
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.)
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
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.
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.
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 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.
En esta seccin se presentarn algunas funciones tiles de Microsoft Excel, pensando en ser
utilizadas y llamadas desde Visual Basic.
36
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
37
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
Ordenado: valor lgico que especifica si BUSCARV va a buscar una coincidencia exacta o
aproximada:
o
39
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
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
Ventaja
40
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
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.
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.
42
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
43
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
Donde,
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.
Que ejecutar la funcin objetivo en todas las filas requeridas y de manera rpida.
3.13.
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:
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.
Log
Log10
Max
Min
Round
Sin
Sinh
Sqrt
Tan
Tanh
Truncate
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.
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:
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.
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.
48
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
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.
49
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
Tambin se observa debajo del recuadro verde que estn las propiedades del formulario,
esto se ver en una seccin aparte.
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.
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.
(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.
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).
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
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.
52
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
53
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
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 estilo negrita o cursiva se debe especificar del siguiente modo:
55
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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)
56
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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:
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.
Los Frames son marcos que se generan para agrupar otros controles.
57
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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".
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)
58
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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. =
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.
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.
= 1. ( )
Por ltimo, para saber cuntos tems (Filas) existen en la ListBox, se debe ingresar lo siguiente:
1.
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
Seleccin de tem
1. ( ) =
= 1. ( )
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.
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.
Adems se encuentra los comandos para pausar y detener las rutinas respectivamente, segn sea
su requerimiento.
64
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
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 ]
66
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
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.
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.
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.
71
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
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:
Notar: que se trabajar con el rectngulo equivalente de esfuerzos en compresin que permite
utilizar ACI318 para estado ltimo.
En base a:
73
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
( )
Donde
=
Y considerando las siguientes situaciones:
si
el acero est en el rango lineal elstico, por lo cual la fuerza en traccin ser:
=
) .
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.
Entonces:
=
( )
75
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
= 18.95 [2 ]
Cuantas mayores a sta darn una deformacin ltima inferior al 5 . No cumpliendo con el
cdigo.
5.2.1.3.
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 (
= . [ ]
Nota: no se calcul la deformacin del acero debido a que por anlisis antes mencionado esta ser
mayor al 5 .
76
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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).
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.
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:
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,
( ) =
=
( )
Y,
=
=
( )
o,
78
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
( )
0.003 (17.625 3)
= 0.00248 .
17.625
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:
Entonces:
79
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
( )
= 0.002489 () .
( )
= 0.005 () .
De la ecuacin 2 se obtiene:
= 0.85 1 (
1
) + ( )
2
= 44.445 [ ]
= = [ ]
Valor que se requera.
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.
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.
End If
End Sub
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
82
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
83
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..24
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.
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.
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.
86
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
( ) + ( ) + . (/)
+ + .
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.
= (
1
) + ( ) + ( ) ( )
2
Siendo = ( ).
87
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
88
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
= (
1
) + ( )
2
(. 2)
= ( ).
89
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
= 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).
91
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
( )
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.
= 2.1 106 [2 ]
= 4200 [2 ]
= 250 [2 ]
= 40 []
= 60 []
= 5 []
= 5 []
= 425 = 19.63 [2 ]
= 225 = 9.82[2 ]
( + )
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.
=
=
. = 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:
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.
= = 19.63 4200 = . []
= = 9.82 2.1 106 = . []
Siendo,
=
Se obtiene,
= . (.
) []
5
)
Despejando se obtiene:
= . []
Con lo que se obtiene:
=
8.123 5
= 0.003
= .
8.123
55 8.123
= 0.003
= .
8.123
= ( ).
Para diseo:
= . ( , ) = (0,0.9 42.14 ) = (, . [ ])
95
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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
= = 19.63 4200 = . []
= = 9.82 4200 = . []
= 0.85 1 = 0.85 250 0.85 23.57 40 = . []
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.
55
= . 0.003
= 0.004
Se despeja y se obtiene:
= . []
Y por estado de deformacin:
=
23.57 5
= 0.003
= 0.00236
23.57
= = 19.63 4200 = . []
= = 9.82 4200 = . []
= 0.85 1 = 0.85 250 0.85 23.57 40 = . []
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.
55
= 0.003
= 4200
2.1 106
Se despeja y se obtiene:
97
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
= . []
= . []
= . []
Para diseo:
Segn el criterio de diseo utilizado depende del valor de la carga axial.
Como = . [] > [ ]
= . ( , ) = (0.65 197.19 , 0.65 72.22 )
= (. [] , . [ ])
[]
[ ]
[]
[ ]
123.7
111.33
0.00
98
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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
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:
99
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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.
100
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
Positivo
800
600
400
200
0
-70
-20
30
80
-200
Momento [ton - m]
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.
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
102
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
To
5,
To
aux)
103
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
104
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
105
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
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
106
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
= + ( )
)) + ( ) + ( ) ( )
= ( ( +
Donde,
= ( )
0
Se debe considerar cmo vara la deformacin del hormign ( ), a medida que vara . Con la
siguiente relacin:
=
EJEMPLO:
107
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
[]
41.5
[]
41.5
0.002
0.0059
0.0035
0.0044
0.0055
0.0094
0.0139
[]
(separacin del estribo)
20
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
109
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
110
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
111
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
112
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
113
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
258.1.
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:
114
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
Ilustracin Error! Utilice la pestaa Inicio para aplicar 0 al texto que desea que aparezca aqu..27: Planilla de
visualizacin
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:
'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
116
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
117
Tutorial - Ignacio Mayorga / Ignacio Ruiz.
258.1.2.
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
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.
118
Tutorial - Ignacio Mayorga / Ignacio Ruiz.