Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1648to1652
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ideen oder Vorschläge für mein Problem

Ideen oder Vorschläge für mein Problem
29.09.2018 00:01:31
Alex
Hallo zusammen
Habe leider ein fast unlösbares Problem wo ich mit meinen Kenntnissen nicht mehr weiter weiß
es geht um eine Userform mit Multipage Combobox und Textboxen mit Diversen speicherungen in verschiedenen Tabellen und Zeilen
es sind immer 3 Textboxen und die jeweils 8mal untereinander sind
wo jeweils ein wert eingetragen wird
Dieser wert sollte je nach auswahl der Combobox auf die gewünschte Tabelle und gewünschte zeile kopiert werden
und das zieht sich über die ganzen Multipagen
Habe zurzeit zwar geschaft das die richtige Tabelle angesprochen wird und die richtige zeile - aber es wird versetzt abgespeichert und das nur von der 1 page
Mein jetziges ergebnis
Dim mySheet As String
Dim lngIndex As Long
mySheet = ComboBox1.Value
With Worksheets(mySheet)
With .Cells(8, .Columns.Count).End(xlToLeft).Offset(0, 1)
For lngIndex = 1 To 3
.Offset(, lngIndex - 1).Value = _
Controls("Audit" & CStr(lngIndex)).Text
Next
With Worksheets(mySheet)
With .Cells(10, .Columns.Count).End(xlToLeft).Offset(0, 1)
For lngIndex = 4 To 6
.Offset(, lngIndex - 1).Value = _
Controls("Audit" & CStr(lngIndex)).Text
Next
With Worksheets(mySheet)
With .Cells(26, .Columns.Count).End(xlToLeft).Offset(0, 1)
For lngIndex = 7 To 9
.Offset(, lngIndex - 1).Value = _
Controls("Audit" & CStr(lngIndex)).Text
Next
With Worksheets(mySheet)
With .Cells(27, .Columns.Count).End(xlToLeft).Offset(0, 1)
For lngIndex = 10 To 12
.Offset(, lngIndex - 1).Value = _
Controls("Audit" & CStr(lngIndex)).Text
Next
With Worksheets(mySheet)
With .Cells(36, .Columns.Count).End(xlToLeft).Offset(0, 1)
For lngIndex = 13 To 15
.Offset(, lngIndex - 1).Value = _
Controls("Audit" & CStr(lngIndex)).Text
Next
With Worksheets(mySheet)
With .Cells(37, .Columns.Count).End(xlToLeft).Offset(0, 1)
For lngIndex = 16 To 18
.Offset(, lngIndex - 1).Value = _
Controls("Audit" & CStr(lngIndex)).Text
Next
With Worksheets(mySheet)
With .Cells(41, .Columns.Count).End(xlToLeft).Offset(0, 1)
For lngIndex = 19 To 21
.Offset(, lngIndex - 1).Value = _
Controls("Audit" & CStr(lngIndex)).Text
Next
With Worksheets(mySheet)
With .Cells(42, .Columns.Count).End(xlToLeft).Offset(0, 1)
For lngIndex = 22 To 24
.Offset(, lngIndex - 1).Value = _
Controls("Audit" & CStr(lngIndex)).Text
Next
End With
End With
End With
End With
End With
End With
End With
End With
End With
End With
End With
End With
End With
End With
End With
End With
End Sub
Brauche dringend Ideen oder Vorschläge
Userbild
Userbild

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ideen oder Vorschläge für mein Problem
29.09.2018 00:10:21
Ralf
Hi Alex,
unformatierter Code liest sich grottenschlecht. Aber was mir auffällt, Deine With Anweisungen sind unlogisch. Da Du Dich immer auf mySheet beziehst, sollte es so aussehen:
With Worksheets(mySheet)
With .Cells(8, .Columns.Count).End(xlToLeft).Offset(0, 1)
For lngIndex = 1 To 3
.Offset(, lngIndex - 1).Value = _
Controls("Audit" & CStr(lngIndex)).Text
Next
End With
With .Cells(10, .Columns.Count).End(xlToLeft).Offset(0, 1)
For lngIndex = 4 To 6
.Offset(, lngIndex - 1).Value = _
Controls("Audit" & CStr(lngIndex)).Text
Next
End With
'u.s.w.
End With 'für my sheet...

Anzeige
AW: Ideen oder Vorschläge für mein Problem
29.09.2018 00:40:28
Alex
Hallo Ralf Anton
Danke zuerst für deine Vorschlag
Habe Ihn gerade Umgesetzt schaut gleich ein wenig besser aus
Dennoch wird das ganze immer noch versetzt
Userbild
AW: Ideen oder Vorschläge für mein Problem
29.09.2018 10:16:08
Hajo_Zi
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Schau mal hier
Eine hochgeladene Arbeitsmappe erhöht die Wahrscheinlichkeit, dass Du eine Lösung für Dein Problem erhältst.
Erstelle folglich bitte eine Demomappe, aus der deine Aufgabenstellung klar erkennbar ist und lade diese hoch.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, solltest du diese Daten anonymisieren bzw. pseudonymisieren.
Falls Du den Download des Forums nicht benutzen möchtest beachte bitte: von unsicheren Servern file-upload lade ich keine Datei herunter (lt. Einschätzung meines Virenprogramms)

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Anzeige
AW: Ideen oder Vorschläge für mein Problem
29.09.2018 10:54:24
Ralf
Dennoch wird das ganze immer noch versetzt
Das kann ich nicht beurteilen, da ich keinen Vergleich zwischen ist und soll habe. Da wirst Du wohl mal überprüfen müssen, woher die Abweichung kommt und den Code entsprechend anpassen müssen.
AW: Ideen oder Vorschläge für mein Problem
29.09.2018 11:04:24
fcs
Hallo Alex,
scheinbar sind deine Textboxen nicht immer alle ausgefüllt.
Dadurch ist die letzte ausgefüllte Zelle in den einzelnen Zeilen in unterschiedlichen Spalten.
Im Makro ermittelst du für jede auszufüllende Zeile die Startspalte neu und es kommt bei der von dir verwendeten Methode zu den versetzten Eintragen.
Lösungsweg(e):
1. die Startspalte für die Einträge wird zu Beginn einmal ermittelt und dann für alle Zeilen benutzt.
Die folgende Methode ist aber nur vewendbar, wenn es eine Zeile gibt in der die letzte Spalte immer ausgefüllt ist.
        'letzte Spalte mit Inhalt in Zeile 8 - evtl. andere Zeile nehmen _
um letzte ausgefüllte Spalte zu ermitteln
lngSpalte = .Cells(8, .Columns.Count).End(xlToLeft).Column

Ansonsten muss man die letzte ausgefüllte Spalte (bzw. die nächste auszufüllende Spalte) anders ermitteln.
2. Beim Übertragen der Textbox-Inhalte ins Tabellenblatt wird immer mindestens ein Hochkomma eingetragen - dieses bleibt in der Anzeige unsichtbar aber die Zelle wird von Excel als ausgefüllt betrachtet.
Dein Makro muss dann etwa wie folgt aussehen.
Ich hab auch noch eine Variante erstellt, die meiner Meinung nach etwas übersichtlicher ist.
LG
Franz

Sub Test()
Dim mySheet As String
Dim lngIndex As Long
Dim lngSpalte As Long
Dim wks As Worksheet
mySheet = ComboBox1.Value
Set wks = Worksheets(mySheet)
With wks
'letzte Spalte mit Inhalt in Zeile 8 - evtl. andere Zeile nehmen _
um letzte ausgefüllte Spalte zu ermitteln
lngSpalte = .Cells(8, .Columns.Count).End(xlToLeft).Column
'nächste freie Spalte
lngSpalte = lngSpalte + 1
With .Cells(8, lngSpalte)
For lngIndex = 1 To 3
.Offset(, lngIndex - 1).Value = _
"'" & Controls("Audit" & CStr(lngIndex)).Text
Next
End With
With .Cells(10, lngSpalte)
For lngIndex = 4 To 6
.Offset(, lngIndex - 1).Value = _
"'" & Controls("Audit" & CStr(lngIndex)).Text
Next
End With
With .Cells(26, lngSpalte)
For lngIndex = 7 To 9
.Offset(, lngIndex - 1).Value = _
"'" & Controls("Audit" & CStr(lngIndex)).Text
Next
End With
With .Cells(27, lngSpalte)
For lngIndex = 10 To 12
.Offset(, lngIndex - 1).Value = _
"'" & Controls("Audit" & CStr(lngIndex)).Text
Next
End With
With .Cells(36, lngSpalte)
For lngIndex = 13 To 15
.Offset(, lngIndex - 1).Value = _
"'" & Controls("Audit" & CStr(lngIndex)).Text
Next
End With
With .Cells(37, lngSpalte)
For lngIndex = 16 To 18
.Offset(, lngIndex - 1).Value = _
"'" & Controls("Audit" & CStr(lngIndex)).Text
Next
End With
With .Cells(41, lngSpalte)
For lngIndex = 19 To 21
.Offset(, lngIndex - 1).Value = _
"'" & Controls("Audit" & CStr(lngIndex)).Text
Next
End With
With .Cells(42, lngSpalte)
For lngIndex = 22 To 24
.Offset(, lngIndex - 1).Value = _
"'" & Controls("Audit" & CStr(lngIndex)).Text
Next
End With
End With 'wks
End Sub
Variante
Sub Test_2()
Dim mySheet As String
Dim lngIndex As Long, Box1 As Long, Box2 As Long
Dim lngSpalte As Long, lngZeile As Long
Dim wks As Worksheet
mySheet = ComboBox1.Value
Set wks = Worksheets(mySheet)
With wks
'letzte Spalte mit Inhalt in Zeile 8 - evtl. andere Zeile nehmen _
um letzte ausgefüllte Spalte zu ermitteln
lngSpalte = .Cells(8, .Columns.Count).End(xlToLeft).Column
'nächste freie Spalte
lngSpalte = lngSpalte + 1
For lngZeile = 8 To 42
'1. Textbox-Nr. für die auszufüllenden Zeilen setzen
Select Case lngZeile
Case 8: Box1 = 1: Box2 = 3
Case 10: Box1 = 4: Box2 = 6
Case 26: Box1 = 7: Box2 = 9
Case 27: Box1 = 10: Box2 = 12
Case 36: Box1 = 13: Box2 = 15
Case 37: Box1 = 16: Box2 = 18
Case 41: Box1 = 19: Box2 = 21
Case 42: Box1 = 22: Box2 = 24
Case Else
Box1 = 0: Box2 = 0
End Select
If Box1 > 0 Then
'Textboxinhalte in Zeile eintragen
With .Cells(lngZeile, lngSpalte)
For lngIndex = Box1 To Box2
.Offset(, lngIndex - 1).Value = _
"'" & Controls("Audit" & CStr(lngIndex)).Text
Next
End With
End If
Next
End With 'wks
End Sub

Anzeige
AW: Ideen oder Vorschläge für mein Problem
29.09.2018 12:10:16
Alex
Danke euch Beiden
Habe (Hajo_Zi und Franz) eure Vorschlag heute gleich umgesetz und eine Testdatei gemacht
Hoffe man sieht dadurch das problem besser als ich es erklären kann
https://www.herber.de/bbs/user/124305.xlsm
für die multipage hätte vieleicht ich eine Idee
MultiPage1.Value = 1 then Call Makro1
or
MultiPage1.Value = 2 then Call Makro2
or
MultiPage1.Value = 3 then Call Makro3
weiß zwar nicht ob das umsetzbar ist
LG
Alex
AW: Ideen oder Vorschläge für mein Problem
29.09.2018 17:12:09
fcs
Hallo Ales,
ich habe mich nochmals durch den Code gekämpft.
Der Offset für die Zelle darf nicht gleich der Nummer der Audit... Box sein.
Er muss mit einer separaten Varriablen jeweils von 0 bis 2 hochgezählt werden.
Die Steuerung des Ablaufes über den Wert von MultiPage1.Value funktioniert. DU musst aber beachten das der Wert bei 0 für die 1. Seite beginnt.
Select Case MultiPage1.Value
Case 0 : Call Makro1
Case 1 : Call Makro2
Case 2 : Call Makro3
End Select
Ich hab in deiner Datei mal die Makros zu den beiden Spaicher-Schaltflächen angepasst/ergänzt.
Bei Speichern2 aber in einem Makro und nicht mit 3 Einzelmakros für jede Version.
https://www.herber.de/bbs/user/124309.xlsm
LG
Framz
Anzeige
AW: Ideen oder Vorschläge für mein Problem
29.09.2018 18:05:13
Alex
Hallo Franz
Das ist genau was ich brauch
Kann Dir gar nicht genug Danken für Deine Hilfe
LG
Alex

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige