Thema Datum  Von Nutzer Rating
Antwort
20.06.2017 20:01:57 in26
NotSolved
21.06.2017 19:27:39 BigBen
NotSolved
21.06.2017 19:29:25 BigBen
NotSolved
21.06.2017 19:35:13 in26
NotSolved
21.06.2017 20:03:47 BigBen
NotSolved
21.06.2017 20:40:23 in26
NotSolved
Rot Excel Makro: div. Befehle kombinieren
22.06.2017 14:08:55 BigBen
*****
Solved
22.06.2017 17:49:55 in26
Solved

Ansicht des Beitrags:
Von:
BigBen
Datum:
22.06.2017 14:08:55
Views:
565
Rating: Antwort:
 Nein
Thema:
Excel Makro: div. Befehle kombinieren

Hallo,

zum Punkt 1:

Das Feld "Datum" wurde eingetragen, da sich der Datenbereich um eine Spalte verschoben hat.

Das Fehlverhalten wurde beseitigt.

zum Punkt 2:

Reg-Nr. wurde mit aufgenommen in die zu kopierenden Daten

zum Punkt 3:

In die Splte H wird in die Zell-Eigenschaft FormulaR1C1 folgende Formel eingetragen:

=IF(RC[-1]=3300,RC[-3]*1.07,RC[-3]*1.19)

das entspricht für Zelle H2: =WENN(G2=3300;E2*1,07;E2*1,19)

Zitat: Zelle H2 Funktion =Wenn(F3=3300;D2*1,07;D2*1,19)

Hier wird mit F3 eine Zelle in der nächsten Zeile abgefragt. Ich habe es als Tippfehler angesehen.

Falls es dennoch bewusst kein Tippfehler sein sollte, muss die Formel im Code wie folgt angepasst werden:

=IF(R[1]C[-1]=3300,RC[-3]*1.07,RC[-3]*1.19)

das entspricht für Zelle H2: =WENN(G3=3300;E2*1,07;E2*1,19)

Die Spalten haben sich durch das Einfügen der Angabe "Reg-Nr." um eins nach Rechts verschoben.

Hier der komplette VBA-Code:

Option Explicit

Sub AnalyzeAndCopy()
    Dim wsh As Worksheet
    Dim rngChk As Range
    Dim rngData As Range
    Dim wshNew As Worksheet
    Set wsh = ThisWorkbook.Worksheets(1)
    
    ' Von H3 bis Spalte T alles Scannen
    Set rngData = wsh.Range(wsh.Range("H3"), wsh.Cells(wsh.UsedRange.Count + wsh.UsedRange.Top, 24))
    For Each rngChk In rngData.Cells
        If Not rngChk.Value = "" Then
            If wshNew Is Nothing Then
                Set wshNew = CreateNewWorkbook
            End If
            AddNewValue wshNew, rngChk
        End If
    Next
End Sub

Function CreateNewWorkbook() As Worksheet
    Dim wbk As Workbook
    Dim wsh As Worksheet
    
    Set wbk = Application.Workbooks.Add()
    Set wsh = wbk.Worksheets(1)
    
    wsh.Range("A1").Value = "kreditor"
    wsh.Range("B1").Value = "kunde"
    wsh.Range("C1").Value = "Rg-Nr."
    With wsh.Range("D:D")
        .Cells(1, 1).Value = "datum"
        .NumberFormat = "m/d/yyyy"
    End With
    With wsh.Range("E:E")
        .Cells(1, 1).Value = "betrag"
        .NumberFormat = "_-* #,##0.00 [$€-407]_-;-* #,##0.00 [$€-407]_-;_-* ""-""?? [$€-407]_-;_-@_-"
    End With
    
    wsh.Range("F1").Value = "kostenstelle"
    wsh.Range("G1").Value = "gegenkonto"
    
    With wsh.Range("H:H")
        .Cells(1, 1).Value = "brutto"
        .NumberFormat = "_-* #,##0.00 [$€-407]_-;-* #,##0.00 [$€-407]_-;_-* ""-""?? [$€-407]_-;_-@_-"
    End With
    Set CreateNewWorkbook = wsh
End Function

Sub AddNewValue(wshOutSheet As Worksheet, rngMoney As Range)
    Dim rngWrite As Range
    Dim rngKreditor As Range
    Set rngWrite = wshOutSheet.Cells(wshOutSheet.UsedRange.Rows.Count + 1, 1)
    ' Kreditor in Spalte D
    Set rngKreditor = rngMoney.Worksheet.Cells(rngMoney.Row, 4)
    
    ' Kreditor
    rngWrite.Value = rngKreditor.Value
    ' Kunde
    rngWrite.Offset(ColumnOffset:=1).Value = rngKreditor.Offset(ColumnOffset:=1).Value
    ' Reg-Nr.
    rngWrite.Offset(ColumnOffset:=2).Value = rngKreditor.Offset(ColumnOffset:=2).Value
    ' Datum
    rngWrite.Offset(ColumnOffset:=3).Value = rngKreditor.Offset(ColumnOffset:=3).Value
    ' Betrag
    rngWrite.Offset(ColumnOffset:=4).Value = rngMoney.Value
    ' Kostenstelle
    rngWrite.Offset(ColumnOffset:=5).Value = rngMoney.EntireColumn.Cells(1, 1).Value
    ' Gegenkonto
    rngWrite.Offset(ColumnOffset:=6).Value = rngMoney.EntireColumn.Cells(2, 1).Value
    ' Berechnungsformel
    rngWrite.Offset(ColumnOffset:=7).FormulaR1C1 = "=IF(RC[-1]=3300,RC[-3]*1.07,RC[-3]*1.19)"
    ' rngWrite.Offset(ColumnOffset:=7).FormulaR1C1 = "=IF(R[1]C[-1]=3300,RC[-3]*1.07,RC[-3]*1.19)"
End Sub

LG, BigBen


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
20.06.2017 20:01:57 in26
NotSolved
21.06.2017 19:27:39 BigBen
NotSolved
21.06.2017 19:29:25 BigBen
NotSolved
21.06.2017 19:35:13 in26
NotSolved
21.06.2017 20:03:47 BigBen
NotSolved
21.06.2017 20:40:23 in26
NotSolved
Rot Excel Makro: div. Befehle kombinieren
22.06.2017 14:08:55 BigBen
*****
Solved
22.06.2017 17:49:55 in26
Solved