Error al ejecutar un formulario desde el editor VBA de Excel

Me puedes ayudar con este tema cuando ejecuto un formulario desde el editor de VBA de Excel me aparece el siguiente error en el método "select" de objeto "_worksheet

1 respuesta

Respuesta
1

¿Alguna línea de la macro se pone de color azul o de color amarillo?

Puedes poner toda la macro para probarla.

hola dante

te adjunto todo el código del formulario creo que he ingresado demasiados valores y el error no me lo encuentro

le adjunto la respuesta anterior que me brindo para que pueda entender mejor lo que estoy elaborando

http://www.todoexpertos.com/preguntas/646tlv9lm5s94r4y/cargar-datos-de-formulario-a-otro-en-excel?selectedanswerid=6474rgjcb5pcwkwn&nid=9ovqlue4i8u6bumfh8jpvrso9vw63hkp9jumbvmagrvpbu6dggrm9uehabr3 

Option Explicit
Private Sub AÑADIR_Click()
Dim x As Integer
Dim Y As Integer
Dim fecha As Double
Dim Articulo  As String
Dim Referencia As String
Dim Cantidad As String
Dim npedido, familia, tipoinsumo, um, cocina, servicio, caja, bar, postres, otros As String
Dim dato As String
Dim contarsi As String
Dim numero As String
Dim resp As Byte
'Application.ScreenUpdating = False
Sheets("inicio1").Select
ActiveSheet.Unprotect ""
'If ComboBox3.Text = "" Then
   'MsgBox " Debe informar la referencia del Producto ", vbCritical, "Informacion"
   'ComboBox3.SetFocus
  'Exit Sub
 'End If
If TextBox15.Text = "" Then
   MsgBox " Debe informar el nombre del Producto ", vbCritical, "Informacion"
   ComboBox11.SetFocus
  Exit Sub
 End If
'validamos si hay duplicados
If TextBox16 = "0" And TextBox17 = "0" And TextBox18 = "0" And TextBox19 = "0" And TextBox20 = "0" And TextBox26 = "0" Then
MsgBox "Todos los campos no pueden tener 0 VERIFICAR"
'Sheets("inicio").Select
'Hoja1.TextBox2.BackColor = &HFF00&
TextBox16.SetFocus
Exit Sub
End If
dato = TextBox25.Value
contarsi = Application.WorksheetFunction.CountIf(Sheets("inicio1").Columns(3), dato)
If contarsi > 0 Then
'UserForm3.Show
resp = MsgBox("¿El nombre ya exixte deseas revisar y actualizar?", _
    vbQuestion + vbYesNo, "EXCELeINFO")
'MsgBox "El nombre ya exixte revisar y actualizar"
'ComboBox11.SetFocus
If resp = vbYes Then
UserForm4.Show
Else
UserForm2.Hide
UserForm2.Show
'ComboBox11.SetFocus
Exit Sub
End If
 Else
 numero = Application.WorksheetFunction.CountA(Sheets("INICIO1").Range("A8:a1000"))
    npedido = ComboBox4.Value
   Referencia = ComboBox3.Value
   Articulo = ComboBox11.Value
   familia = TextBox10.Value
   tipoinsumo = TextBox12.Value
   um = TextBox15.Value
   cocina = TextBox16.Value
   servicio = TextBox17.Value
   caja = TextBox18.Value
   bar = TextBox19.Value
   postres = TextBox20.Value
   fecha = DTPicker2.Value
   otros = TextBox26.Value
   ActiveWorkbook.Sheets("Inicio1").Visible = True
   Sheets("Inicio1").Activate
  End If
For Y = 9 To 900
If Y = 901 Then
    MsgBox "Demasiados Articulos", vbInformation
    NUEVO_Click
  Exit Sub
 End If
 ActiveSheet.Unprotect ""
If (Cells(Y, 3)) = "" Then
    Cells(Y, 1).Select
    Cells(Y, 1).Value = numero
    Cells(Y, 2).Select
    Cells(Y, 2).Value = Referencia
    Cells(Y, 3).Select
    Cells(Y, 3).Value = Articulo
   ' Cells(Y, 4).Select
   ' Cells(Y, 5).Value = Precio
     Cells(Y, 4).Select
    Cells(Y, 4).Value = tipoinsumo
     Cells(Y, 5).Select
    Cells(Y, 5).Value = fecha
     Cells(Y, 6).Select
    Cells(Y, 6).Value = familia
     Cells(Y, 7).Select
    Cells(Y, 7).Value = um
     Cells(Y, 8).Select
    Cells(Y, 8).Value = cocina
     Cells(Y, 9).Select
    Cells(Y, 9).Value = servicio
     Cells(Y, 10).Select
    Cells(Y, 10).Value = caja
     Cells(Y, 11).Select
    Cells(Y, 11).Value = bar
     Cells(Y, 12).Select
    Cells(Y, 12).Value = postres
    Cells(Y, 13).Select
    Cells(Y, 13).Value = otros
    Cells(Y, 14).Select
    Cells(Y, 14).Value = Val(TextBox16) + Val(TextBox17) + Val(TextBox18) + Val(TextBox19) + Val(TextBox20) + Val(TextBox26)
  Exit For
End If
  Next Y
 ActiveSheet.Protect ""
    NUEVO_Click
   Sheets("inicio1").Activate
End Sub
Private Sub CERRAR_Click()
Unload Me
End Sub
Private Sub NUEVO_Click()
   ComboBox3.Text = ""
   ComboBox11.Text = ""
'Application.ScreenUpdating = False
Dim x As Integer
Dim control As String
Dim indice As String
For x = 0 To Controls.Count - 1
   If Left(Controls(x).Name, 7) = "TextBox" Then
      control = Controls(x).Name
      indice = Val(Right(control, Len(control) - InStrRev(control, "x")))
      Controls(x).Value = ""
   End If
Next x
    ComboBox11.SetFocus
End Sub
Private Sub ComboBox11_Change()
On Error Resume Next
Dim marca As String
Dim idbusca As String
Dim fila As Integer
Application.ScreenUpdating = False
Sheets("insumos").Select
Hoja2.Visible = xlSheetVisible
fila = 0
marca = ComboBox11.Value
Do While idbusca <> marca
     fila = fila + 1
     idbusca = Range("B" & fila).Value
     If idbusca = Empty Then
        Sheets("inicio1").Select
        MsgBox "No se encontraron datos"
        Exit Do
     End If
Loop
ComboBox3.Value = Range("A" & fila).Value
'ComboBox15.Value = Range("e" & fila).Value
TextBox10.Value = Range("c" & fila).Value
TextBox15.Value = Range("e" & fila).Value
TextBox12.Value = Range("f" & fila).Value
TextBox25.Value = Range("B" & fila).Value
TextBox16.Value = 0
TextBox17.Value = 0
TextBox18.Value = 0
TextBox19.Value = 0
TextBox20.Value = 0
TextBox26.Value = 0
'Hoja1.Activate
If ComboBox11.Value = "" Then
TextBox25.Text = ""
ComboBox3.Value = ""
TextBox16.Value = ""
TextBox17.Value = ""
TextBox18.Value = ""
TextBox19.Value = ""
TextBox20.Value = ""
TextBox26.Value = ""
Else
TextBox25.Value = Range("B" & fila).Value
TextBox16.Value = 0
TextBox17.Value = 0
TextBox18.Value = 0
TextBox19.Value = 0
TextBox20.Value = 0
TextBox26.Value = 0
End If
Sheets("Inicio1").Activate
Application.ScreenUpdating = True
End Sub
Private Sub ComboBox3_Change()
On Error Resume Next
Dim marca As String
Dim idbusca As String
Dim fila As Integer
'Application.ScreenUpdating = False
Sheets("insumos").Select
Hoja2.Visible = xlSheetVisible
fila = 0
marca = ComboBox3.Value
Do While idbusca <> marca
     fila = fila + 1
     idbusca = Range("A" & fila).Value
     If idbusca = Empty Then
        Sheets("inicio1").Select
        MsgBox "No se encontraron datos"
        Exit Do
     End If
Loop
ComboBox11.Value = Range("B" & fila).Value
'ComboBox15.Value = Range("e" & fila).Value
TextBox10.Value = Range("c" & fila).Value
TextBox15.Value = Range("e" & fila).Value
TextBox12.Value = Range("f" & fila).Value
TextBox25.Value = Range("B" & fila).Value
TextBox16.Value = 0
TextBox17.Value = 0
TextBox18.Value = 0
TextBox19.Value = 0
TextBox20.Value = 0
TextBox26.Value = 0
If ComboBox3.Value = "" Then
TextBox25.Text = ""
ComboBox11.Value = ""
TextBox10.Text = ""
TextBox12.Text = ""
TextBox15.Text = ""
TextBox16.Value = ""
TextBox17.Value = ""
TextBox18.Value = ""
TextBox19.Value = ""
TextBox20.Value = ""
TextBox26.Value = ""
Else
TextBox25.Value = Range("B" & fila).Value
ComboBox11.Value = Range("B" & fila).Value
'ComboBox15.Value = Range("e" & fila).Value
TextBox10.Value = Range("c" & fila).Value
TextBox15.Value = Range("e" & fila).Value
TextBox12.Value = Range("f" & fila).Value
TextBox16.Value = 0
TextBox17.Value = 0
TextBox18.Value = 0
TextBox19.Value = 0
TextBox20.Value = 0
TextBox26.Value = 0
End If
Application.ScreenUpdating = True
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub UserForm_Initialize()
Sheets("inicio1").Select
ActiveSheet.Unprotect ""
TextBox25.Text = ""
ComboBox11.Value = ""
TextBox10.Text = ""
TextBox12.Text = ""
TextBox15.Text = ""
TextBox16.Value = ""
TextBox17.Value = ""
TextBox18.Value = ""
TextBox19.Value = ""
TextBox20.Value = ""
TextBox26.Value = ""
DTPicker2.Value = Sheets("inicio1").Range("o1").Value
Dim B2 As Range
Dim a2 As Range
Application.ScreenUpdating = False
ordenar_arrastre
Hoja2.Visible = xlSheetVisible
Hoja2.Select
Range("B2").Select
While ActiveCell <> ""
     ComboBox11.AddItem ActiveCell
      ActiveCell.Offset(1, 0).Select
Wend
ordenar_arrastre
Hoja6.Select
Range("E9").Select
ComboBox11.SetFocus
'.................
ordenar_arrastre
Hoja2.Select
Range("A2").Select
While ActiveCell <> ""
     ComboBox3.AddItem ActiveCell
      ActiveCell.Offset(1, 0).Select
Wend
ordenar_arrastre
Hoja6.Select
Range("E9").Select
'.................
Sheets("inicio1").Select
ActiveSheet.Protect ""
Application.ScreenUpdating = True
End Sub
Private Sub TextBox16_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Por.Dante Amor
    Select Case KeyCode
        Case 8, 46: TextBox16 = Mid(TextBox16, 1, TextBox16.SelStart)
    End Select
End Sub
Private Sub TextBox16_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim n, d, lpunto As Integer
    n = 5   'cantidad de entero
    d = 2   'cantidad de decimales
    lpunto = InStr(1, TextBox16, ".")
    Select Case KeyAscii
    Case Is < 46, Is > 57, 47: KeyAscii = 0
    Case 46: If lpunto > 0 Then KeyAscii = 0
    Case Is >= 48, Is <= 57
        If lpunto > 0 Then
            If Len(Mid(TextBox16, lpunto + 1)) = d And TextBox16.SelStart >= lpunto Then KeyAscii = 0
            If Len(TextBox16) = n + d + 1 Then KeyAscii = 0
        Else
            If Len(TextBox16) = n Then KeyAscii = 0
        End If
    End Select
End Sub
Private Sub TextBox17_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Por.Dante Amor
    Select Case KeyCode
        Case 8, 46: TextBox17 = Mid(TextBox17, 1, TextBox17.SelStart)
    End Select
End Sub
Private Sub TextBox17_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim n, d, lpunto As Integer
    n = 5   'cantidad de entero
    d = 2   'cantidad de decimales
    lpunto = InStr(1, TextBox17, ".")
    Select Case KeyAscii
    Case Is < 46, Is > 57, 47: KeyAscii = 0
    Case 46: If lpunto > 0 Then KeyAscii = 0
    Case Is >= 48, Is <= 57
        If lpunto > 0 Then
            If Len(Mid(TextBox17, lpunto + 1)) = d And TextBox17.SelStart >= lpunto Then KeyAscii = 0
            If Len(TextBox17) = n + d + 1 Then KeyAscii = 0
        Else
            If Len(TextBox17) = n Then KeyAscii = 0
        End If
    End Select
End Sub
Private Sub TextBox18_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Por.Dante Amor
    Select Case KeyCode
        Case 8, 46: TextBox18 = Mid(TextBox18, 1, TextBox18.SelStart)
    End Select
End Sub
Private Sub TextBox18_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim n, d, lpunto As Integer
    n = 5   'cantidad de entero
    d = 2   'cantidad de decimales
    lpunto = InStr(1, TextBox18, ".")
    Select Case KeyAscii
    Case Is < 46, Is > 57, 47: KeyAscii = 0
    Case 46: If lpunto > 0 Then KeyAscii = 0
    Case Is >= 48, Is <= 57
        If lpunto > 0 Then
            If Len(Mid(TextBox18, lpunto + 1)) = d And TextBox18.SelStart >= lpunto Then KeyAscii = 0
            If Len(TextBox18) = n + d + 1 Then KeyAscii = 0
        Else
            If Len(TextBox18) = n Then KeyAscii = 0
        End If
    End Select
End Sub
Private Sub TextBox19_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Por.Dante Amor
    Select Case KeyCode
        Case 8, 46: TextBox19 = Mid(TextBox19, 1, TextBox19.SelStart)
    End Select
End Sub
Private Sub TextBox19_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim n, d, lpunto As Integer
    n = 5   'cantidad de entero
    d = 2   'cantidad de decimales
    lpunto = InStr(1, TextBox19, ".")
    Select Case KeyAscii
    Case Is < 46, Is > 57, 47: KeyAscii = 0
    Case 46: If lpunto > 0 Then KeyAscii = 0
    Case Is >= 48, Is <= 57
        If lpunto > 0 Then
            If Len(Mid(TextBox19, lpunto + 1)) = d And TextBox19.SelStart >= lpunto Then KeyAscii = 0
            If Len(TextBox19) = n + d + 1 Then KeyAscii = 0
        Else
            If Len(TextBox19) = n Then KeyAscii = 0
        End If
    End Select
End Sub
Private Sub TextBox20_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Por.Dante Amor
    Select Case KeyCode
        Case 8, 46: TextBox20 = Mid(TextBox20, 1, TextBox20.SelStart)
    End Select
End Sub
Private Sub TextBox20_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim n, d, lpunto As Integer
    n = 5   'cantidad de entero
    d = 2   'cantidad de decimales
    lpunto = InStr(1, TextBox20, ".")
    Select Case KeyAscii
    Case Is < 46, Is > 57, 47: KeyAscii = 0
    Case 46: If lpunto > 0 Then KeyAscii = 0
    Case Is >= 48, Is <= 57
        If lpunto > 0 Then
            If Len(Mid(TextBox20, lpunto + 1)) = d And TextBox20.SelStart >= lpunto Then KeyAscii = 0
            If Len(TextBox20) = n + d + 1 Then KeyAscii = 0
        Else
            If Len(TextBox20) = n Then KeyAscii = 0
        End If
    End Select
End Sub
Private Sub TextBox26_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Por.Dante Amor
    Select Case KeyCode
        Case 8, 46: TextBox26 = Mid(TextBox26, 1, TextBox26.SelStart)
    End Select
End Sub
Private Sub TextBox26_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim n, d, lpunto As Integer
    n = 5   'cantidad de entero
    d = 2   'cantidad de decimales
    lpunto = InStr(1, TextBox26, ".")
    Select Case KeyAscii
    Case Is < 46, Is > 57, 47: KeyAscii = 0
    Case 46: If lpunto > 0 Then KeyAscii = 0
    Case Is >= 48, Is <= 57
        If lpunto > 0 Then
            If Len(Mid(TextBox26, lpunto + 1)) = d And TextBox26.SelStart >= lpunto Then KeyAscii = 0
            If Len(TextBox26) = n + d + 1 Then KeyAscii = 0
        Else
            If Len(TextBox26) = n Then KeyAscii = 0
        End If
    End Select
End Sub

atte.

Robert

Mejor envíame el archivo, para poder reproducir el erro.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Robert Cordova Cordova” y el título de esta pregunta.

Hola dante

Ya le envié el archivo

Atentamente.

Robert

Sí, es porque tienes la hoja inicio1 oculta, tu primera instrucción de tu formulario es:

Sheets("inicio1").Select

Por eso te envía el error.

Primero tienes que mostrar la hoja

Sheets("INICIO1").Visible = -1

Y al final la vuelves a ocultar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas