Familia de formas:
En primer lugar, en VBA se llaman formas
Ejemplo: calcular cuántas formas
Sub prueba ()
MsgBox Sheet1.Shapes.Count
End Sub
atributo de forma
Sub prueba () Dim shp As Shape Para cada shp en Sheet1.Shapes i = i + 1 Rango ( " a " e i) = shp.Name Range ( " b " & i) = shp.TopLeftCell.Address Range ( " c " & i) = shp.Type próximo End Sub
Hay fotos en excel arriba
La tabla de hojas también tiene su propio tipo
Bajo prueba1 () MsgBox Sheets ( 2 ) .Type ' Worksheet también tiene su propio tipo End Sub
Eliminar imágenes, eliminar de acuerdo a diferentes tipos
Sub prueba () Dim shp As Shape Para cada shp en Sheet1.Shapes Si shp.Type = msoPicture Then ' shp.type = 13 也 行 shp.Delete Terminara si próximo End Sub
Nota adicional: los parámetros con "[]" en los parámetros pueden omitirse, el resto son los parámetros que deben escribirse
Inserte y ajuste las imágenes según su posición (puede ayudar, grabar macro para lograr, aprender a aprender por sí mismo)
Como se muestra a continuación, debe importar imágenes
El código de implementación es el siguiente:
Sub prueba () Dim i As Integer Dim shp As Shape En Error Reanudar Siguiente Para cada shp en Sheet1.Shapes ' Elimine todas las imágenes para evitar shp.Delete próximo Para i = 2 a 12 Sheet1.Shapes.AddPicture " d: \ data \" & Range ( " a " & i) & " .jpg " , msoFalse, msoTrue, Range ( " d " & i) .Left, Range ( " d " e i). Arriba, Rango ( " d " e i). Ancho, Rango ( " d " e i). Altura Siguiente End Sub
Mayor automatización: haga que el tamaño de la imagen cambie con el tamaño de la celda, realícelo grabando una macro, aprenda
Sub prueba () Dim i As Integer Dim shp As Shape Dim shp1 como forma En Error Reanudar Siguiente Para cada shp en Sheet1.Shapes ' Elimine todas las imágenes para evitar shp.Delete próximo Para i = 2 a 12 Configure shp1 = Sheet1.Shapes.AddPicture ( " d: \ data \" & Range ( " a " & i) & " .jpg " , msoFalse, msoTrue, Range ( " d " & i). Izquierda, Rango ( " d " e i). Arriba, Rango ( " d " e i). Ancho, Rango ( " d " e i). Altura) shp1.Placement = xlMoveAndSize próximo End Sub
Cambiar el nombre del archivo
El método para renombrar archivos en VBA es el siguiente: nombre ..... como ......
Bajo prueba1 () Nombre " d: \ data \ 汪 梅 .jpg " Como " d: \ data \ 汪 梅 123.jpg " End Sub
Cambie el nombre de la imagen de acuerdo con los datos en la hoja de Excel de la siguiente manera
El código es el siguiente:
Sub prueba () Dim i As Integer En Error Reanudar Siguiente Para i = 2 a 12 Nombre " d: \ data \" & Range ( " a " & i) & " .jpg " Como " d: \ data \ " & Range ( " a " & i) & Range ( " d " & i) & " .jpg " Siguiente End Sub
Objeto de gráfico: logrado al grabar una macro
Lograr
El código es el siguiente:
Sub prueba () Dim shp As Shape Establecer shp = Sheet1.Shapes.AddChart2 shp.Chart.SetSourceData Range ( " b2: c14 " ) ' Fuente de datos shp.Chart.ChartType = xlLine ' Establezca un gráfico de columnas o una línea y otros gráficos shp.Chart.Axes (xlValue) .MinimumScale = 1000000 ' Establezca el intervalo de ordenación Fin Sub
Usar controles de formulario
El control de formularios ahorra memoria que el control ActiveX, simple y flexible
Use cuadros de agrupación para hacer que las opciones múltiples se excluyan mutuamente
Hay un cuadro de grupo que afecta la apariencia, entonces, ¿cómo ocultarlo? En el atributo de cuadro de grupo, él no tiene esta función de ocultación, por lo que no se puede grabar para lograr, confiar en adivinar y omitir la categoría
Sub prueba () Dim shp As Shape ' Encuentra la diferencia entre los controles de formulario para cada shp en Sheet1.Shapes i = i + 1 Range ( " g " & i) = shp.Name ' range ("g" & i) = shp.type Next End Sub
----------------------------- Bajo prueba1 () Dim shp As Shape Para cada shp en Sheet1.Shapes ' If shp.Name = "Group Box *" Entonces esto no tiene efecto, = debe ser un nombre preciso Si shp.Name Like " Group Box * " Entonces shp.Visible = msoFalse Terminara si próximo End Sub
También puede ser así
Bajo prueba1 () Dim shp As Shape Para cada shp en Sheet1.Shapes Si shp.FormControlType = xlGroupBox Entonces shp.Visible = msoFalse Terminara si próximo End Sub
como operador
Los personajes dentro necesitan recordar
Sub prueba () Dim i As Integer Rango ( " a2: a15 " ) .Interior.Pattern = xlNone Para i = 2 a 15 ' If Range ("a" & i) Like "J *" Then ' " J ?????? " " J ??? w ??? " ' If Range ("a" & i) Me gusta "[AM am] *" Entonces significa ' If Range ("a" & i) Like "[0-9] *" Then ' o " # * " ; " ## * " # Representa un número ' If Range ("a" & i) Like "[0-9] [! 0-9] *" Then ' ! El signo de exclamación representa el significado de "not" ' If Range ("a" & i) Like "J ??? [AZ az] ?? "Entonces Rango ( " a " e i). Interior.Color = 65535 ' Rango ("a" e i). Color de fuente = 65535 k = k + 1 Terminara si próximo Rango ( " e1 " ) = k End Sub