Oder Du errechnest den Bereich mit Index(A2:index(A:A;Anzahl2(A:A))) oder …
Das ist jetzt nicht persönlich gemeint: Viel zu häufig wird VBA als Allzweckwaffe missbraucht, obwohl es eher das Skalpell sein sollte, wenn der Vorschlaghammer nix bringt.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
@Ralf: Danke schon mal. Wenn ich es ohne VBA lösen kann, kannst du mir da eine Hilfestellung geben mit der INDEX-Funktion. Ich weiß gerade nicht recht wie ich diese aufbauen soll in Kombination mit der Index-Funktion. Im Prinzip würde es ja auch mit VBA-Code funktioneren, da dürfte doch nur ein kleiner Denkfehler drinen sein, oder?
@BoskoBiati: Mein Code ist ziemlich lang, mir ging es jetzt primär darum, dass er funktioniert, da die Tabelle bald fertig gestellt werden muss. Da ich noch recht neu hier bin fehlt mir an manchen Stellen das Wissen. Wenn ich nun versuche deine Formeln zu kopieren, funkioniert es bei mir nicht. Hast du eine Idee, woran das liegen könnte?
wie Du aus meinem Tabellenausschnitt entnehmen kannst, funktionieren die Codes, bis auf den letzten, nur mit vollständig gefüllten Zeilen. Sollte es freie Felder geben müsste man die anderen Codes abwandeln:
Jetzt habe ich eine Frage bezüglich des Aufbaus. Ich habe eine Excel-Liste mit verschiedenen Spalten, wobei die Spalte P, sowie die Spalten T-Y manuell geändert werden können/sollen. Alle Daten werden anfangs aus zwei anderen Usprungsdateien gelesen. Durch das Verändern der Daten sollen Berechnungen angestoßen werden, wie beispielsweise die Spalte R bzw. LB %:
Code:
Sub LBProzentrechnen() Dim Zeile As Integer
Zeile = 3
Set book = ActiveWorkbook
With book.Worksheets("Gehaltsdaten")
While (.Cells(Zeile, 1) <> "")
If (.Cells(Zeile, 25) <> "") Then .Cells(Zeile, 18).Value = Cells(Zeile, 19) * 0.9375 Else .Cells(Zeile, 18).Value = Cells(Zeile, 19) * 1.0714 End If
.Cells(Zeile, 18).NumberFormat = ("0.00")
Zeile = Zeile + 1
Wend
End With
End Sub
Ich habe es anfangs mit Workbook_Change und der Intersect-Methode versucht, jedoch kam es dabei durch die zunehmende Anzahl an Berechnungen (etwa 10) zu Konflikten, bzw. das Programm wurde nicht immer aufgerufen. Beispielsweise funktioniert bei einer Funktion Berechnung, sobald ich jedoch die 2. Funktion nach dem Prinzip einpflege, funktioniert die Berechnung nicht mehr. Nach dem Einpflegen zweier Funktionen sieht der Code folgendermaßen aus:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("T3:Z3000")) Is Nothing Then
Target.Interior.ColorIndex = 6
End If
If Not Intersect(Target, Range("P3:P3000")) Is Nothing Then
Target.Interior.ColorIndex = 6
End If
If Not Intersect(Target, Range("T3:Y50")) Is Nothing Then
Dim sourceline, destinationline As Integer Dim Pfad As String Dim Help1, Help2, Help3, Help4, Help5, Help6 As Integer Dim Summe As Integer
destinationline = 3 sourceline = 3
While (Cells(destinationline, 1) <> "")
If Cells(sourceline, 20) = "" Then GoTo Sprung If Cells(sourceline, 20) = "A" Then Help1 = 0 If Cells(sourceline, 20) = "B" Then Help1 = 2 If Cells(sourceline, 20) = "C" Then Help1 = 4 If Cells(sourceline, 20) = "D" Then Help1 = 6 If Cells(sourceline, 20) = "E" Then Help1 = 8 If Cells(sourceline, 21) = "A" Then Help2 = 0 If Cells(sourceline, 21) = "B" Then Help2 = 2 If Cells(sourceline, 21) = "C" Then Help2 = 4 If Cells(sourceline, 21) = "D" Then Help2 = 6 If Cells(sourceline, 21) = "E" Then Help2 = 8 If Cells(sourceline, 22) = "A" Then Help3 = 0 If Cells(sourceline, 22) = "B" Then Help3 = 1 If Cells(sourceline, 22) = "C" Then Help3 = 2 If Cells(sourceline, 22) = "D" Then Help3 = 3 If Cells(sourceline, 22) = "E" Then Help3 = 4 If Cells(sourceline, 23) = "A" Then Help4 = 0 If Cells(sourceline, 23) = "B" Then Help4 = 1 If Cells(sourceline, 23) = "C" Then Help4 = 2 If Cells(sourceline, 23) = "D" Then Help4 = 3 If Cells(sourceline, 23) = "E" Then Help4 = 4 If Cells(sourceline, 24) = "A" Then Help5 = 0 If Cells(sourceline, 24) = "B" Then Help5 = 1 If Cells(sourceline, 24) = "C" Then Help5 = 2 If Cells(sourceline, 24) = "D" Then Help5 = 3 If Cells(sourceline, 24) = "E" Then Help5 = 4 If Cells(sourceline, 25) = "A" Then Help6 = 0 If Cells(sourceline, 25) = "B" Then Help6 = 1 If Cells(sourceline, 25) = "C" Then Help6 = 2 If Cells(sourceline, 25) = "D" Then Help6 = 3 If Cells(sourceline, 25) = "E" Then Help6 = 4
If Not Intersect(Target, Range("S3:S50")) Is Nothing Then
Dim Zeile As Integer
Zeile = 3
While (Cells(Zeile, 1) <> "")
If (Cells(Zeile, 25) <> "") Then Cells(Zeile, 18).Value = Cells(Zeile, 19) * 0.9375 Else Cells(Zeile, 18).Value = Cells(Zeile, 19) * 1.0714 End If
Cells(Zeile, 18).NumberFormat = ("0.00")
Zeile = Zeile + 1
Wend
End If
End Sub
Gibt es dabei eine generelle Empfehlung wie man allgemein Formeln einpflegt und dabei automatisch erkannt wird, wie viele Zellen gefüllt sind? Dabei muss es keine Lösung über VBA sein.
weißt Du eigentlich, wie sehr es die Helfer ankotzt, wenn man sieht, dass nichts von dem umgesetzt wird, was man anbietet? Ich hatte Dir hier: http://www.clever-excel-forum.de/Thread-...llenwerten schon den Code geändert, aber nichts davon hast Du bei Dir verwendet. Dann mach doch Deinen Sch... alleine!
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Es tut mir leid, es bei mir untergegangen. Ich habe deine Codes nun eingepflegt, erhalte jedoch Fehlermeldungen. Ich werde am Mittwoch morgen (wenn ich das nächste mal auf der Arbeit bin), mir die Sachen wieder anschauen und genauere Auskunft geben.
Ich bin sehr dankbar über deine Hilfe und würde mich freuen, wenn du mir die Sache nicht zu übel nimmst und mir in Zukunft noch den ein oder anderen Tipp geben kannst/wirst. Ich bin leider noch ein Anfänger und verliere manchmal den Überblick.