Class 01 TEORIA Variable :posicion o espacio reservado en memoria para almacenar un dato de forma temporal atributos: Atributos de una Variable: -Nombre de las variables : es el identificador de una variable, que permite el acceso a ella para almacenar y recuperar los datos. -tipo de variables: define la clase de dato que se puede almacenar. -Ambito o alcance de una Variable: Define el espacio o lugar , donde la variable será reconocida y por lo tanto empleada e.g : ambito global , publico , local, private Tipos: Ambito Local : Dentro de un Pocedimiento Ambito a Nivel de Hoja oFormulario : dentro de la seccion de declaraciones de la hoja o del formula Ambito Publico o Global : DEntro dela seccion de declaraciones de un modulo (Usar la sentencia Public) ********************************AMBITO O ALCANCE:***************************** define el espacio o lugar , donde una variable sera reconocida y por lo tanto emplearse tipo: A NIVEL LOCAL: declaracion en dentro de un procedimientto A NIVEL DE HOJA O FORMULACRIO: declaracion dentro de la Hoja o dentro del formulio , en la seccion de declaraciones A NIVEL PUBLICO : Declaracin dentroo de un Modulo , usando la sentencia PUBLIC La variable es Global sera ,reconocida en todo el proyecto ****************************************************************************** SENTENCIA DE DECLARACIONES: DIM (NIVEL DE HOJA , formulario y hoja) ,PRIVATE , pUBLIC Dentro de un procedimiento : DIM x as integer ( entero) DIM costo As SINGLE (reales ) DIM ok AS Boolean Nombre de Variable: Comeinza por un caracter alfabetico las restantes caracteres puede ser alfabeticos , numericos or the underline symbol VALID NAME: -p_UNIT -c2 -pRECIE INVALID NAME: if, DIr,LEN , MID ---------------------------------ALSO : COST UNIT ( no space) ------------------------------------------------------------------------type of variable: FOR NUMBER: -byte : for whole numbers between [0-255] Integer for whole numbers between [-32767 to 32768] -Single :for reals of simple precision (8 decimal digits) -double: for reals of double precision (16 decimal digits) -Decimal: for reals of alta precision (16 decimal digits) ----------------------------------------------------------------------string acepta cadenas de carateres --------------Boolen Acepta los valortes de tru and false ----------------------------------------------------------------------Date acepta fechas -------------------------------------object establece referencia a objetos -----------------------------------------------------------------------------Variant Acepta diferentes tipos de datos ala vez DIM X, Z AS SINGLE (ojo solo considera ala z tipo single el otro es ------------------------------------------------------------------------------FORMAS DE DECLARACION _ -explicit declaration DIM OK AS BOOLEAN DIM importe As Double -implied declaration X=20 SE INFIERE entire price=24.5 Real Msg="bienvenido" -string SW= true Para diseñar un formulario Una vez creado el formulario lo siguiente es diseñar los elementos dentro del formulario. Para ello es necesario habilitar el cuadro de herramientas, para lo cual deberá hacer clic en el boton Etiqueta : Label1 Cuadro de texto : textbox1 Cuadro Combinado : ComboBox1 Cuadro de lista : ListBox1 Casilla: CheckBox1 B.opcion : OptionButton1 B.comando : CommandButton1 Barra de desplazamiento: ScrollBar1 Boton de numero : SpinButton1 Imagen : Image1 Class 01 Declaración tipo modulo Declaración tipo global Respuesta de msgbox Private Sub cndcerrar_Click() Dim rpt As Integer rpt = MsgBox("esta seguro", vbYesNo + vbQuestion, " CONFIRMAR") If rpt = vbYes Then Unload Me ' quitar el formulario , me abrevia userform1 Else MsgBox "operacion cancelar", vbOKOnly + vbCritical, "AVISO" End If End Sub FILTRAR Sub extraer() Dim rpt As Integer rpt = MsgBox("esta seguro de extraer", vbOKCancel + vbExclamation, "informacion") If rpt = vbCancel Then MsgBox "operacion cancelar", vbOKOnly + vbCritical, "AVISO" ElseIf rpt = vbOK Then ‘ hasta solo else no poner nada de vbok then Range("A8:H108").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "O4:O5"), CopyToRange:=Range("K8:R8"), Unique:=False End If End Sub Código para cerrar y/o guardar con un click Private Sub CommandButton1_Click() Dim rpt As Integer rpt = MsgBox("desea guardar los cambios ", vbYesNoCancel + vbQuestion, "confirmar") Select Case rpt Case Is = vbNo ActiveWorkbook.Close SAVECHANGES:=False Case Is = vbYes ActiveWorkbook.Close SAVECHANGES:=True Case Is = vbCancel Exit Sub End Select End Sub Class02 Buscar datos función FIND En ves de código puede ir una celda , en especifico Private Sub CMDACEPTAR_Click() Range("C3").Value = TextBox1.Text codigo = Range("CODIGO") 'CODIGO ES NOMBRE DELA CELDA Y codigo es variable tipo variant Set c = Worksheets("BUSQUEDA").Range("CODIGOS").Find(codigo, LookIn:=xlValues) 'CODIGOS LISTA DE TODOS LOS codigos If c Is Nothing Then MsgBox "ingrese codigo" Else celd = c.Address For a = 1 To 6 Range("b6").Offset(0, a - 1) = Range(celd).Offset(0, a) Next a ' Range("COMPAÑIA") = Range(celd).Offset(0, 1) ' Range("DIRECCION") = Range(celd).Offset(0, 2) ' Range("CIUDAD") = Range(celd).Offset(0, 3) ' Range("PAIS") = Range(celd).Offset(0, 4) ' Range("TELEFONO") = Range(celd).Offset(0, 5) ' Range("FAX") = Range(celd).Offset(0, 6) End If Range("CODIGO").Select Unload Me End Sub Código para llamar calculadora Private Sub CMDCALCULADORA_Click() ' llamada a un calculadora ID = Shell("calc.exe", vbNormalFocus) End Sub Código para borrar datos de una tabla Método 1 Range(Cells(10, 2), Cells(10, 6).End(xlDown)).Clear Método 2 Range("B10").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Clear Método 3 Dim f As Integer f = 10 ' para iniciar el for Range("b10").Select Do Until IsEmpty(ActiveCell.Value) ' isempty Range(Cells(f, 2), Cells(f, 6)).Clear ActiveCell.Offset(1, 0).Select f=f+1 Loo CODIGO PARA HACER LIMPIAR HOJA Y FORMULARIO Private Sub CommandButton1_Click() Range(Cells(10, 2), Cells(10, 6).End(xlDown)).Clear TextBox1 = Empty ‘ SON VARIOS TEXTBOX SE PUEDE HACER UN BUCLE TextBox2 = Empty TextBox3 = Empty Range("D3:D5") = ClearContents TextBox1.SetFocus ' enfoca ala primer caja de texto para ingreso de datos PONER HORA Y FECHA EN FORMULARIO CUANDO ESTE ACTIVA ESTA Private Sub UserForm_Activate() LBLHORA.Caption = "Fecha: " & Date 'fecha actual LBLFECHA.Caption = "HORA: " & Time 'hora actual End Sub CLASS03 CODIGO PARA BUSCAR CON FIND EN IMÁGENES Private Sub CommandButton1_Click() Dim C As Range 'ORD = Range("f5") Set C = Worksheets("CLIENTES").Range("ORDEN").Find(Range("f5"), LookIn:=xlValues) 'Set c = Worksheets("CLIENTES").Range("ORDEN").Find(ORD, LookIn:=xlValues) If Not C Is Nothing Then Celda = C.Address Range("c9") = Worksheets("CLIENTES").Range(Celda).Offset(0, 1) Range("c11") = Worksheets("CLIENTES").Range(Celda).Offset(0, 2) Range("c13") = Worksheets("CLIENTES").Range(Celda).Offset(0, 3) Range("c15") = Worksheets("CLIENTES").Range(Celda).Offset(0, 4) Range("c17") = Worksheets("CLIENTES").Range(Celda).Offset(0, 5) Range("c19") = Worksheets("CLIENTES").Range(Celda).Offset(0, 6) End If Range("f17") = Range("c13") Range("c9").Select '+++++++++++++++++++otra manera 'Dim C As Range 'Set C = Worksheets("CLIENTES").Range("ORDEN").Find(Range("f5"), LookIn:=xlValues) 'If Not C Is Nothing Then 'pos = C.Address 'For x = 0 To 5 'Cells(2 * x + 9, 3) = Worksheets("CLIENTES").Range(pos).Offset(0, x + 1) 'Next x 'End If 'Range("f17") = Range("c13") 'Range("c9").Select End Sub CODIGO PARA INSERTAR DATO CON BUSCAR V Private Sub CommandButton1_Click() Dim codigo As String * 7 Dim alumno As String Dim FechaNac As Date Dim Edad As Byte Dim Pago As Currency ' variable tipo moneda Dim nota(3) As Integer Dim Promedio As Single Dim Datos As Range 'toma de datos codigo = Range("b3") alumno = Range("b4") FechaNac = Range("b5") Edad = Int((Date - FechaNac) / 365) 'obtencion del costo del curso COSTO = Application.WorksheetFunction.VLookup(codigo, Sheets("Hoja2").Range("Cursos"), 3) Pago = COSTO Range("B7") = Pago 'toma de notas nota(1) = Range("b8") nota(2) = Range("b9") nota(3) = Range("b10") 'calculo del promedio de notas Promedio = (nota(1) + nota(2) + nota(3)) / 3 'copia de datos del alumno en el registroo de inscripccion Range("a14").Select N = ActiveCell.CurrentRegion.Rows.Count ActiveCell.Offset(N, 0).Select ActiveCell = codigo ActiveCell.Offset(0, 1) = alumno ActiveCell.Offset(0, 2) = FechaNac ActiveCell.Offset(0, 3) = Edad ActiveCell.Offset(0, 4) = Pago ActiveCell.Offset(0, 5) = nota(1) ActiveCell.Offset(0, 6) = nota(2) ActiveCell.Offset(0, 7) = nota(3) ActiveCell.Offset(0, 8) = Application.WorksheetFunction.Round(Promedio, 1) ActiveCell.Range("c1:D1,G1:I1").HorizontalAlignment = xlCenter ' centrea pero aparit de nueva celda ref ActiveCell.Range("g1:i1").NumberFormat = "00" 'borrar los datos de la ficha de inscripcion MsgBox "registro Realizado con esxito", , "aviso" Range("B3:B10").ClearContents Range("b3").Select End Sub CODIGO PARA MOSTAR Y OCULTAR CUANDO ESTAMOS SOBRE UNA HOJA CELDA ACTIVA CON COLOR DE LETRAS DEBERA DE ESTAR ACTIVADO EN LA HOJA QUE ESTAMOS TRABAJANADO Private Sub Worksheet_SelectionChange(ByVal Target As Range) If ActiveCell.Address = "$B$3" Then Range("lista").Font.ColorIndex = 1 ' color de fuente negro Else Range("lista").Font.ColorIndex = 2 'color BLANCO , decir transparente End If End Sub Class 06 Limpiar los valores dentro del cuadro de texto Private Sub CommandButton1_Click() For a = 1 To 6 Me("TextBox" & a).Value = Empty ‘en vez de Empty puede ser “ “ Next TextBox1.SetFocus End Sub MANERA MAS LARGA E INCORRECTA Private Sub CommandButton1_Click() TextBox1.Text = Empty TextBox2.Text = Empty TextBox3.Text = Empty TextBox4.Text = Empty TextBox5.Text = Empty TextBox6.Text = Empty TextBox1.SetFocus End Sub Calculo ylo muestra dentro de un formulario con formato Private Sub CommandButton3_Click() MsgBox "el calculo se realizara", vbOKOnly + vbExclamation, "aviso" TextBox5.Text = Format(0.1 * Val(TextBox4.Text), "0.00") TextBox6.Text = Format(Val(TextBox4.Text) - Val(TextBox5.Text), "0.00") End Sub Suma de valores CON FOR de textbox Private Sub CommandButton1_Click() For a=1 to 4 Sum=sum+val(me(“textbox” & a)) Next a Me.textbox5.value=sum & “.00” End Sub Código para ir ala ultima fila e insertar datos de un formularios Sub pece() Range("h6").Offset(Range("h6").CurrentRegion.Rows.Count, 0).Select For x =0 to 1 ActiveCell.Offset(0, x + 1) = Range("B" & (x + 3)) Next x End sub Private Sub CommandButton1_Click() For i = 1 To 4 Cells(4 + i, 9).Value = Me("textbox" & i).Text 'Cells(5, 9).Value = TextBox1.Text 'Cells(6, 9).Value = TextBox2.Text 'Cells(7, 9).Value = TextBox3.Text 'Cells(8, 9).Value = TextBox4.Text Next i MsgBox "DATOS ACTUALIZADOS" End Sub CODIGO PARA IMPRIMIR EN WORD Private Sub CommandButton1_Click() 'crear nuevo obajeto de aplicacion word Dim appWord As Word.Application Set appWord = New Word.Application ' construcctor de la instancia ' en do donde nosotros ingresamos el rango a copiar Txtrango = "B" & TextBox1 + 2 & ":" & "F" & TextBox2 + 2 MsgBox "rango establecido exitosamente..", , "aviso" Range(Txtrango).Copy With appWord 'co estec odigo se abrira word y se creara un documento nuevo .Visible = True .Activate .Documents.Add End With appWord.Selection.PasteSpecial link:=True 'se pegara en el documento lo seleccioonado en la hja de calculo 'liberar objeto word Set appWord = Nothing End Sub ASIGNAR VALOR A UN CUADRO DE TEXTO APARTIR DE UN BOTON NUMERICO Private Sub SpinButton2_Change() TextBox2.Text = SpinButton2.Value End Sub GENERA ALEATORIO Private Sub CommandButton1_Click() Dim MIRANGO As Range Set MIRANGO = Range("g5:g18") MIRANGO.Formula = "=INT(16*RAND())" 'INT :TOMAR LA PARTE ENTERA MIRANGO.Font.Bold = True Range("G19").Formula = "=SUM(G5:G18)" End Sub USO DE CHECK BOX PARA IMPEDIR MOVERSE POR OTRO CELDAS Private Sub CheckBox1_Click() If CheckBox1 Then Worksheets("Hoja5").ScrollArea = "a3:A14" ' scrollarea :area de desplazamiento Else Worksheets("Hoja5").ScrollArea = "" End If End Sub ANEXO