Referencia a objetos de vba

18/11/2003 - 19:28 por Juan B. | Informe spam
Hola, tengo la siguente duda:

tengo los siguientes objetos en una hoja:
Optionbox1;Obtionbox2;Obtionbox3;Obtionbox4;Obtionbox5,
etc.

como hago para referirme a ellos en un do while?

pensaba algo como
dim i as integer
for i = 1 to 10
optionbox&i = true
next i

de manera que se vuelvan todos true. no es este
especificamente el codigo que quiero usar, sino la idea de
como referirme a los objetos.
MUCHAS GRACIAS (anticipadas)

Juan

Preguntas similare

Leer las respuestas

#1 Marco Escobar
19/11/2003 - 22:03 | Informe spam
Juan,

Puedes referenciar los controles de la siguiente forma:

Sheet1.Shapes(i)

Donde i es el indice del control dentro de la hoja "Sheet1"

Puedes referirte al nombre del control a través de Sheet1.Shapes(i).Name.
Existe una colección amplia de propiedades asociadas a Sheet1.Shapes(i)

Saludos,


Marco Escobar.


"Juan B." wrote in message
news:02a401c3ae01$bba41980$
Hola, tengo la siguente duda:

tengo los siguientes objetos en una hoja:
Optionbox1;Obtionbox2;Obtionbox3;Obtionbox4;Obtionbox5,
etc.

como hago para referirme a ellos en un do while?

pensaba algo como
dim i as integer
for i = 1 to 10
optionbox&i = true
next i

de manera que se vuelvan todos true. no es este
especificamente el codigo que quiero usar, sino la idea de
como referirme a los objetos.
MUCHAS GRACIAS (anticipadas)

Juan
Respuesta Responder a este mensaje
#2 Héctor Miguel
20/11/2003 - 11:03 | Informe spam
¿que tal, chicos?

Juan B. escribio en el mensaje ...
tengo los siguientes objetos en una hoja: Optionbox1;Obtionbox2;Obtionbox3;Obtionbox4;Obtionbox5, etc.
como ... referirme a ellos en un do while? ... pensaba algo como
dim i as integer
for i = 1 to 10
optionbox&i = true
next i
... que se vuelvan todos true. no es ... el codigo que quiero usar, sino la idea de como referirme a los objetos.

Marco Escobar escribio en el mensaje ...
Puedes referenciar los controles de la siguiente forma:
Sheet1.Shapes(i)
Donde i es el indice del control dentro de la hoja "Sheet1"
Puedes referirte al nombre del control a través de Sheet1.Shapes(i).Name.
Existe una coleccion amplia de propiedades asociadas a Sheet1.Shapes(i)





como menciona Marco, 'casi' todo objeto 'pasa' por la coleccion 'shapes' [sin embargo] ...
NO todos 'comparten' LAS MISMAS propiedades y metodos :(( [p.e.]
a) no se si por 'optionbox' te refieres a 'optionbuttons' o 'checkboxes'
b) son 'diferentes' las propiedades de 'esos' objetos [cualquiera] segun su 'tipo'
[si los creaste con la barra de herramientas 'formularios' o 'cuadro de controles']
c) los de formularios pasan por un 'shape.type' => msoFormControl < y su propiedad =>shape.ControlFormat[.value 'por omision']<= es 1 -si activado- o 0 ['cero' o -4146] si no
d) los de cuadro de controles pasan por un 'shape.type' => msoOLEControlObject <= [y -algunos- otros 'filtros']
y su propiedad =>Hoja.OLEObjects(shape).Object[.value 'por omision']<= es 'True' -si activado- o 'False' si no
e) [creo que] seria mejor 'descartar' los objetos de tipos 'diferentes' [al 'recorrer' la coleccion] para 'minimizar' errores :))

el siguiente ejemplo dejara 'activados' [todos] los objetos [de 'esos' tipos] en la hoja activa
[si alguno 'comparte' la 'celda vinculada' -o un 'grupo' si el caso-, el ultimo [en su serie] sera el 'agraciado'] :))
__________
Sub Marcar_Opciones()
Application.ScreenUpdating = False
Dim Fig As Shape
For Each Fig In ActiveSheet.Shapes
If Fig.Type = msoFormControl Then
Select Case Fig.FormControlType
Case xlCheckBox, xlOptionButton: Fig.ControlFormat = 1
End Select
ElseIf Fig.Type = msoOLEControlObject Then
Select Case Fig.OLEFormat.ProgId
Case "Forms.CheckBox.1", "Forms.OptionButton.1": Fig.Parent.OLEObjects(Fig.Name).Object = True
End Select
End If
Next
End Sub
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
saludos,
Héctor.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida