Hallo an alle, habe mal wieder eine Idee und weiß nicht wie ich sie umsetzen soll.
Folgendes möchte ich machen: Ich möchte Daten aus einer Aktiven Tabelle in eine andere noch zu öffnende Tabelle kopieren/einfügen.
Zuerst mal eine Übersicht wie meine Tabelle aufgebaut ist. In den folgenden Zellen stehen meine Summen, die ich ohne Formel aber mit Verbindung der in Klammern stehenden Positionen in eine andere Excel Tabelle kopieren möchte.
S20 (Materialien); S23 (Übernachtungen); S26 (Verpflegung); S28 (Sonstiges); S30 (Kursgebühren)
S32 (Fremdkosten); S35 (xyz); S37 (abc).
Das ist glaube ich nicht das Problem. Aber ich möchte die Position und Summe nur kopieren(einfügen) wenn auch ein Wert größer als 0 drinsteht.
Die Tabelle wo es hinein kopiert werden soll liegt im Pfad (C:\Users\Desktop\Rechnung.xlsm)
Dort sollen die Positionen (Materialien, Übernachtungen usw) ab Zelle B14 und die dazu gehörigen Summen ab Zelle E14 eingetragen werden. Das bedeutet, wenn zB in S20 20Euro steht soll er mir in meine Rechnung in B14 Materialien schreiben und in E14 20. Steht in S20 0Euro passiert nichts und das Makro sucht die nächste Zelle. Indem Fall also S23, steht dort eine Summe größer als 0 drin fügt er mir in die nächste freie Zelle in B(B14-B29) Übernachtungen ein und in E(E14-E29) die Summe. Das ganze solange bis die 8 Positionen durch sind.
Ich hoffe ich konnte erklären was ich möchte. Ist so etwas machbar?
Als nächsten Schritt (Neues Makro in Rechnung) würde ich dann gerne diese Muster Rechnung umbenennen und hinter den Sheet kopieren aus dem ich die Daten hole. So das meine Muster Rechnung immer dort bleibt
Danke für eure Hilfe
Carsten
Dies ist ein Board, wo man sich gegenseitig Tipps gibt. Vollständige Programme sind nicht Sinn dieser Seite.
Und es handelt sich ja sehr wahrscheinlich um einen Code für deinen Arbeitgeber (oder dich als Unternehmer). Da muss der Arbeitgeber eben Geld in die Hand nehmen und einen professionellen Programmierer beauftragen.
Dein Problem lässt sich sicher lösen, es müsste nur strukturierter beschrieben werden. Und wenn du es selbst versuchen würdest (erst Mal mit dem Makrorekorder aufzeichen, ansehen, ändern, versuchen,…), dann hättest du sicher nur einige kleine Fragen, die wir hier auch beantworten können.
NB Ich nehme keine Programmieraufträge an (bin also an dem Geld des Arbeitgebers nicht interessiert).
Hallo Carsten,
ist machbar, klar. Mir allerdings im Moment zu viel neben meinen bezahlten Aufträge - ich wünsch dir, dass das jemand unentgeltlich in seiner Freizeit machen kann.
lg
Katharina
Hallo Amtsschimmel,
- es ist kein Programm für meinen Arbeitgeber sondern rein eine Spielerei für das Büro meiner Freundin.
- Es geht mir auch nicht um ein fertiges Programm, sondern ich habe nur ausführlich erklärt was ich machen möchte. Mir hätte es schon gereicht wenn zB mir jemand ein Stück Code gegeben hätte wie man zB den Kopiervorgang lösen kann.
- Ich bin bestimmt keiner der ohne zu probieren ein fertiges Programm möchte, oder ohne zu suchen.
- Ich verteile hier auch keine Aufträge
Danke
Carsten
Hallo Katharina, danke für deine Antwort. Nur das du es nicht falsch verstehst, es geht mir nicht um ein fertiges Programm, sondern um die Hilfe bei bestimmten Positionen, wie zB kopiere ich die Daten bei Wert größer 0. Aus den ganzen Antworten bastel ich mir dann schon was zusammen. Ich wollte nur ausführlich erklären was ich machen möchte.
Carsten
Schnipsel Nr. 1:
If Range(„E27“) = 0 Then
… das was dann geschehen soll, wenn in der Zelle E27 0 drinsteht …
Else
… das was andernfalls geschehen soll …
End if
Range(„E27“)=0 steht dabei für eine Bedingung in Form eines Vergleichs. Andere Vergleichsoperatoren als = sind , =, (für „ungleich“).
lg
Vielen Dank Katharina das du noch mal daran gedacht hast. Hab es schon gelöst und schicke es dir mal. Es funktioniert für mich einwandfrei. Vielleicht hast du als Profi aber noch einen Tipp für mich.
Sub Rechnung_fuellenTest()
Application.ScreenUpdating = False
Dim intZelle As Long, intCount As Integer, strText As String
Dim arrZellen As Variant
Dim wkbRechnung As Workbook, wksRechnung As Worksheet
Dim wksAktiv As Worksheet
Dim wksStart As Worksheet
Const strDatei = „C:\Users\Rechnung.xlsm“
'Zellen deren Inhalt übertragen werden soll
arrZellen = Array(„S20“, „S23“, „S26“, „S28“, „S30“, „S32“, „S35“, „S37“)
ActiveSheet.Range(„C2:smiley:2“, „C1“).Copy
Set wksStart = Worksheets(„Startseite“)
wksStart.Range(„P17“).Copy
wksStart.Range(„P18“).Copy
wksStart.Range(„P19“).Copy
wksStart.Range(„P21“).Copy
Set wksAktiv = ActiveSheet
'Rechnungsdatei schreibgeschützt öffnen
Set wkbRechnung = Application.Workbooks.Open(Filename:=strDatei, ReadOnly:=True)
Set wksRechnung = wkbRechnung.Worksheets(„Rechnung“)
'Zellwerte übertragen
intCount = 0
For intZelle = 0 To UBound(arrZellen)
If wksAktiv.Range(arrZellen(intZelle)).Value > 0 Then
wksRechnung.Range(„E14“).Offset(intCount, 0).Value _
= wksAktiv.Range(arrZellen(intZelle)).Value
strText = „“
Select Case intZelle
Case 0: strText = „abc“ 'S20 steht in Verbindung mit abc (feststehender Begriff)
Case 1: strText = „def“ 'S23 steht in Verbindung mit def (feststehender Begriff)
Case 2: strText = „ghi“ 'S26 „alle gleich wie in den ersten beiden beschrieben“
Case 3: strText = „jkl“ 'S28
Case 4: strText = „mno“ 'S30
Case 5: strText = „pqr“ 'S32
Case 6: strText = „stu“ 'S35
Case 7: strText = „vwx“ 'S37
Case Else: strText = „“
End Select
If strText „“ Then
With wksRechnung
wksRechnung.Range(„B14:C14“).Offset(intCount, 0).Value = strText
End With
End If
intCount = intCount + 1
End If
Next
wksRechnung.Range(„E3“) = wksAktiv.Range(„C2“) & „-“ & wksAktiv.Range(„D2“)
wksRechnung.Range(„E7“) = wksAktiv.Range(„C1“)
wksRechnung.Range(„E11“) = wksStart.Range(„P17“)
wksRechnung.Range(„E10“) = wksStart.Range(„P21“)
wksRechnung.Range(„E8“) = wksStart.Range(„P18“)
wksRechnung.Range(„E9“) = wksStart.Range(„P19“)
Application.CutCopyMode = True
Set wksAktiv = Nothing
Set wkbRechnung = Nothing: Set wksRechnung = Nothing
Set wksStart = Nothing
End Sub
Danke dir nochmal das du daran gedacht hast.
Carsten