Tengo una hoja en excel dividida en dos y necesito limitar el numero de columnas, para...
Tengo una hoja en excel que se divide en dos como se observa en la figura, en una parte introduzco los datos con un formulario, que en estos momentos no me funciona, por que tengo la hoja dividida en dos, por lo que necesito aplicar en una de las partes lo siguiente para que los datos se vayan moviendo por filas en la primera parte de la hoja, en la otra parte tengo fórmulas para que se vayan copiando estos datos
Es posible limitar el numero de columnas en formularios con código :
on_Dolu_Satir = Sheets("Zuschnitte").Range("D65536").End(xlUp).Row
Bos_Satir = Son_Dolu_Satir + 1
Sheets("Zuschnitte").Range("B" & Bos_Satir).Value = _
Application.WorksheetFunction.Max(Sheets("Zuschnitte").Range("B:B")) + 1
1 Respuesta
¿En serio Eusebio?, es tan complicado para ti, pegar aquí en el foro tu macro siguiendo una simple regla.
Disculpa!
Los datos los entro a la (Zuschnitte)con el siguiente código,
Private Sub CommandButton124_Click() pass = "chevo" Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.EnableEvents = False ActiveSheet.DisplayPageBreaks = False If Me.TextBox14.Value = "" Then Call MsgBox("Diese Länge würde schon berechnet", vbInformation, "nicht speichern ") Exit Sub End If Sheets("Zuschnitte").Unprotect pass Sheets("Stecker Buchse").Unprotect pass Son_Dolu_Satir = Sheets("Zuschnitte").Range("D65536").End(xlUp).Row Bos_Satir = Son_Dolu_Satir + 1 Sheets("Zuschnitte").Range("B" & Bos_Satir).Value = _ Application.WorksheetFunction.Max(Sheets("Zuschnitte").Range("B:B")) + 1 Sheets("Zuschnitte").Range("C" & Bos_Satir).Value = TextBox16.Text 'VERBINDUNG Sheets("Zuschnitte").Range("D" & Bos_Satir).Value = TextBox2.Text 'Querschnitt Sheets("Zuschnitte").Range("F" & Bos_Satir).Value = TextBox14.Text 'zahl Sheets("Zuschnitte").Range("E" & Bos_Satir).Value = TextBox17.Text 'LÄNGE 'Sheets("Zuschnitte").Range("E" & Bos_Satir).Value = TextBox1 Sheets("Zuschnitte").Range("G" & Bos_Satir).Value = TextBox23.Text 'ISOLATION Son_Dolu_Satir = Sheets("Stecker Buchse").Range("D65536").End(xlUp).Row Bos_Satir = Son_Dolu_Satir + 1 Sheets("Stecker Buchse").Range("B" & Bos_Satir).Value = _ Application.WorksheetFunction.Max(Sheets("Stecker Buchse").Range("B:B")) + 1 If TextBox16 = "ZWL" Then Sheets("Stecker Buchse").Range("C" & Bos_Satir).Value = "" Sheets("Stecker Buchse").Range("F" & Bos_Satir).Value = "" Sheets("Stecker Buchse").Range("D" & Bos_Satir).Value = "" Sheets("Stecker Buchse").Range("E" & Bos_Satir).Value = "" ElseIf TextBox16 = "ZWL Si" Then Sheets("Stecker Buchse").Range("C" & Bos_Satir).Value = "" Sheets("Stecker Buchse").Range("F" & Bos_Satir).Value = "" Sheets("Stecker Buchse").Range("D" & Bos_Satir).Value = "" Else: Sheets("Stecker Buchse").Range("C" & Bos_Satir).Value = TextBox16.Text 'VERBINDUNG Sheets("Stecker Buchse").Range("F" & Bos_Satir).Value = TextBox14.Text ' Sheets("Stecker Buchse").Range("D" & Bos_Satir).Value = TextBox2.Text ' Sheets("Stecker Buchse").Range("E" & Bos_Satir).Value = TextBox17.Text 'gte zahl End If Call Main 'PROGRESS BAR MsgBox "Die Daten wurden gespeichert", vbApplicationModal, "" Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True ActiveSheet.DisplayPageBreaks = True Application.CutCopyMode = False Sheets("Zuschnitte").Protect End Sub
En la hoja Stecker-Buchse esalgo parecido
Ahora explica con un simple ejemplo, cuándo debe pegar en lado izquierdo de la hoja y cuándo en el lado derecho.
O comparte tu archivo en google drive y en la hoja me explicas con detalle qué necesitas.
Te pido la explicación, porque no entiendo realmente qué quieres.
Te he enviado el libro es el mismo que te envíe anteriormente pero hice una modificación a las hojas de excel pues las otras están fuera de norma, una la otra mitad de la hoja tienen fórmulas para copiar los datos de la hoja que se entran los datos por un formulario, esta hoja debe actualizarse también
Eusebio
He limitado el libro Zuschnitte en el rango a1:H45 con el siguiente modulo que vez abajo, pero no entran los datos en la hoja al apretar el botón
Private Sub auto_open() Dim f1 As Integer Dim f2 As Integer Dim c1 As Integer Dim c2 As Integer ' With Zuschnitte With Windows(1).VisibleRange f1 = .Row f2 = f1 + .EntireRow.Count - 2 ' c1 = .Column c2 = c1 + .EntireColumn.Count - 2 End With ' Range(Cells(f1, c1), Cells(f2, c2)).Select .ScrollArea = .ScrollArea = Range(Cells(f1, c1), Cells(f2, c2)).Address End With End Sub
Disculpa Dante se ha metido el Bruto en la cabeza, Heborrado las fórmulas del lado derecho, pero los datos en la parte derecha se empiezan a grabar a partir de la fila 45 como es observa en la figura y realmente no encuentro la causa, podrías por favor echarle un vistazo a ver por que me pasa eso-
Gracias y de nuevo disculpa y Gracias
Eusebio
Haber si entendí.
Según tu pregunta inicial, vas a agregar datos a la hoja "Zuschnitte", con el userform9, cuando presionas el botón "CommandButton124"
Actualicé el código para agregar registros a la hoja "Zuschnitte"
'Actualizar hoja Zuschnitte y Stecker Buchse Private Sub CommandButton124_Click() 'DECLARAR VARIABLES Dim pass As String Dim sh1 As Worksheet, sh2 As Worksheet Dim i As Long, n As Long ' 'AMBIENTE Application.ScreenUpdating = False ' 'DATOS INICIALES pass = "chevo" If Me.TextBox14.Value = "" Then Call MsgBox("Diese Länge würde schon berechnet", vbInformation, "nicht speichern ") Exit Sub End If Set sh1 = Sheets("Zuschnitte") Set sh2 = Sheets("Stecker Buchse") i = 7 'fila inicial n = 0 Do While sh1.Range("B" & i).Value <> "" n = sh1.Range("B" & i).Value + 1 i = i + 1 Loop 'ACTUALIZAR hoja Zuschnitte sh1.Unprotect pass sh1.Range("B" & i).Value = n sh1.Range("C" & i).Value = TextBox16.Text 'VERBINDUNG sh1.Range("D" & i).Value = TextBox2.Text 'Querschnitt sh1.Range("E" & i).Value = TextBox17.Text 'LÄNGE sh1.Range("F" & i).Value = TextBox14.Text sh1.Range("G" & i).Value = TextBox23.Text 'ISOLATION sh1.Protect pass ' ' Sheets("Stecker Buchse").Range("B" & Bos_Satir).Value = _ ' Application.WorksheetFunction.Max(Sheets("Stecker Buchse").Range("B:B")) + 1 ' If TextBox16 = "ZWL" Then ' Sheets("Stecker Buchse").Range("C" & Bos_Satir).Value = "" ' Sheets("Stecker Buchse").Range("F" & Bos_Satir).Value = "" ' Sheets("Stecker Buchse").Range("D" & Bos_Satir).Value = "" ' Sheets("Stecker Buchse").Range("E" & Bos_Satir).Value = "" ' ElseIf TextBox16 = "ZWL Si" Then ' Sheets("Stecker Buchse").Range("C" & Bos_Satir).Value = "" ' Sheets("Stecker Buchse").Range("F" & Bos_Satir).Value = "" ' Sheets("Stecker Buchse").Range("D" & Bos_Satir).Value = "" ' Else: Sheets("Stecker Buchse").Range("C" & Bos_Satir).Value = TextBox16.Text 'VERBINDUNG ' Sheets("Stecker Buchse").Range("F" & Bos_Satir).Value = TextBox14.Text ' ' Sheets("Stecker Buchse").Range("D" & Bos_Satir).Value = TextBox2.Text ' ' Sheets("Stecker Buchse").Range("E" & Bos_Satir).Value = TextBox17.Text 'gte zahl ' End If ' Call Main 'PROGRESS BAR MsgBox "Die Daten wurden gespeichert", vbApplicationModal, "" Application.ScreenUpdating = True End Sub
Me faltó actualizar la hoja "Stecker Buchse" porque no entendí qué vas a hacer, pero empieza a probar la parte que agrega registros a la hoja "Zuschnitte".
Yo me pase días con dolor de cabeza, sin encontrar la solución. Gracias, existe un pequeño problema y es en la numeración de la hoja
Eusebio
En la hoja Stecker Buchse van los mismos elementos excepto ""ZWL" Y ""ZWLi" es por eso que he utilizado la función If
Para el problema de la numeración.
Cambia esta línea:
n = 0
Por esta:
N = 1
Corrige manualmente toda la numeración y vuelve a ejecutar tu formulario para que tome los nuevos valores.
Del lado izquierdo de la hoja, también tienes fórmulas, bórralas.
Nota stecker buchse se imprime on el botón 121 este botón esta oculto pero aparece bajo algunas condiciones
No entiendo esta parte.
' Sheets("Stecker Buchse").Range("B" & Bos_Satir).Value = _ ' Application.WorksheetFunction.Max(Sheets("Stecker Buchse").Range("B:B")) + 1 ' If TextBox16 = "ZWL" Then ' Sheets("Stecker Buchse").Range("C" & Bos_Satir).Value = "" ' Sheets("Stecker Buchse").Range("F" & Bos_Satir).Value = "" ' Sheets("Stecker Buchse").Range("D" & Bos_Satir).Value = "" ' Sheets("Stecker Buchse").Range("E" & Bos_Satir).Value = "" ' ElseIf TextBox16 = "ZWL Si" Then ' Sheets("Stecker Buchse").Range("C" & Bos_Satir).Value = "" ' Sheets("Stecker Buchse").Range("F" & Bos_Satir).Value = "" ' Sheets("Stecker Buchse").Range("D" & Bos_Satir).Value = "" ' Else: Sheets("Stecker Buchse").Range("C" & Bos_Satir).Value = TextBox16.Text 'VERBINDUNG ' Sheets("Stecker Buchse").Range("F" & Bos_Satir).Value = TextBox14.Text ' ' Sheets("Stecker Buchse").Range("D" & Bos_Satir).Value = TextBox2.Text ' ' Sheets("Stecker Buchse").Range("E" & Bos_Satir).Value = TextBox17.Text 'gte zahl ' End If
Podrías crear otra pregunta y lo intentas explicar con mayor detalles.
Olvídate del código, explica con gran detalle utilizando tus palabras, qué quieres hacer.
Paso a paso, no te limites con la explicación. Utiliza tu formulario e imagina que lo estás llenados con datos, esos datos los pones en la explicación, imagina que quieres poner los datos en la hoja "Secker Buchse". En cuál fila los quieres poner y por qué. Todo eso que imaginas lo explicas con detalle.
Oldiva todo lo que hemos hecho hasta ahora y mira esto, he puesto tu código en le botón schnen la hoja Zuschnitte y funciona:
Código:
Private Sub CommandButton110_Click() 'Actualizar hoja Zuschnitte y Stecker Buchse 'DECLARAR VARIABLES Dim pass As String Dim sh1 As Worksheet, sh2 As Worksheet Dim i As Long, n As Long ' 'AMBIENTE Application.ScreenUpdating = False ' 'DATOS INICIALES pass = "chevo" If Me.TextBox14.Value = "" Then Call MsgBox("Diese Länge würde schon berechnet", vbInformation, "nicht speichern ") Exit Sub End If Set sh1 = Sheets("Zuschnitte") Set sh2 = Sheets("Stecker Buchse") i = 7 'fila inicial n = 0 Do While sh1.Range("B" & i).Value <> "" n = sh1.Range("B" & i).Value + 1 i = i + 1 Loop 'ACTUALIZAR hoja Zuschnitte sh1.Unprotect pass sh1.Range("B" & i).Value = n sh1.Range("C" & i).Value = TextBox16.Text 'VERBINDUNG sh1.Range("D" & i).Value = TextBox2.Text 'Querschnitt sh1.Range("E" & i).Value = TextBox17.Text 'LÄNGE sh1.Range("F" & i).Value = TextBox14.Text sh1.Range("G" & i).Value = TextBox23.Text 'ISOLATION sh1.Protect pass ' Call Main 'PROGRESS BAR MsgBox "Die Daten wurden gespeichert", vbApplicationModal, "" Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True ActiveSheet.DisplayPageBreaks = True Application.CutCopyMode = False sh1.Protect End Sub
y en la hoja zuschnitte sale lo siguiente y estoy contento:
He realizado modificaciones en la hoja stecker buchse tu código mira:
Pero la hoja no se me actualiza alfabéticamente: Resolviendo esto ya no necesito más nada
Actualizar hoja Zuschnitte y Stecker Buchse Private Sub CommandButton124_Click() 'DECLARAR VARIABLES Dim pass As String Dim sh1 As Worksheet, sh2 As Worksheet Dim i As Long, n As Long ' 'AMBIENTE Application.ScreenUpdating = False ' 'DATOS INICIALES pass = "chevo" If Me.TextBox14.Value = "" Then Call MsgBox("Diese Länge würde schon berechnet", vbInformation, "nicht speichern ") Exit Sub End If Set sh1 = Sheets("Zuschnitte") Set sh2 = Sheets("Stecker Buchse") i = 7 'fila inicial n = 1 no = i = i + 1 Do While sh1.Range("B" & i).Value <> "" n = sh1.Range("B" & i).Value + 1 i = i + 1 Loop Do While sh2.Range("B" & i).Value <> "" no = sh1.Range("B" & i).Value + 1 i = i + 1 Loop 'ACTUALIZAR hoja Zuschnitte sh1.Unprotect pass sh1.Range("B" & i).Value = n sh1.Range("C" & i).Value = TextBox16.Text 'VERBINDUNG sh1.Range("D" & i).Value = TextBox2.Text 'Querschnitt sh1.Range("E" & i).Value = TextBox17.Text 'LÄNGE sh1.Range("F" & i).Value = TextBox14.Text sh1.Range("G" & i).Value = TextBox23.Text 'ISOLATION sh1.Protect pass ' 'Sheets("Stecker Buchse").Range("B" & Bos_Satir).Value = _ 'Application.WorksheetFunction.Max(Sheets("Stecker Buchse").Range("B:B")) + 1 If TextBox16 = "ZWL" Then sh2.Range("C" & i).Value = "" sh2.Range("F" & i).Value = "" sh2.Range("D" & i).Value = "" sh2.Range("E" & i).Value = "" ElseIf TextBox16 = "ZWL Si" Then sh2.Range("C" & i).Value = "" sh2.Range("F" & i).Value = "" sh2.Range("D" & i).Value = "" Else: sh2.Range("C" & i).Value = TextBox16.Text 'VERBINDUNG sh2.Range("F" & i).Value = TextBox14.Text ' sh2.Range("D" & i).Value = TextBox2.Text ' sh2.Range("E" & i).Value = TextBox17.Text 'gte zahl End If Call Main 'PROGRESS BAR MsgBox "Die Daten wurden gespeichert", vbApplicationModal, "" Application.ScreenUpdating = True End Sub
Ya sé cuál es el problema que tienen tus hojas para ordenar.
Tienes creadas las tablas: "Zuschnitt" y "Stecker" convierte esas tablas en rango de datos y problema solucionado.
Te anexo el código actualizado con la línea para ordenar.
'Actualizar hoja Zuschnitte y Stecker Buchse Private Sub CommandButton124_Click() 'DECLARAR VARIABLES Dim pass As String Dim sh1 As Worksheet, sh2 As Worksheet Dim i As Long, n As Long ' 'AMBIENTE Application.ScreenUpdating = False ' 'DATOS INICIALES pass = "chevo" If Me.TextBox14.Value = "" Then Call MsgBox("Diese Länge würde schon berechnet", vbInformation, "nicht speichern ") Exit Sub End If Set sh1 = Sheets("Zuschnitte") Set sh2 = Sheets("Stecker Buchse") ' i = 7 'fila inicial n = 1 Do While sh1.Range("B" & i).Value <> "" n = sh1.Range("B" & i).Value + 1 i = i + 1 Loop 'ACTUALIZAR hoja Zuschnitte sh1.Unprotect pass sh1.Range("B" & i).Value = n sh1.Range("C" & i).Value = TextBox16.Text 'VERBINDUNG sh1.Range("D" & i).Value = TextBox2.Text 'Querschnitt sh1.Range("E" & i).Value = TextBox17.Text 'LÄNGE sh1.Range("F" & i).Value = TextBox14.Text sh1.Range("G" & i).Value = TextBox23.Text 'ISOLATION sh1.Protect pass ' i = 7 'fila inicial n = 1 Do While sh2.Range("B" & i).Value <> "" n = sh2.Range("B" & i).Value + 1 i = i + 1 Loop sh2.Unprotect pass sh2.Range("B" & i).Value = n If TextBox16 = "ZWL" Then sh2.Range("C" & i).Value = "" sh2.Range("F" & i).Value = "" sh2.Range("D" & i).Value = "" sh2.Range("E" & i).Value = "" ElseIf TextBox16 = "ZWL Si" Then sh2.Range("C" & i).Value = "" sh2.Range("F" & i).Value = "" sh2.Range("D" & i).Value = "" Else: sh2.Range("C" & i).Value = TextBox16.Text 'VERBINDUNG sh2.Range("F" & i).Value = TextBox14.Text ' sh2.Range("D" & i).Value = TextBox2.Text ' sh2.Range("E" & i).Value = TextBox17.Text 'gte zahl End If 'Para ordenar sh2.Range("C6:G37").Sort key1:=sh2.Range("C6"), order1:=xlAscending, Header:=xlYes sh2.Protect pass Call Main 'PROGRESS BAR Application.ScreenUpdating = True MsgBox "Die Daten wurden gespeichert", vbApplicationModal, "" End Sub
- Compartir respuesta