"Arreglito" de macro

07/11/2007 - 18:06 por Miguel | Informe spam
Tengo un formulario con varios ComboBox y TextBox que me copian los
datos en una hoja concreta "Estadisticas". El problema es que cuando
estoy en la hoja "Formulario" tengo incrustrado un control "Ir a
formulario" que, al activarlo, me abre el formulario en esta hoja.
Todo perfecto y según lo que quiero que haga. El problema es que hasta
que lo abre, durante unos segundos, se queda en pantalla la hoja
"Listas" que es de donde toman los datos los diferentes ComboBox de
los que consta el formulario. Os envío los códigos por si es posible
"pulirlos" un poco para ajustar este problemilla, que no queda muy
bien que digamos, por si podemos evitar que se mantenga en pantalla
hasta que se abre el formulario. O cuaquier otra mejora o modificación
que estimés necesaria.

Muchas gracias,

Un saludo,

M. Ángel

CÓDIGO:

Private Sub CommandButton1_Click()
If TextBox1.Value = "" Or TextBox1.Value = "" Or DTPicker1.Value = ""
Or ComboBox1.Value = "" _
Or TextBox2.Value = "" Or ComboBox3.Value = "" Or ComboBox2.Value = ""
Or ComboBox4.Value = "" Or ComboBox5.Value = "" Or ComboBox6.Value "" Or ComboBox7.Value = "" Or ComboBox8.Value = "" Or ComboBox9.Value
= "" Then
MsgBox ("FALTAN CASILLAS POR LLENAR")
Exit Sub
End If
Sheets("ESTADISTICA").Visible = True
Sheets("estadistica").Select

contar = Application.WorksheetFunction.CountA(Range("a2:a50000"))
Cells(contar + 6, 1) = contar + 0
Range("registro") = contar + 1

Cells(contar + 6, 2) = ComboBox1.Value
Cells(contar + 6, 3) = TextBox1.Value
Cells(contar + 6, 4) = DTPicker1.Value
Cells(contar + 6, 5) = TextBox2.Value
Cells(contar + 6, 6) = ComboBox2.Value
Cells(contar + 6, 7) = ComboBox3.Value
Cells(contar + 6, 8) = ComboBox4.Value
Cells(contar + 6, 9) = ComboBox5.Value
Cells(contar + 6, 10) = ComboBox6.Value
Cells(contar + 6, 11) = ComboBox7.Value
Cells(contar + 6, 12) = ComboBox8.Value
Cells(contar + 6, 13) = ComboBox9.Value
Cells(contar + 6, 14) = ComboBox10.Value
Cells(contar + 6, 15) = ComboBox11.Value
Cells(contar + 6, 16) = ComboBox12.Value
Cells(contar + 6, 17) = ComboBox13.Value
Cells(contar + 6, 18) = ComboBox14.Value
Cells(contar + 6, 19) = TextBox3.Value
Cells(contar + 6, 20) = TextBox4.Value
Cells(contar + 6, 21) = ComboBox15.Value
Cells(contar + 6, 22) = TextBox5.Value

Sheets("ESTADISTICA").Visible = False
Sheets("Formulario").Select
End Sub

Private Sub CommandButton2_Click()
Dim nal As Single
Dim und As Single
Dim doc As Single
Dim mot As Single
Dim efe As Single
Dim jui As Single
Sheets("LISTAS").Visible = True
Sheets("listas").Select

ComboBox1.Clear
TextBox1 = ""
DTPicker1 = Clear
TextBox2 = ""
ComboBox2.Clear
ComboBox3.Clear
ComboBox4.Clear
ComboBox5.Clear
ComboBox6.Clear
ComboBox7.Clear
ComboBox8.Clear
ComboBox9.Clear
ComboBox10.Clear
ComboBox11.Clear
ComboBox12.Clear
ComboBox13.Clear
ComboBox14.Clear
TextBox3 = ""
TextBox4 = ""
ComboBox15.Clear
TextBox5 = ""
Sheets("LISTAS").Visible = True
Sheets("listas").Select

und = Application.WorksheetFunction.CountA(Range("a2:a50000"))
doc = Application.WorksheetFunction.CountA(Range("b2:b50000"))
nal = Application.WorksheetFunction.CountA(Range("c2:c50000"))
mot = Application.WorksheetFunction.CountA(Range("d2:d50000"))
efe = Application.WorksheetFunction.CountA(Range("e2:e50000"))
jui = Application.WorksheetFunction.CountA(Range("f2:f50000"))

For und1 = 2 To und + 1
ComboBox1.AddItem Cells(und1, 1).Value
Next

For doc1 = 2 To doc + 1
ComboBox4.AddItem Cells(doc1, 2).Value
ComboBox6.AddItem Cells(doc1, 2).Value
ComboBox8.AddItem Cells(doc1, 2).Value
Next

For nal1 = 2 To nal + 1
ComboBox3.AddItem Cells(nal1, 3).Value
ComboBox5.AddItem Cells(nal1, 3).Value
ComboBox7.AddItem Cells(nal1, 3).Value
ComboBox9.AddItem Cells(nal1, 3).Value
Next

For mot1 = 2 To mot + 1
ComboBox2.AddItem Cells(mot1, 4).Value
Next

For efe1 = 2 To und + 1
ComboBox10.AddItem Cells(efe1, 5).Value
ComboBox11.AddItem Cells(efe1, 5).Value
ComboBox12.AddItem Cells(efe1, 5).Value
ComboBox13.AddItem Cells(efe1, 5).Value
ComboBox14.AddItem Cells(efe1, 5).Value
Next

For jui1 = 2 To und + 1
ComboBox15.AddItem Cells(jui1, 6).Value
Next
Sheets("LISTAS").Visible = False
Sheets("Formulario").Select
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub

Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal
Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
Calendar1.Today "actualiza o muestra la fecha actual
End Sub

Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then
Sheets("listas").Visible = True
Sheets("ESTADISTICA").Visible = False
Sheets("TABLA").Visible = False
Sheets("listas").Select
End If
Unload Me
End Sub

Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
Sheets("ESTADISTICA").Visible = True
Sheets("LISTAS").Visible = False
Sheets("TABLA").Visible = False
Sheets("ESTADISTICA").Select
End If
Unload Me
End Sub

Private Sub OptionButton3_Click()
If OptionButton3.Value = True Then
Sheets("TABLA").Visible = True
Sheets("LISTAS").Visible = False
Sheets("ESTADISTICA").Visible = False
Sheets("TABLA").Select
End If
Unload Me
End Sub

Private Sub UserForm_Initialize()
Dim nal As Single
Dim und As Single
Dim doc As Single
Dim mot As Single
Dim efe As Single
Dim jui As Single
Sheets("listas").Visible = True
Sheets("listas").Select

und = Application.WorksheetFunction.CountA(Range("a2:a50000"))
doc = Application.WorksheetFunction.CountA(Range("b2:b50000"))
nal = Application.WorksheetFunction.CountA(Range("c2:c50000"))
mot = Application.WorksheetFunction.CountA(Range("d2:d50000"))
efe = Application.WorksheetFunction.CountA(Range("e2:e50000"))
jui = Application.WorksheetFunction.CountA(Range("f2:f50000"))

For und1 = 2 To und + 1
Celda = Cells(und1, 1).Value
ComboBox1.RowSource = "A2:" & [A2].End(xlDown).Address
Next

For doc1 = 2 To doc + 1
Celda = Cells(doc1, 2).Value
ComboBox4.RowSource = "B2:" & [B2].End(xlDown).Address
ComboBox6.RowSource = "B2:" & [B2].End(xlDown).Address
ComboBox8.RowSource = "B2:" & [B2].End(xlDown).Address
Next

For nal1 = 2 To nal + 1
Celda = Cells(nal1, 3).Value
ComboBox3.RowSource = "C2:" & [C2].End(xlDown).Address
ComboBox5.RowSource = "C2:" & [C2].End(xlDown).Address
ComboBox7.RowSource = "C2:" & [C2].End(xlDown).Address
ComboBox9.RowSource = "C2:" & [C2].End(xlDown).Address
Next

For mot1 = 2 To mot + 1
Celda = Cells(mot1, 4).Value
ComboBox2.RowSource = "D2:" & [D2].End(xlDown).Address
Next

For efe1 = 2 To nal + 1
Celda = Cells(efe1, 5).Value
ComboBox10.RowSource = "E2:" & [E2].End(xlDown).Address
ComboBox11.RowSource = "E2:" & [E2].End(xlDown).Address
ComboBox12.RowSource = "E2:" & [E2].End(xlDown).Address
ComboBox13.RowSource = "E2:" & [E2].End(xlDown).Address
ComboBox14.RowSource = "E2:" & [E2].End(xlDown).Address
Next

For jui1 = 2 To und + 1
Celda = Cells(jui1, 6).Value
ComboBox15.RowSource = "F2:" & [F2].End(xlDown).Address
Next
Sheets("inicio").Visible = True
Sheets("listas").Visible = False
Sheets("Tabla").Visible = False
Sheets("Estadistica").Visible = False
Sheets("Gráfico1").Visible = False
Sheets("Formulario").Select
End Sub


MÓDULO 1:

Sub auto_open()
Sheets("Inicio").Activate
Sheets("listas").Visible = True
Sheets("Gráfico1").Visible = True
Sheets("Tabla").Visible = True
Sheets("Estadistica").Visible = True
End Sub

Sub abrir()
Sheets("Formulario").Select
principal.Show
End Sub

Sub actualiza()

"Range("a10").Select
ActiveSheet.PivotTables("Tabla dinámica1").PivotCache.Refresh
End Sub

Preguntas similare

Leer las respuestas

#6 Miguel
08/11/2007 - 20:52 | Informe spam
On 8 nov, 18:19, Miguel wrote:
On 8 nov, 17:46, "Héctor Miguel"
wrote:





> hola, Miguel !

> > ... realizando pruebas... al iniciar el control "Ir a formulario", desde la hoja "Formulario"
> > siempre me da error de compilacion, referencia no valida o sin calificar
> > marcando l código que me has facilitado para rellenar_combos.
> > Quizas el problema este aqui: With Worksheets("listas").Range(.[a2], .[a2].End(xlDown))
> > puede ser por el rango a2?
> > Donde colocas los rangos de las listas, donde se encuentran und, doc, nal, mot, efe y jui
> > de donde toman los datos los Combox?...

> mas bien, por no haber corrido pruebas sobre un lstado con datos como los reales...
> lo que le "sobra" a esa linea es el punto antes del corchete -> .[
> prueba cambiando a: -> With Worksheets("listas").Range([a2], [a2].End(xlDown))

> (en principio) ya no seria necesario des/re/ocultar ni mostrar las hojas que necesites mantener ocultas
> ni las variables que tenias definidas, ya que las listas se toman con Offsets y los combos estan por ciclos/bucles
> (revisa el codigo, y ya que lo pongamos a funcionar)...

> si cualquier duda (o informacion adicional)... comentas ?
> saludos,
> hector

De nuevo, muchas gracias. Parece haberse solucionado ese problema.
Ahora, lo que sucede es que al introducir estos nuevos códigos, nos
causa incompatibilidad con el código del módulo 1 que abre el
Formulario, concretamente con "principal.Show". La cuestión es que si
lo elimino, no se abre el formulario. ¿Qué se te ocurre?
Un saludo,
M. Ángel
MÓDULO 1:

Sub abrir()
Sheets("Formulario").Select
principal.Show
End Sub- Ocultar texto de la cita -

- Mostrar texto de la cita -



Hola Hector:
Ya he solucionado este problema, el de abrir el formulario, era un
problema de nombre (estábamos usando Userform en los procedimientos
"Initialize" y y para abrir el formulario "principal"); pero con su
solución ha quedado al descubierto otro mucho mayor, te cuento:
Con el formulario abierto, al desplegar los distintos ComboBox, han
desaparecido los lelementos de las listas despleglables; por eso te
comenté que dónde colocabas los rangos de las listas, donde se
encuentran und, doc, nal, mot, efe y jui de donde toman los datos los
Combox...
El código que me facilitaste, ya modificado con el nombre del
formulario, ha quedado de la siguiente manera; pero no funciona:
Dim n As Byte

Private Sub principal_Initialize()
Rellena_Combos
End Sub

Private Sub CommandButton1_Click()
Dim Salir As Boolean
For n = 1 To 2: If Controls("textbox" & n) = "" Then Salir = True:
GoTo Verifica
Next
For n = 1 To 9: If Controls("combobox" & n) = "" Then Salir = True:
GoTo Verifica
Next
If DTPicker1 = "" Then Salir = True
Verifica:
If Salir Then MsgBox "Faltan cosillas por llenar !!!": Exit Sub
With Worksheets("estadistica").Range("a2").End(xlDown).Offset(6)
.Value = .Row - 6
Range("registro") = .Value + 1
.Offset(, 1) = ComboBox1
.Offset(, 2) = TextBox1
.Offset(, 3) = DTPicker1
.Offset(, 4) = TextBox2
For n = 2 To 14: .Offset(, n + 3) = Controls("combobox" & n): Next
.Offset(, 18) = TextBox3
.Offset(, 19) = TextBox4
.Offset(, 20) = ComboBox15
.Offset(, 21) = TextBox5
End With
End Sub
Private Sub CommandButton2_Click()
DTPicker1 = Clear
For n = 1 To 5: Controls("textbox" & n) = "": Next
For n = 1 To 15: Controls("combobox" & n).Clear: Next
Rellena_Combos
End Sub

Private Sub Rellena_Combos()
With Worksheets("listas").Range([a2], [f219].End(xlDown))
ComboBox1.RowSource = .Address
For n = 4 To 8 Step 2: Controls("combobox" & n).RowSource
= .Offset(, 1).Address: Next
For n = 3 To 9 Step 2: Controls("combobox" & n).RowSource
= .Offset(, 2).Address: Next
ComboBox2.RowSource = .Offset(, 3).Address
For n = 10 To 14: Controls("combobox" & n).RowSource = .Offset(,
4).Address: Next
ComboBox15.RowSource = .Offset(, 5).Address
End With
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub

Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal
Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
Calendar1.Today 'actualiza o muestra la fecha actual
End Sub

Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then
Sheets("listas").Visible = True
Sheets("ESTADISTICA").Visible = False
Sheets("TABLA").Visible = False
Sheets("listas").Select
End If
Unload Me
End Sub

Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
Sheets("ESTADISTICA").Visible = True
Sheets("LISTAS").Visible = False
Sheets("TABLA").Visible = False
Sheets("ESTADISTICA").Select
End If
Unload Me
End Sub

Private Sub OptionButton3_Click()
If OptionButton3.Value = True Then
Sheets("TABLA").Visible = True
Sheets("LISTAS").Visible = False
Sheets("ESTADISTICA").Visible = False
Sheets("TABLA").Select
End If
Unload Me
End Sub

Private Sub UserForm_Click()
principal.Show
End Sub

MÓDULO 1:

Sub auto_open()
Sheets("Inicio").Activate
Sheets("listas").Visible = True
Sheets("Gráfico1").Visible = True
Sheets("Tabla").Visible = True
Sheets("Estadistica").Visible = True
End Sub

Sub abrir()
Sheets("Formulario").Select
principal.Show
End Sub

Sub actualiza()

'Range("a10").Select
ActiveSheet.PivotTables("Tabla dinámica1").PivotCache.Refresh
End Sub
Respuesta Responder a este mensaje
#7 Héctor Miguel
08/11/2007 - 22:41 | Informe spam
hola, Miguel !

Con el formulario abierto, al desplegar los distintos ComboBox, han desaparecido los lelementos de las listas despleglables
por eso te comente que donde colocabas los rangos de las listas, donde se encuentran und, doc, nal, mot, efe y jui ...
El codigo que me facilitaste, ya modificado con el nombre del formulario, ha quedado de la siguiente manera; pero no funciona:



1) para el codigo de la propuesta del procedimiento "Rellenar_combos" NO debes de modificar...
de esto: -> With Worksheets("listas").Range([a2], [a2].End(xlDown))
a esto: -> With Worksheets("listas").Range([a2], [f219].End(xlDown))
=> [a2] debe ser SIEMPRE el punto de partida
ademas de que trae inconsistencias el codigo original propuesto (por falta de pruebas)

2) realiza estas modificaciones:

a) la declaracion de la variable:
de: -> Dim n As Byte
a: -> Dim n As Integer

b) el procedimiento "Rellena_combos" a:

Private Sub Rellena_Combos()
With Worksheets("listas")
With .Range(.[a2], .[a2].End(xlDown))
ComboBox1.List = .Value
For n = 4 To 8 Step 2: Me.Controls("combobox" & n).List = .Offset(, 1).Value: Next
For n = 3 To 9 Step 2: Me.Controls("combobox" & n).List = .Offset(, 2).Value: Next
ComboBox2.List = .Offset(, 3).Value
For n = 10 To 14: Me.Controls("combobox" & n).List = .Offset(, 4).Value: Next
ComboBox15.List = .Offset(, 5).Value
End With
End With
End Sub

(ahora si... ya hice las pruebas correspondientes y funciona) ;)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ los codigos expuestos __
Dim n As Byte

Private Sub principal_Initialize()
Rellena_Combos
End Sub

Private Sub CommandButton1_Click()
Dim Salir As Boolean
For n = 1 To 2: If Controls("textbox" & n) = "" Then Salir = True: GoTo Verifica
Next
For n = 1 To 9: If Controls("combobox" & n) = "" Then Salir = True: GoTo Verifica
Next
If DTPicker1 = "" Then Salir = True
Verifica:
If Salir Then MsgBox "Faltan cosillas por llenar !!!": Exit Sub
With Worksheets("estadistica").Range("a2").End(xlDown).Offset(6)
.Value = .Row - 6
Range("registro") = .Value + 1
.Offset(, 1) = ComboBox1
.Offset(, 2) = TextBox1
.Offset(, 3) = DTPicker1
.Offset(, 4) = TextBox2
For n = 2 To 14: .Offset(, n + 3) = Controls("combobox" & n): Next
.Offset(, 18) = TextBox3
.Offset(, 19) = TextBox4
.Offset(, 20) = ComboBox15
.Offset(, 21) = TextBox5
End With
End Sub
Private Sub CommandButton2_Click()
DTPicker1 = Clear
For n = 1 To 5: Controls("textbox" & n) = "": Next
For n = 1 To 15: Controls("combobox" & n).Clear: Next
Rellena_Combos
End Sub

Private Sub Rellena_Combos()
With Worksheets("listas").Range([a2], [f219].End(xlDown))
ComboBox1.RowSource = .Address
For n = 4 To 8 Step 2: Controls("combobox" & n).RowSource = .Offset(, 1).Address: Next
For n = 3 To 9 Step 2: Controls("combobox" & n).RowSource = .Offset(, 2).Address: Next
ComboBox2.RowSource = .Offset(, 3).Address
For n = 10 To 14: Controls("combobox" & n).RowSource = .Offset(, 4).Address: Next
ComboBox15.RowSource = .Offset(, 5).Address
End With
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub

Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal
Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
Calendar1.Today 'actualiza o muestra la fecha actual
End Sub

Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then
Sheets("listas").Visible = True
Sheets("ESTADISTICA").Visible = False
Sheets("TABLA").Visible = False
Sheets("listas").Select
End If
Unload Me
End Sub

Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
Sheets("ESTADISTICA").Visible = True
Sheets("LISTAS").Visible = False
Sheets("TABLA").Visible = False
Sheets("ESTADISTICA").Select
End If
Unload Me
End Sub

Private Sub OptionButton3_Click()
If OptionButton3.Value = True Then
Sheets("TABLA").Visible = True
Sheets("LISTAS").Visible = False
Sheets("ESTADISTICA").Visible = False
Sheets("TABLA").Select
End If
Unload Me
End Sub

Private Sub UserForm_Click()
principal.Show
End Sub

MÓDULO 1:

Sub auto_open()
Sheets("Inicio").Activate
Sheets("listas").Visible = True
Sheets("Gráfico1").Visible = True
Sheets("Tabla").Visible = True
Sheets("Estadistica").Visible = True
End Sub

Sub abrir()
Sheets("Formulario").Select
principal.Show
End Sub

Sub actualiza()

'Range("a10").Select
ActiveSheet.PivotTables("Tabla dinámica1").PivotCache.Refresh
End Sub
Respuesta Responder a este mensaje
#8 Miguel
09/11/2007 - 01:01 | Informe spam
On 8 nov, 22:41, "Héctor Miguel"
wrote:
hola, Miguel !

> Con el formulario abierto, al desplegar los distintos ComboBox, han desaparecido los lelementos de las listas despleglables
> por eso te comente que donde colocabas los rangos de las listas, donde se encuentran und, doc, nal, mot, efe y jui ...
> El codigo que me facilitaste, ya modificado con el nombre del formulario, ha quedado de la siguiente manera; pero no funciona:

1) para el codigo de la propuesta del procedimiento "Rellenar_combos" NO debes de modificar...
de esto: -> With Worksheets("listas").Range([a2], [a2].End(xlDown))
a esto: -> With Worksheets("listas").Range([a2], [f219].End(xlDown))
=> [a2] debe ser SIEMPRE el punto de partida
ademas de que trae inconsistencias el codigo original propuesto (por falta de pruebas)

2) realiza estas modificaciones:

a) la declaracion de la variable:
de: -> Dim n As Byte
a: -> Dim n As Integer

b) el procedimiento "Rellena_combos" a:

Private Sub Rellena_Combos()
With Worksheets("listas")
With .Range(.[a2], .[a2].End(xlDown))
ComboBox1.List = .Value
For n = 4 To 8 Step 2: Me.Controls("combobox" & n).List = .Offset(, 1).Value: Next
For n = 3 To 9 Step 2: Me.Controls("combobox" & n).List = .Offset(, 2).Value: Next
ComboBox2.List = .Offset(, 3).Value
For n = 10 To 14: Me.Controls("combobox" & n).List = .Offset(, 4).Value: Next
ComboBox15.List = .Offset(, 5).Value
End With
End With
End Sub

(ahora si... ya hice las pruebas correspondientes y funciona) ;)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ los codigos expuestos __
Dim n As Byte

Private Sub principal_Initialize()
Rellena_Combos
End Sub

Private Sub CommandButton1_Click()
Dim Salir As Boolean
For n = 1 To 2: If Controls("textbox" & n) = "" Then Salir = True: GoTo Verifica
Next
For n = 1 To 9: If Controls("combobox" & n) = "" Then Salir = True: GoTo Verifica
Next
If DTPicker1 = "" Then Salir = True
Verifica:
If Salir Then MsgBox "Faltan cosillas por llenar !!!": Exit Sub
With Worksheets("estadistica").Range("a2").End(xlDown).Offset(6)
.Value = .Row - 6
Range("registro") = .Value + 1
.Offset(, 1) = ComboBox1
.Offset(, 2) = TextBox1
.Offset(, 3) = DTPicker1
.Offset(, 4) = TextBox2
For n = 2 To 14: .Offset(, n + 3) = Controls("combobox" & n): Next
.Offset(, 18) = TextBox3
.Offset(, 19) = TextBox4
.Offset(, 20) = ComboBox15
.Offset(, 21) = TextBox5
End With
End Sub
Private Sub CommandButton2_Click()
DTPicker1 = Clear
For n = 1 To 5: Controls("textbox" & n) = "": Next
For n = 1 To 15: Controls("combobox" & n).Clear: Next
Rellena_Combos
End Sub

Private Sub Rellena_Combos()
With Worksheets("listas").Range([a2], [f219].End(xlDown))
ComboBox1.RowSource = .Address
For n = 4 To 8 Step 2: Controls("combobox" & n).RowSource = .Offset(, 1).Address: Next
For n = 3 To 9 Step 2: Controls("combobox" & n).RowSource = .Offset(, 2).Address: Next
ComboBox2.RowSource = .Offset(, 3).Address
For n = 10 To 14: Controls("combobox" & n).RowSource = .Offset(, 4).Address: Next
ComboBox15.RowSource = .Offset(, 5).Address
End With
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub

Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal
Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
Calendar1.Today 'actualiza o muestra la fecha actual
End Sub

Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then
Sheets("listas").Visible = True
Sheets("ESTADISTICA").Visible = False
Sheets("TABLA").Visible = False
Sheets("listas").Select
End If
Unload Me
End Sub

Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
Sheets("ESTADISTICA").Visible = True
Sheets("LISTAS").Visible = False
Sheets("TABLA").Visible = False
Sheets("ESTADISTICA").Select
End If
Unload Me
End Sub

Private Sub OptionButton3_Click()
If OptionButton3.Value = True Then
Sheets("TABLA").Visible = True
Sheets("LISTAS").Visible = False
Sheets("ESTADISTICA").Visible = False
Sheets("TABLA").Select
End If
Unload Me
End Sub

Private Sub UserForm_Click()
principal.Show
End Sub

MÓDULO 1:

Sub auto_open()
Sheets("Inicio").Activate
Sheets("listas").Visible = True
Sheets("Gráfico1").Visible = True
Sheets("Tabla").Visible = True
Sheets("Estadistica").Visible = True
End Sub

Sub abrir()
Sheets("Formulario").Select
principal.Show
End Sub

Sub actualiza()

'Range("a10").Select
ActiveSheet.PivotTables("Tabla dinámica1").PivotCache.Refresh
End Sub



Es una locura: He efectuado los cambios que me propones, pero sigue
sin funcionar.
1.- En los ComboBox, al desplegarse, no aparecen los elementos de la
lista. Curiosamente si primero antes acciono el CommandButton2
(Cancelar), después sí se despliega la lista de los ComboBox, pero
solo tres elementos en cada uno de ellos, cuando todos los ComboBbox
tienen muchos más elementos.
2.- Si relleno el formulario, para probar su funcionamiento, de esta
forma parcial; es decir, con la elección de uno de estos tres
elementos por ComboBox, se copian siempre en la fila 12 de la hoja
"Estadística".
3.- El dato Registro, no aumenta con cada registro que introducimos en
la base de datos.
4.-El textbox1, que se utiliza para números, cuando su registro se
copia en hoja "Estadística" lo hace como texto.
Como ves son muchos los fallos. Creo que debemos partir, de nuevo, de
mi código inicial e ir realizando los cambios de forma puntual y
comprobarlos.
Espero que estos nuevos datos, que he comprobado y puesto en
funcionamiento, te puedan esclarecer algunas cosas.
Si necesitas más información al respecto, no dudes en pedirla.
No sé como agradecerte tu interés, y el tiempo que estás dedicando a
este asunto.
Muchísimas gracias por todo.
Un saludo,
M. Ángel
Respuesta Responder a este mensaje
#9 Héctor Miguel
09/11/2007 - 02:19 | Informe spam
hola, Miguel !

despues de haber probado la parte de codigo propuesta y ver que "mis" combos se rellenan como dice tu codigo...

1) (probablemente) tomar como punto de partida el codigo que expusiste no sea lo mas adecuado (por lo confuso y redundante)

2) (creo que) va siendo hora de que subas tu archivo en algun sitio de hospedaje para que se pueda "ver" (en todo) su alcance

3) (p.e.) no se porque rellenas los combos unas veces con la propiedad RowSource y otras por el metodo AddItem -?-
ni porque usas (WorksheetFunction.CountA) en cada columna (A a F) como si hubiera diferente numero de elementos por columna

te sugiero iniciar una consulta nueva (y no olvides algun enlace para descargar -una copia de- tu archivo)

saludos,
hector.

__ la consulta original __
Es una locura: He efectuado los cambios que me propones, pero sigue sin funcionar.
1.- En los ComboBox, al desplegarse, no aparecen los elementos de la lista.
Curiosamente si primero antes acciono el CommandButton2 (Cancelar)
despues si se despliega la lista de los ComboBox, pero solo tres elementos en cada uno de ellos
cuando todos los ComboBbox tienen muchos mas elementos.
2.- Si relleno el formulario, para probar su funcionamiento, de esta forma parcial
es decir, con la eleccion de uno de estos tres elementos por ComboBox, se copian siempre en la fila 12 de la hoja "Estadistica".
3.- El dato Registro, no aumenta con cada registro que introducimos en la base de datos.
4.-El textbox1, que se utiliza para numeros, cuando su registro se copia en hoja "Estadistica" lo hace como texto.
Como ves son muchos los fallos. Creo que debemos partir, de nuevo, de mi codigo inicial
e ir realizando los cambios de forma puntual y comprobarlos.
Espero que estos nuevos datos, que he comprobado y puesto en funcionamiento, te puedan esclarecer algunas cosas.
Si necesitas mas informacion al respecto, no dudes en pedirla...
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida