Manual Básico de Visual Basic para Excel
Manual Básico de Visual Basic para Excel
Índice
1. INTRODUCCION (a propósito de Visual
Basic) ...................................................................... 4 2.
OBJETIVOS .....................................................................................................................
........ 4 3. DESARROLLO DE LOS
EJEMPLOS ........................................................................................... 5
3.1. Creación de un “botón” que al apretarlo escriba
HOLA. .............................................. 5 3.2. Acumulación de “HOLA”’s en la misma
celda. .............................................................. 6 3.3. Acumulación de texto en varias
diagonales sucesivas.................................................. 7 3.4. Programación de series
de Fibonacci............................................................................ 8
4. NUEVOS EJEMPLOS: OBTENCIÓN DE NÚMEROS
PRIMOS .................................................. 18 5.
CONCLUSIONES ...................................................................... ¡Error! Marcador no
definido. 6. ANEXO (Sentencias y funciones
habituales) ....................................................................... 23
6.1. Problemas con variables (¿por qué no se dejan definir las
variables?)...................... 24 6.1.1. Option
Explicit: .................................................................................................... 24 6.1.2.
Dim…. As [Integer, Double, String, Boolean…]:................................................... 24
6.2. Condición If…, etc. (diversas
posibilidades): ............................................................... 24 6.2.1. Select
Case........................................................................................................... 25 6.2.2.
Ejemplos de utilización........................................................................................ 25
6.3. Bucles: For... To ... Next/Do While... Loop/Do Loop… Until (Utilización y
posibles
problemas): ...................................................................................................................
.......... 25
6.3.1. Do... Loop
Until.................................................................................................... 25 6.3.2. Do
While... Loop.................................................................................................. 26
6.3.3. For... To...
Next.................................................................................................... 26 6.3.4.
With..................................................................................................................... 27
6.4. Coordenadas polares: ¿Cómo pasar de coordenadas cartesianas (x,y) a
polares (r,α)?: 28
6.4.1. Radio (calculado a partir de las coordenadas x e y de los puntos en
cuestión) r =
RaizCuadrada(x^2+y^2):............................................................................................
.......... 28
6.4.2. Ángulo (calculado a partir de las coordenadas x e y de los puntos en
cuestión) α=Arctan
(x/y): .................................................................................................................... 28
6.5. Cambiar criterios de
ordenación:................................................................................ 29 6.6.
Menús….......................................................................................................................
29 6.7. Para
Ordenar............................................................................................................... 30
6.8. Quitar el signo de los números convertidos en
string: ............................................... 30
1
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
2
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Este Editor, es una ventana independiente de Microsoft Excel, pero tiene el mismo
aspecto que cualquier otra ventana de una aplicación Microsoft Office, y funciona igual
para todas estas aplicaciones. Cuando se cierre la aplicación, consecuentemente
también se cerrará la ventana del Editor de Visual Basic asociada.
Este manual ha sido elaborado por José Pedro García Sabater con la colaboración de
Gonçal Bravo i Reig y Alberto López Gozalbes a lo largo de diversas versiones de la
hoja de cálculo Microsoft Excel. Es posible que a lo largo del mismo se hallen algunas
inexactitudes ligadas entre otras razones a la evolución de Excel. Si encuentran errores
sería estupendo que nos lo hicieran saber para así corregirlos.
2. OBJETIVOS
El documento está inicialmente dirigido a alumnos de ingeniería que con mínimos
conocimientos de programación pueden entender cómo funciona el VBA de Excel. No se
pretende enseñar a programar, sólo a utilizar el entorno y a sacar partido al mínimo
conocimiento en programación que tienen mis alumnos de ingeniería.
Lo que se pretende con este manual es presentar de una manera práctica, diferentes
utilidades, funciones, sentencias…, en el Editor de Visual Basic, y que con
posterioridad serán útiles para el desarrollo del ejercicio concreto de que consta la
práctica.
Los ejemplos son sencillos e incluso un poco tontos, y desde luego inútiles en sí
mismos. En cada ejemplo se presentan una o varias funcionalidades.
Tomando ejemplos sencillos, se irán mostrando sucesivamente las diferentes utilidades
a realizar o utilizar. Son utilidades básicas cómo definir un botón de ejecución de
programa, cómo dar valores a celdas de la página de Microsoft Excel (mediante un
programa definido en el Editor de Visual Basic), cómo definir e introducir bucles y
condiciones,…
4
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Una vez
hecho esto, aparecerá la pestaña Desarrollador desde la que se pueden añadir los
botones dentro de la pestaña.
En él se tomará el icono que representa a un botón, desplegándose en la Hoja1, por
ejemplo, del documento Excel. De los dos botones que hay (tanto en formularios como
en ActiveX), se seleccionará el de Controles de ActiveX, ya que de este modo se
podrá cambiar el color y otras opciones del propio botón.
5
20 de febrero de 2014 TRABAJAR CON MACROS DE VISUAL BASIC
[MANUAL BÁSICO PARA EMPEZAR A PARA EXCEL]
Una vez hecho esto, se pulsará dos veces sobre dicho botón para acceder así al Editor de Visual Basic,
con el que se realizará el pequeño programa requerido, tal y como sigue:
diagonales sucesivas.
Continuando el ejemplo anterior, vamos a definir una lista en varias diagonales, en las que se mostrará el
texto previamente definido (“BIENVENIDO”). En la nueva versión del programa anterior, se podrá observar
cómo utilizar la función “condición” (representada por la función if) y el bucle (mediante la aplicación de la
función for, entre otras opciones).
Así, para hacer que la palabra “BIENVENIDO” aparezca colocada siguiendo varias diagonales un número
determinado de veces. Se definen, inicialmente, dos variables contador como enteros (función Dim… As
Integer), y que representan además los índices de las celdas de la Hoja de Cálculo (filas y columnas). Se
define el texto en la primera celda. Seguidamente, se define la condición de que la suma de los índices de
celda (variables contadores) sean números pares, con la utilización de la función mod (función resto,
dividiendo el número requerido por dos, si el resto es 0, el número es par), así se tendrían definidas las
diferentes diagonales. Esta “condición” estaría colocada dentro de un doble bucle for (bucle anidado), en el
que el valor de cada nueva celda de la diagonal, tendrá el mismo valor que la anterior.
7
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Y en él, se utilizarán además las funciones y opciones del Editor de Visual Basic /
Microsoft Office siguientes:
- Cambio de nombre de un botón.
- Utilización y grabación de macros.
- Utilización de la función Call para llamar a una función definida en otro
lugar. - Cambio de color.
La serie de Fibonacci cumple que cada elemento de la serie es el resultado de la suma
de los dos precedentes, es decir: an+2 = an+1 + an
Así, se introducirá la fórmula anterior mediante la utilización de un bucle Do While…
Loop (una de las opciones posibles), previa definición de los dos valores iniciales. De
esta forma, se van a definir estos valores iniciales como aleatorios; para ello, se va a
utilizar la función de generación de números aleatorios rnd (tal y como se ve en el
programa). Se evitan números excesivamente grandes o en coma flotante, tomando la
variable como int, para evitar la aparición de decimales. Además, se ve cómo se utiliza
la función With, para definir la selección de color. Este código se ha tomado del de la
macro grabada a partir del cambio de color de una celda cualquiera (mediante la
utilización de la opción del menú Cambio de color).
8
20 de febrero de 2014 TRABAJAR CON MACROS DE VISUAL BASIC
[MANUAL BÁSICO PARA EMPEZAR A PARA EXCEL]
Pero, ¿qué es una macro?, y ¿cómo se graba una macro?
En primer lugar, se debería considerar que una macro es un pequeño programa
ejecutable desde la Hoja de Cálculo, y que realiza funciones repetitivas o comunes en la
normal ejecución de la actividad con la herramienta de cálculo. Así, y en el caso
particular de grabar una macro para poder cambiar de color una serie de celdas de la
Hoja de Cálculo, se procede de la siguiente forma. En el menú, se toma la opción
Desarrollador, y en ésta, Grabar macro. Acto seguido, se realiza la acción a grabar en
la macro, en este caso, cambiar de color el color de una columna de la hoja de cálculo.
9
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
En el paso anterior se ve, en el código definido por la macro, la opción Range; esto
define el rango de aplicabilidad de la opción escogida con el código, en ese caso el
cambio de color de las celdas A1 hasta la A10.
10
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Una vez mostradas las acciones anteriores, se va a pasar a definir el ejemplo concreto.
Así, y como ya habíamos dicho, vamos a definir el código de programa necesario para
por un lado generar la serie de Fibonacci de términos aleatorios, y por el otro, tomar de
los valores de la serie anterior exclusivamente las cifras correspondientes a las
unidades.
Aquí pueden observarse dos bloques diferenciados de programa, cada uno para un
botón diferente (que se pueden ver en la transparencia siguiente). En el primero se crea
una serie de
11
20 de febrero de 2014 TRABAJAR CON MACROS DE VISUAL BASIC
[MANUAL BÁSICO PARA EMPEZAR A PARA EXCEL]
Fibonacci, tal y como ya se ha explicado, y acto seguido, se reduce cada uno de los
números de dicha serie a su cifra de unidades. Esta sería el resto obtenido de dividir
dicho número de la serie original, por 10.
Esto se consigue con la utilización de la función mod. Todo ello dentro de su
correspondiente bucle para ir tomando todos los valores de la serie.
Ahora, se deberá definir una función que tome una serie de números y los ordene de
mayor a menor. Esto se haría mediante la grabación de una macro llamada ordenar, en
la que se graba la acción de Ordenar (función perteneciente al menú datos de la barra
de menú) de mayor a menor los valores de la primera columna, se obtiene el código de
programa necesario para implementar un tercer botón, por ejemplo (código que se ve
abajo).
12
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Clicando en el tercer botón se obtiene la serie numérica resultante de ordenar la serie de
cifras unidad de la serie de Fibonacci (de la transparencia anterior). Si la macro se
hubiera grabado en sentido descendente (del número 9 al 1), sólo habría que grabar la
macro cambiando el orden por descendente, o bien modificar el código de manera que
apareciera la palabra Descending en lugar de Ascending.
13
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
al número presente en cada celda, pero evitando el negro (correspondiente al 0), y el
blanco (correspondiente al 1).
14
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Una vez realizado lo anterior, vamos a mostrar como emplear la función de Visual Basic,
Call. Con esta función lo que pretendemos, es poder hacer llamadas desde dentro de
un programa a otro que puede ser utilizado varias veces, y de esta forma, evitaríamos
tener que definir el programa correspondiente cada vez.
En este caso, vemos como una vez definida la serie de Fibonacci (de la misma forma
que ya se ha visto previamente en varias ocasiones, siguiendo el mismo ejemplo), se
introducen tres
15
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Una vez visto todo lo realizado previamente, se va a pasar a describir estos nuevos
ejemplos. En ellos, vamos a mostrar cómo hacer dos programas, el primero para saber
si un número es primo, y el segundo, para obtener listas de números primos.
Para esto, en el primer programa, mostraremos qué funciones se deben utilizar para
declarar menús de trabajo, y cómo trabajar con ellas, además de cómo llamar a otras
funciones sin utilizar la función que se había visto previamente para este propósito
(función call). En el segundo programa, veremos de qué forma se podrán declarar listas
de números primos, en un número indicado previamente por nosotros mismos.
Vamos a ver ahora qué es lo que deberemos hacer para poder declarar y utilizar menús
de trabajo, aplicándolo de manera práctica para poder declarar si un número dado al
programa es primo o no.
18
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Como se puede ver en la pantalla anterior del Editor de Visual Basic, el programa
previamente descrito se ha dividido en dos partes. En la parte que vemos aquí
(declarada a partir del botón) mediante la función InputBox, se declarará un menú que
se verá en la página de la Hoja de Cálculo del Microsoft Excel, presentando el texto
“DIME UN NUMERO”, identificado con la variable numero definida como string. Esta
cadena (que recibe el número que se introduciría desde teclado) mediante la función
Val, registrará el valor numérico deseado que se pasaría a la otra función (la que
calcularía si dicho número es primo o no).
Esto también se podría haber conseguido de una manera un poco más simple,
declarando únicamente valor como entero y guardando el número introducido en la
InputBox directamente como entero como se puede ver en la siguiente captura:
Una vez hecho esto, dentro de una condición if, y utilizando la función MsgBox (esta
función, al igual que la previamente definida InputBox, tiene como misión el mostrar en
pantalla un mensaje en forma de menú de Windows, pero ahora presentando un
resultado determinado y definido desde programa) se mostraría un mensaje sobre la
Hoja de Cálculo, diciendo si el número previamente introducido es primo o no.
inicialmente primo, para entrar en el bucle, y que el último número por el que se dividirá el introducido, para
comprobar si es primo o no, deberá ser menor o igual a la raíz cuadrada del introducido). En este bucle,
dentro se pondría una condición if, en la que indica que para que un número no sea primo, el resto de
dividirlo por otro menor que él debe ser cero.
Como se puede comprobar, al trabajar con variables Booleanas, se devuelve o recibe un True o un False,
que en función de la definición de la condición if del siguiente programa (el definido por el botón), se dará
como resultado lo correspondiente al “si” (if) o al “sino” (else).
Ahora se ve cómo quedaría en la pantalla de la hoja de Excel lo expuesto previamente. Se ve, en la página
siguiente, como al hacer clic sobre el botón, aparecería el menú pidiendo un número, y acto seguido se
diría si éste es primo o no.
20
Esta llamada mediante la función Call, se hace a una macro grabada mientras se
seleccionaba toda la columna A y se borraba su contenido, como se puede ver.
21
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Aquí se ve como una vez se recibe la información de la otra función, se definen dos
contadores para controlar los dos bucles. El primero controlaría la acumulación de
números primos hasta la cantidad indicada (x), y a continuación, al igual que antes,
definiendo la variable primo como booleana, se entra al segundo bucle (encargado del
cálculo de los primos) suponiendo que la primera entrada es un número primo (2 es
primo) y que además el número por el que se divida cada número para comprobar que
sea primo, deberá ser inferior a la raíz cuadrada de dicho número.
Finalmente, con una condición, se irían acumulando en la columna los diferentes
números primos encontrados hasta llegar a la cantidad deseada.
Aquí se verá ahora el resultado deseado.
22
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
5.
FINAL
Una vez presentados y explicados los ejemplos anteriores, esperamos que sirvan de
ayuda real a la realización de los problemas concretos.
También, y porque no, esperamos que este pequeño manual pueda llegar a servir como
herramienta de inicio de otros posibles futuros trabajos encaminados en esta materia.
Application.screenupdating=False
Application.calculation=xlCalculationManual
Application.EnableEvents=False
23
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Application.screenupdating=True
Application.calculation=xlCalculationAutomatic
Application.EnableEvents=True
Application.CutCopyMode = False
En estos anexos se podrán encontrar instrucciones para Visual Basic y para las hojas de
cálculo de Excel. A éstas últimas se les puede reconocer fácilmente dentro de los
anexos porque no van introducidas dentro de ningún “Sub” y además las instrucciones
referidas a las hojas de cálculo Excel van escritas en mayúsculas. Un ejemplo de una
instrucción referida a las hojas de cálculo Excel puede ser:
DESREF (C11; 0; SI (C6>$C$3;-$C$3;-C6); 1; 1)
24
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
6.2.1. Select Case
En este caso, esta instrucción será más útil que la Condición If..., cuando se ejecute uno
de varios grupos de instrucciones, dependiendo del valor de una expresión condición a
cumplir.
Uno de los errores más comunes que se producen en la utilización de bucles de este
tipo, es la no inicialización de las variables utilizadas como contadores de iteraciones.
Así que habrá que prestar una atención especial en este punto. Una opción para evitar
este posible error, sería la definición al principio del programa, como primera línea de
código de éste, el ya comentado Option Explicit.
A continuación se presentan las diferentes opciones que permite el Visual Basic para
definir bucles, es decir, repetición y/o acumulación de acciones determinadas, entre
unos límites definidos. La no definición de estos límites concretos, sería otro error
común y más problemático, al producirse la entrada en bucles infinitos, que bloquean el
módulo de cálculo de nuestro ordenador.
25
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
26
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
...
Next j
Next i
Si se omite un contador en una instrucción Next, la ejecución continúa como si se
hubiera incluido. Se produce un error si se encuentra una instrucción Next antes de su
instrucción For correspondiente.
Al contrario de lo que se comentaba para los bucles Do… While, los bucles For…, se
ejecutarán hasta agotar el intervalo de acumulación del contador, es decir, siempre se
entraría en el bucle, y no se pararía de ejecutar hasta no terminar el contador.
6.3.4. With
Estructura de control, que permite ejecutar una serie de instrucciones sin necesidad de
recalificar un objeto, es decir, sobre el mismo objeto cada vez; entendiendo por objeto
toda combinación de código y datos que se pueden tratar como una unidad, por ejemplo,
un control, un formulario o un componente de una aplicación. Cada objeto se define por
una clase.
Así, un ejemplo de utilización de la función With, sería el siguiente, donde ha sido
anidada dentro de la estructura de un bucle For, y mediante la opción Select (utilizada
para trabajar en entornos gráficos), se adjudicaría a cada celda de la columna
identificada por el contador j, un color y un tipo de letra determinado.
For j = 2 To x + 1
Hoja1.Cells(i, j).Select
With Selection.Interior
.ColorIndex = x + 2
27
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
.Pattern = xlSolid
End With
Next j
i=5
Do While Hoja1.Cells(i, 2) <> ""
b = Hoja1.Cells(i, 5)
c = Hoja1.Cells(i, 6)
d = c/b
a = (180 / PI) * Atn(d)
If b > 0 And c > 0 Then
Hoja1.Cells(i, 8) = a
Else
28
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Hay que darse cuenta de que se utiliza la condición anidada If ... Then ... Else ... End If,
porque Excel, da valores de ángulo en el plano de las X positivas (1er y 4º cuadrantes),
por lo que para poder tener una visión clara de la posición de cada punto en función de
su ángulo (tenerlo marcado de 0oa 360o), se debería sumar 180 a los valores de ángulo
obtenidos de los puntos situados en el 2º y 3 er cuadrantes, y 360 a aquellos situados en
el 4º cuadrante.
6.6. Menús…
Se definen menús específicos tomándolos como variables definidas como barras de
comandos de control, o de otros tipos, y dándoles a su vez los nombres
correspondientes a estos menús de trabajo.
Dim MenuAyuda As CommandBarControl
Dim MenuNuevo As CommandBarPopup
Dim Plan As CommandBarControl
Call BorrarMenu
Set MenuAyuda = CommandBars(1).FindControl(ID:=30010)
If MenuAyuda Is Nothing Then
Set MenuNuevo =
CommandBars(1).Controls.Add(Type:=msoControlPopup,
Temporary:=True)
Else
Set MenuNuevo =
CommandBars(1).Controls.Add(Type:=msoControlPopup,
Before:=MenuAyuda.Index, Temporary:=True)
29
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
End If
MenuNuevo.Caption = "Plan de Recuento"
Set Plan = MenuNuevo.Controls.Add(Type:=msoControlButton)
Plan.Caption = "Plan de Recuento"
Plan.OnAction = "CalculaPlan"
nombre = Str(i)
nombre = Right(nombre, Len(nombre) - 1)
6.10. Temporizador:
Función encargada de dar un intervalo de tiempo, previamente a la obtención de un
resultado, o por otra razón necesitada por el programador.
Dim ppio As Single
ppio = Timer
Do While ppio + 10 > Timer
Loop
6.11. Funciones:
Definición de funciones (con la forma que se requiera, sea Integer para entero, o de
cualquier otro tipo), dentro del programa, en el Editor de Visual Basic, con la intención
de tenerlas
30
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
31
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Sub auto_open()
32
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
33
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Sub acode()
For i = 1 To 255
Range("a" & i) = Chr(i)
Next
End Sub
Para reemplazar estos caracteres por un espacio, se puede utilizar esta otra macro:
Sub Macro1Cuadrados()
Dim c
For Each c In Range("A1:" & _
Range("A1").SpecialCells(xlCellTypeLastCell).Address)
For i = 1 To 31
Application.StatusBar = c.Address & " " & i
On Error Resume Next
Range(c.Address) = Application.Substitute(c, Chr(i), " ")
'Err.Clear
34
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
'Resume
Next
Range(c.Address) = Application.Substitute(c, Chr(127), " ")
Range(c.Address) = Application.Substitute(c, Chr(129), " ")
Range(c.Address) = Application.Substitute(c, Chr(141), " ")
Range(c.Address) = Application.Substitute(c, Chr(143), " ")
Range(c.Address) = Application.Substitute(c, Chr(144), " ")
Range(c.Address) = Application.Substitute(c, Chr(157), " ")
Next
Application.StatusBar = False
End Sub
También se puede utilizar esta solución mediante fórmula MATRICIAL utilizando la XLL
(morefun.xll) que se puede cargar en:
http://www.freewarefiles.com/downloads_counter.php?
programid=14922
=MCONCAT(TRIV(STXT(A1;SIGUIENTE(NBCAR(A1);1);1);;1))
35
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
36
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Se debe señalar que la forma más rápida para vaciar una hoja es reemplazar “*” por ""
(se puede probar aunque sin grabarlo).
Por defecto... y cuando la búsqueda de "reemplazar” del Excel sea demasiado “inteligente”...
Sub remplt()
txtSup = InputBox("¿Qué cadena de caracteres" _ & "deseas suprimir?")
txtRemp = InputBox("¿Por cuál desea reemplazarla?")
Application.ScreenUpdating = False
For Each c In Selection
c.Value = Replace(c.Value, txtSup, txtRemp)
Next c
End Sub
37
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
Sub EliminarEspacios()
Dim celda As Range
For Each cellule In ActiveSheet.UsedRange
cell.Value = LTrim(cell.Value)
Next
End Sub
Sub AnadirListaPers()
Application.AddCustomList ListArray:=Array("A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X",
"Y", "Z") MsgBox "La nueva lista es la número: " &
Application.CustomListCount
End Sub
Así se podrá incrementar una serie manualmente en Excel, además de lo
=SUSTITUYE(EXTRAE(A1;ENCUENTRA(">";A1)+1;999);"<123";)
38
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
39
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
End If
Loop
Otra solución:
Sub test1()
Set Rng = Sheets(1).Range("A1")
iTotal = Mid(Rng, k + 1, 1000) & " "
For j = 2 To 100
For i = 21 To 1 Step -1
If Mid(iTotal, i, 1) = " " Then
40
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
k=i
Exit For
End If
Next
Rng(1, j).Value = Mid(iTotal, 1, k - 1)
iTotal = Mid(iTotal, k + 1, 1000)
Next
End Sub
=DERECHA(A1;ENCONTRAR(" ";COINCIDIR(A1;LARGO(A1)-
FILA(INDIRECTO(""&LARGO(A1)));1);0))
=IZQUIERDA(B10;LARGO(B10)-1)
7. Pequeños Ejercicios
1- Activar la pestaña Desarrollador/Programador que habilita el uso de
Macros/Visual Basic.
2- Añadir un botón permitiendo que se le cambie el texto, el tipo de letra y el
color del botón desde Propiedades.
3- Grabar un vídeo en el que se muestre cómo mostrar la palabra “HOLA” en la
celda A1 del Excel al pulsar sobre el botón.
4- Grabar un vídeo en el que se muestre cómo mostrar una acumulación de
“HOLA”s seguidos en la celda A1 del Excel al pulsar sobre el botón.
5- Grabar un vídeo en el que se muestre cómo mostrar una acumulación de
“HOLA”s en varias diagonales seguidas.
41
[MANUAL BÁSICO PARA EMPEZAR A TRABAJAR CON MACROS
20 de febrero de
DE VISUAL BASIC PARA EXCEL]
2014
42