Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
780to784
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
780to784
780to784
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Inhalte aufsplitten

Inhalte aufsplitten
19.07.2006 09:18:04
Monique
Hallo.
Ich habe ein Problem mit meinem Quellecode. Ich habe in einer Zelle verschiedene Daten zu stehen, die dann in verschiedene Zellen aufgeteilt werden.
Wenn nun der Inhalt folgenden Form 'Anmeldung: EW=2 Kinder=3 Alter=1, 11, 15' funftioniert alles problemlos. Habe ich aber nur die Angabe der Erwachsenenen 'Anmeldung: EW=2', dann werden die Kinderspalten mit 0 eingetragen, aber die Erwachsenen werden nicht übernommen. Die Spalte bleibt leer.
Kann mir vielleicht jemand weiterhelfen?

Sub Anmeldung()
Dim int1Bis6 As Integer, int7Bis12 As Integer, int13Bis18 As Integer
Dim lngLastRow As Long, lngI As Long, lngN As Long
Dim wksSheetSource As Worksheet, wksSheetTarget As Worksheet
Dim arrHelp() As String, arrAlter() As String
Set wksSheetSource = ActiveWorkbook.Worksheets("Liste")
Set wksSheetTarget = ActiveWorkbook.Worksheets("Details")
lngLastRow = wksSheetSource.Cells(Rows.Count, 2).End(xlUp).Row
For lngI = 2 To lngLastRow
wksSheetTarget.Cells(lngI, 1) = wksSheetSource.Cells(lngI, 2)
arrHelp = Split(wksSheetSource.Cells(lngI, 7), "=")
wksSheetTarget.Cells(lngI, 3) = 0
wksSheetTarget.Cells(lngI, 4) = 0
wksSheetTarget.Cells(lngI, 5) = 0
If UBound(arrHelp) > 1 Then
wksSheetTarget.Cells(lngI, 2) = CStr(Val(arrHelp(1)))
wksSheetTarget.Cells(lngI, 6) = CStr(Val(arrHelp(2)))
arrAlter = Split(arrHelp(3), ",")
If UBound(arrAlter) > 0 Then
For lngN = LBound(arrAlter) To UBound(arrAlter)
Select Case Val(arrAlter(lngN))
Case 1 To 6:
wksSheetTarget.Cells(lngI, 3) = wksSheetTarget.Cells(lngI, 3) + 1
Case 7 To 12:
wksSheetTarget.Cells(lngI, 4) = wksSheetTarget.Cells(lngI, 4) + 1
Case 13 To 18:
wksSheetTarget.Cells(lngI, 5) = wksSheetTarget.Cells(lngI, 5) + 1
Case Else
MsgBox "Sie haben Kinder älter als 18 Jahre in der Liste !", vbCritical
End Select
Next lngN
End If
End If
Next lngI
End Sub

Vielen lieben Dank.
Gruß Monique

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalte aufsplitten
19.07.2006 09:32:48
Heiko
Hallo Monique,
dann halt so:

Sub Anmeldung()
Dim int1Bis6 As Integer, int7Bis12 As Integer, int13Bis18 As Integer
Dim lngLastRow As Long, lngI As Long, lngN As Long
Dim wksSheetSource As Worksheet, wksSheetTarget As Worksheet
Dim arrHelp() As String, arrAlter() As String
' Hier die Tabellennamen gegebenenfalls anpassen !!!
Set wksSheetSource = ActiveWorkbook.Worksheets("Sheet1")
Set wksSheetTarget = ActiveWorkbook.Worksheets("Sheet2")
lngLastRow = wksSheetSource.Cells(Rows.Count, 2).End(xlUp).Row
For lngI = 2 To lngLastRow
wksSheetTarget.Cells(lngI, 1) = wksSheetSource.Cells(lngI, 2)
arrHelp = Split(wksSheetSource.Cells(lngI, 7), "=")
wksSheetTarget.Cells(lngI, 3) = 0
wksSheetTarget.Cells(lngI, 4) = 0
wksSheetTarget.Cells(lngI, 5) = 0
If UBound(arrHelp) > 0 Then
wksSheetTarget.Cells(lngI, 2) = CStr(Val(arrHelp(1)))
If UBound(arrHelp) > 2 Then
arrAlter = Split(arrHelp(3), ",")
If UBound(arrAlter) > 0 Then
For lngN = LBound(arrAlter) To UBound(arrAlter)
Select Case Val(arrAlter(lngN))
Case 1 To 6:
wksSheetTarget.Cells(lngI, 3) = wksSheetTarget.Cells(lngI, 3) + 1
Case 7 To 12:
wksSheetTarget.Cells(lngI, 4) = wksSheetTarget.Cells(lngI, 4) + 1
Case 13 To 18:
wksSheetTarget.Cells(lngI, 5) = wksSheetTarget.Cells(lngI, 5) + 1
Case Else
MsgBox "Sie haben Kinder älter als 18 Jahre in der Liste !", vbCritical
End Select
Next lngN
End If
End If
End If
Next lngI
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Inhalte aufsplitten
19.07.2006 09:40:47
Monique
Hallo Heiko,
vielen Dank für deine Hilfe. In meinem Quellcode habe ich jedoch auch noch die Angabe der Anzahl der Kinder zusammengefaßt. Also die Angabe im String 'Kinder = 2' lasse ich in eine Spalte Kinder mir 2 eintragen.
Dies war der Befehl dazu: wksSheetTarget.Cells(lngI, 6) = CStr(Val(arrHelp(2)))
Der funktioniert jetzt leider nicht mehr. Kann man da was machen?
Gruß Monique
AW: Inhalte aufsplitten
19.07.2006 09:54:25
Heiko
Hallo Monique,
dann so:

Sub Anmeldung()
Dim int1Bis6 As Integer, int7Bis12 As Integer, int13Bis18 As Integer
Dim lngLastRow As Long, lngI As Long, lngN As Long
Dim wksSheetSource As Worksheet, wksSheetTarget As Worksheet
Dim arrHelp() As String, arrAlter() As String
' Hier die Tabellennamen gegebenenfalls anpassen !!!
Set wksSheetSource = ActiveWorkbook.Worksheets("Sheet1")
Set wksSheetTarget = ActiveWorkbook.Worksheets("Sheet2")
lngLastRow = wksSheetSource.Cells(Rows.Count, 2).End(xlUp).Row
For lngI = 2 To lngLastRow
wksSheetTarget.Cells(lngI, 1) = wksSheetSource.Cells(lngI, 2)
arrHelp = Split(wksSheetSource.Cells(lngI, 7), "=")
wksSheetTarget.Cells(lngI, 3) = 0
wksSheetTarget.Cells(lngI, 4) = 0
wksSheetTarget.Cells(lngI, 5) = 0
wksSheetTarget.Cells(lngI, 6) = 0
If UBound(arrHelp) > 0 Then
wksSheetTarget.Cells(lngI, 2) = CStr(Val(arrHelp(1)))
If UBound(arrHelp) > 2 Then
wksSheetTarget.Cells(lngI, 6) = CStr(Val(arrHelp(2)))
arrAlter = Split(arrHelp(3), ",")
If UBound(arrAlter) >= 0 Then
For lngN = LBound(arrAlter) To UBound(arrAlter)
Select Case Val(arrAlter(lngN))
Case 1 To 6:
wksSheetTarget.Cells(lngI, 3) = wksSheetTarget.Cells(lngI, 3) + 1
Case 7 To 12:
wksSheetTarget.Cells(lngI, 4) = wksSheetTarget.Cells(lngI, 4) + 1
Case 13 To 18:
wksSheetTarget.Cells(lngI, 5) = wksSheetTarget.Cells(lngI, 5) + 1
Case Else
MsgBox "Sie haben Kinder älter als 18 Jahre in der Liste !", vbCritical
End Select
Next lngN
End If
End If
End If
Next lngI
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Inhalte aufsplitten
19.07.2006 10:00:09
Monique
Hallo Heiko,
vielen lieben Dank. Es funktioniert jetzt problemlos.
Gruß Monique

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige