Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1800to1804
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Schleife & IF Bedingungen

VBA Schleife & IF Bedingungen
19.12.2020 14:34:11
David
Hallo zusammen,
folgendes Poblem: ich habe zwei Spalten die zusammengehören, einmal die Noten und einmal die jeweiligen ECTS Punkte. Diese Punkte sorgen für andere Gewichtungen der Noten (Generelle Aufgabe ist den Notendurchschnitt berechnen). Dabei gibt es eine Vielzahl von Fächern/Modulen wobei nicht jedes vom Excel Sheet User belegt wurde. Das Programm muss also erkennen wo eine Note eingetragen wird bzw. drinne steht.
Der Code bisher sieht wie folgt aus:
Sub NoteBerechnen()
Dim Anzahlschwerpunkt As Double
Dim Zelle As Variant
Zelle = 0
Anzahlschwerpunkt = 0
For Each Zelle In Range("D20:D73")
If Zelle.Value = 3 Then
Anzahlschwerpunkt = Anzahlschwerpunkt + 0.5
ElseIf Zelle.Value = 6 Then
Anzahlschwerpunkt = Anzahlschwerpunkt + 1
ElseIf Zelle.Value = 9 Then
Anzahlschwerpunkt = Anzahlschwerpunkt + 1.5
ElseIf Zelle.Value = 12 Then
Anzahlschwerpunkt = Anzahlschwerpunkt + 2
ElseIf Zelle.Value = 0 Then
Anzahlschwerpunkt = Anzahlschwerpunkt + 0
End If
Next Zelle
Debug.Print Anzahlschwerpunkt
End Sub
Der Code tut bisher ja nichts anderes als die Werte in den Zellen D20:D73 abzufragen und dabei je nach Punkten eine andere "Anzahl" zu verteilen bzw. Gewichtung je nach Eintrag in Zeile. Er tut das jedoch für jeden Eintrag. Da die Punkte immer eingetragen sind nur die Noten aber nicht, weis ich nicht wie ich VBA nun erklären soll, dass er den Code nur laufen lassen soll, wenn eine Note in C20:C73 eingetragen ist und wenn dort keine eingetragen ist (bzw. eine null dort steht (habe ich so festgelegt)) er zur nächsten Zeile weitergehen soll und wieder prüfen soll.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Schleife & IF Bedingungen
19.12.2020 15:08:01
onur
Poste die Datei oder gebe PRÄZISE Beschreibungen.
"ich habe zwei Spalten die zusammengehören, einmal die Noten und einmal die jeweiligen ECTS Punkte" ist nicht präzise - WO steht WAS?
z.Z. tut dein Code nix ausser im Direkt- (Debug-) Fenster eine Variable auszugeben.
Was genau soll er machen?
AW: VBA Schleife & IF Bedingungen
19.12.2020 15:19:06
David
C20:C73 sind die Noten und D20:D73 die ECTS Punkte (3,6,9 oder 12/ je nachdem welches Fach es ist unterschiedlich). In B20:B73 steht noch die Beschreibung des Faches. Für jede Note ist bisher eine 0 eingetragen, dies soll der Excel Sheet User dann selbst ändern.
Die ECTS Punkte und Beschreibungen der Fächer sind bereits eingetragen.
Aufbau ist so also bspw: B20= Name des Fachs, C20=die Note dafür D20=die ECTS Punkte dafür
Das Debuggen/Ausgeben diente hierbei nur zu Überprüfung ob es auch wirklich geklappt hat. Später möchte ich mir der Variable Anzahlschwerpunkte weiterrechnen tut aber gerade nichts zur Sache.
Mir geht es nur darum wie ich VBA sagen kann, dass er das diesen Code hier mit den Punkten nur für Fächer ausführen soll, wo eine Note in Spalte C eingetragen ist.
Anzeige
AW: VBA Schleife & IF Bedingungen
19.12.2020 15:09:27
Beverly
Hi David,
einfach alles noch in eine If-Abfrage setzen, ob die Nachbarzelle einen Wert &gt0 enthält:
For Each Zelle In Range("D20:D73")
If Zelle.Offset(0, -1) > 0 Then
If Zelle.Value = 3 Then
Anzahlschwerpunkt = Anzahlschwerpunkt + 0.5
ElseIf Zelle.Value = 6 Then
Anzahlschwerpunkt = Anzahlschwerpunkt + 1
ElseIf Zelle.Value = 9 Then
Anzahlschwerpunkt = Anzahlschwerpunkt + 1.5
ElseIf Zelle.Value = 12 Then
Anzahlschwerpunkt = Anzahlschwerpunkt + 2
ElseIf Zelle.Value = 0 Then
Anzahlschwerpunkt = Anzahlschwerpunkt + 0
End If
End If
Next Zelle


Anzeige
AW: VBA Schleife & IF Bedingungen
19.12.2020 15:12:17
GerdL
Moin,
noch ein Gedicht.
Sub Unit()
Dim Anzahlschwerpunkt As Double
Dim Zelle As Range
For Each Zelle In Range("D20:D73")
If Zelle.Offset(0, -1) > 0 Then
Select Case Zelle.Value
Case 3, 6, 9, 12
Anzahlschwerpunkt = Anzahlschwerpunkt + Zelle.Value / 6
End Select
End If
Next Zelle
Debug.Print Anzahlschwerpunkt
End Sub

Gruß Gerd
AW: VBA Schleife & IF Bedingungen
19.12.2020 15:23:11
David
Vielen Dank euch beiden, sehr hilfreich ! :)

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige