Ich habe eine Reihe von Subs für verschiedene Kategorien in einer Tabelle, die ich in Excel erstellen. Jedes Sub hat seine eigenen Daten, die es aus verschiedenen flachen Dateien abruft, aber es hat alle die gleiche Endung, die jeden Wert in eine bestimmte Zelle platziert, basierend auf dem Kategorie-Header, auf den er in der Zeile und Spalte ausgerichtet ist. Alles andere ist also die if-Anweisung am Anfang. Gibt es eine Möglichkeit, diesen Codeblock in ein separates Sub oder eine Funktion oder etwas zu setzen und nur einen Aufruf in jedem anderen Sub zu haben, so dass ich ihn nicht ständig eingeben muss/wenn ich es ändern möchte, würde ich es tun muss es nur an einem Ort ändern? Hier ist ein Beispiel für den Code:Gibt es eine Möglichkeit, wiederkehrenden Code in eine Funktion zu platzieren, um von mehreren Subs in VBA aufgerufen zu werden
Dieser Teil ist am Anfang jedes Unter und Änderungen basierend auf den Zeilenkopf
Sub calccategory()
For k = 1 To ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
If Cells(k, 4) = "row 1" Then
Dieser Teil ist der Teil I in einer Funktion oder Unter platzieren möchten, weil es wird jedes Mal
Dim CWS As Worksheet
Workbooks(ThisBook).Activate
For j = 5 To 15
For g = 1 To ActiveSheet.Cells(3, Columns.Count).End(xlToLeft).Column
If Cells(3, g) = "col1" Then
With Range(Cells(k, j * 4 + 2), Cells(k + 1, j * 4 + 4))
On Error Resume Next
CWS.Cells(k, g).Value = col1_n
End With
ElseIf Cells(3, g) = "col2" Then
With Range(Cells(k, j * 4 + 2), Cells(k + 1, j * 4 + 4))
On Error Resume Next
CWS.Cells(k, g).Value = col2_n
End With
ElseIf Cells(3, g) = "col3" Then
With Range(Cells(k, j * 4 + 2), Cells(k + 1, j * 4 + 4))
On Error Resume Next
CWS.Cells(k, g).Value = col3_n
End With
ElseIf Cells(3, g) = "col 4" Then
With Range(Cells(k, j * 4 + 2), Cells(k + 1, j * 4 + 4))
On Error Resume Next
CWS.Cells(k, g).Value = col4_n
End With
ElseIf Cells(3, g) = "col5" Then
With Range(Cells(k, j * 4 + 2), Cells(k + 1, j * 4 + 4))
On Error Resume Next
CWS.Cells(k, g).Value = col5_n
End With
End If
Next g
On Error GoTo 0
Next j
dieser Teil würde mich wieder Teil des Endes jedes Unter und kein Teil dieser Funktion die gleiche sein ich will
End If
Next k
End Sub
Muss der Codeblock, den Sie in einer separaten Funktion haben möchten, irgendwelche Eingaben haben? Warum konntest du das nicht einfach in das eigene Sub einfügen und dann dieses Sub aus deiner Hauptfunktion aufrufen? – BruceWayne
Ich habe versucht, dass - wenn ich das tue, muss ich in den anderen Buchstaben Variablen wie k und j für Schleifen setzen, die den Zweck besiegt und auch nicht auf die richtige Zeile – durba138
Was ist die 'If Cells (k, 4) = row 1 "'? Meinst du, wenn die Zeile, in der sich 'Cells (k, 4)' befindet, Zeile 1? ' – BruceWayne