PDA

Vollständige Version anzeigen : For-Schleifen Problem...


RaynAnderson
24.08.2017, 06:03
Hallo,

ich habe nach sehr lagerzeit mal wieder ein Excel-VBA-Macro geschriben. Aber es macht leider nicht das, was ich gerne möchte :rolleyes:

Ich versuche einmal zu erklären was ich bewirken möchte ;)

in der For-Schleife "intRow" sollen verschiedene Zellen Kopiert werden und in den Reiter "Export-Daten" eingefügt werden. Bis im Reiter "aktuell" => Spalte "B" keinen Wert in der Zelle vorhanden ist.
Das Funktioniert soweit auch ganz gut...

Was jetzt aber nicht funktioniert, dass er diese Prozedur wiederholt (dann werden in einigen Abschnitten die nachbarwerte abgefragt) und mir die weiteren Werte unter der Liste im Reiter "Export-Daten" schreibt.

Kannst Du mir vielleicht dabei heilfen das Prblem zu fixen?

Vielen Dank schon einmal vorab...



Sub export2()

Dim intRow As Integer
Dim intTab As Integer

For intTab = 1 To 12

For intRow = 9 To 30

Sheets("aktuell").Select

If Cells(intRow, 2).Value <> "" Then

'--------------------------------------------------'
'Einfügen: mID'
'--------------------------------------------------'

Sheets("Wichtige Hinweise").Select
Cells(7, 3).Select
Selection.Copy
Sheets("Export-Daten").Select
Cells(intRow, 2).Select
ActiveSheet.Paste

'--------------------------------------------------'
'Einfügen: Fachabteilung'
'--------------------------------------------------'
Sheets("aktuell").Select
Cells(intRow, 2).Select
Selection.Copy
Sheets("Export-Daten").Select
Cells(intRow, 3).Select
ActiveSheet.Paste

'--------------------------------------------------'
'Einfügen: Datum'
'--------------------------------------------------'

Sheets("Export-Daten").Select
Cells(intRow, 3).Value = "01." & intTab & ".2000"

'--------------------------------------------------'
'Einfügen: aktuelle ap'
'--------------------------------------------------'
Sheets("aktuell").Select
Cells(intRow, 3).Select
Selection.Copy
Sheets("Export-Daten").Select
Cells(intRow, intTab + 4).Select
ActiveSheet.Paste

'--------------------------------------------------'
'Einfügen: Ziel ap'
'--------------------------------------------------'
Sheets("Ziele").Select
Cells(intRow, 3).Select
Selection.Copy
Sheets("Export-Daten").Select
Cells(intRow, intTab + 5).Select
ActiveSheet.Paste

'--------------------------------------------------'
'Einfügen: aktuelle YTD'
'--------------------------------------------------'
Sheets("aktuell").Select
Cells(intRow, 16).Select
Selection.Copy
Sheets("Export-Daten").Select
Cells(intRow, intTab + 6).Select
ActiveSheet.Paste

'--------------------------------------------------'
'Einfügen: Ziel YTD'
'--------------------------------------------------'
Sheets("Ziele").Select
Cells(intRow, 16).Select
Selection.Copy
Sheets("Export-Daten").Select
Cells(intRow, intTab + 7).Select
ActiveSheet.Paste

Else

MsgBox (intRow & "Leer")
End

End If

Next intRow
Next intTab
End Sub

Klaus-Dieter
24.08.2017, 07:47
Hallo,

hat jetzt nicht direkt mit deiner Frage, (die ich nicht wirklich verstanden habe) zu tun, aber so kannst du den Quelltext optimieren:

'--------------------------------------------------'
'Einfügen: mID'
'--------------------------------------------------'

Sheets("Export-Daten").Cells(intRow, 2) = Sheets("Wichtige Hinweise").Cells(7, 3)

Klaus-Dieter
24.08.2017, 11:30
Hallo,

hier der gesamte Quelltext in der optimierten Fassung. Dein eigentliches Problem bitte noch mal genauer beschreiben.

Option Explicit

Sub export2()

Dim intRow As Integer
Dim intTab As Integer
For intTab = 1 To 12
For intRow = 9 To 30
If Sheets("aktuell").Cells(intRow, 2).Value <> "" Then

'--------------------------------------------------'
'Einfügen: mID'
'--------------------------------------------------'
Sheets("Export-Daten").Cells(intRow, 2) = Sheets("Wichtige Hinweise").Cells(7, 3)

'--------------------------------------------------'
'Einfügen: Fachabteilung'
'--------------------------------------------------'

Sheets("Export-Daten").Cells(intRow, 3) = Sheets("aktuell").Cells(intRow, 2)
'--------------------------------------------------'
'Einfügen: Datum'
'--------------------------------------------------'
Sheets("Export-Daten").Cells(intRow, 3).Value = "01." & intTab & ".2000"

'--------------------------------------------------'
'Einfügen: aktuelle ap'
'--------------------------------------------------'
Sheets("Export-Daten").Cells(intRow, intTab + 4) = Sheets("aktuell").Cells(intRow, 3)

'--------------------------------------------------'
'Einfügen: Ziel ap'
'--------------------------------------------------'
Sheets("Export-Daten").Cells(intRow, intTab + 5) = Sheets("Ziele").Cells(intRow, 3)

'--------------------------------------------------'
'Einfügen: aktuelle YTD'
'--------------------------------------------------'
Sheets("Export-Daten").Cells(intRow, intTab + 6) = Sheets("aktuell").Cells(intRow, 16)

'--------------------------------------------------'
'Einfügen: Ziel YTD'
'--------------------------------------------------'
Sheets("Export-Daten").Cells(intRow, intTab + 7) = Sheets("Ziele").Cells(intRow, 16)

Else

MsgBox (intRow & "Leer")
End

End If

Next intRow
Next intTab
End Sub

RaynAnderson
25.08.2017, 08:13
Vielen Dank für deine Hilfe, es hat mich auf den richtigen weg gebracht :o)
Ich habe meine fertigen Code gleich mal hinzugefügt, wenn jemand das kleiche Problem haben sollte :o)

Jetzt hätte ich noch eine Frage:

- wie kann ich in Excel-VBA einen Integer der einen Wert z.B. 9 hat als 09 darstellen (also immer zweistellig)?

- wie kann ich in der Zeile
"Sheets("Export-Daten").Cells(intRow, intTab + 7) = Sheets("Ziele").Cells(intRow, 16)"
den Wert so darstellen, dass aus einee Währung z.B. 1.444.555,23 ein 1444555.23 Wert wird?

- Letzte Fragen: Wie kann ich einen Zellen-Bereich im CSV-Format mit ";"-Trenner exportieren?


Sorry meine 1.000 Fragen, kannst du mir da weiterhelfen?



Sub DataExportCSV()

Dim intRow As Integer
Dim intTab As Integer
Dim zeile As Integer
Dim ap As Integer
Dim jahr As Integer


Sheets("Export-Daten").Select
Range("B8:H2000").Select

Selection.ClearContents
Range("B8").Select




zeile = 8
jahr = Sheets("Wichtige Hinweise").Cells(8, 3)

For ap = 0 To 11
For intRow = 9 To 200
If Sheets("aktuell").Cells(intRow, 2).Value <> "" Then
Sheets("Export-Daten").Cells(zeile, 2) = Sheets("Wichtige Hinweise").Cells(7, 3)
Sheets("Export-Daten").Cells(zeile, 3).Value = "01." & (ap + 1) & "." & jahr
Sheets("Export-Daten").Cells(zeile, 4) = Sheets("aktuell").Cells(intRow, 2)

Sheets("Export-Daten").Cells(zeile, 5) = Sheets("aktuell").Cells(intRow, 2 + ap)

Sheets("Export-Daten").Cells(zeile, 6) = Sheets("Ziele").Cells(intRow, 3 + ap)
Sheets("Export-Daten").Cells(zeile, 7) = Sheets("aktuell").Cells(intRow, 16 + ap)
Sheets("Export-Daten").Cells(zeile, 8) = Sheets("Ziele").Cells(intRow, 16 + ap)
zeile = zeile + 1
End If
Next intRow
Next ap
End Sub

RaynAnderson
26.08.2017, 15:58
Kannst du mir helfen?



Jetzt hätte ich noch eine Frage:

- wie kann ich in Excel-VBA einen Integer der einen Wert z.B. 9 hat als 09 darstellen (also immer zweistellig)?

- wie kann ich in der Zeile
"Sheets("Export-Daten").Cells(intRow, intTab + 7) = Sheets("Ziele").Cells(intRow, 16)"
den Wert so darstellen, dass aus einee Währung z.B. 1.444.555,23 ein 1444555.23 Wert wird?

- Letzte Fragen: Wie kann ich einen Zellen-Bereich im CSV-Format mit ";"-Trenner exportieren?


Sorry meine 1.000 Fragen, kannst du mir da weiterhelfen?

Hajo_Zi
26.08.2017, 16:04
formatiere die Zelle entsprechend. Damit es eine Zahl bleibt.
Benutze Makrorecorder.

Zu CSV keine Aussage, das ist nicht mein Gebiet.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

smithcarlos
27.08.2017, 12:54
i have a error in
infor loop