VBA-Code ändern

Guten Morgen zusammen,

habe hier einen VBA-code vorliegen,den mir Reinhard netterweise erstellt hat.

Im Nachhinein habe ich nun festgestellt,dass ich einen Gedankenfehler gehabt habe. Diesen Code möchte ich nun wie folgt abgeändert haben:

Zunächst mal der Code:

Option Explicit

Sub Berechne(strWas As String, strWo As String)
Dim strZ As String, ZeiS As Long, ZeiP As Long, Zei As Long
Dim rngWo As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Worksheets(„Tabbi“)
Set rngWo = .Range(strWo)
If strWas = „Nix machen“ Then
rngWo.Offset(0, 1).Resize(154, 3).ClearContents
GoTo Ende
End If
rngWo.Offset(0, 1).Resize(152, 3).Value = „“
For Zei = 0 To 150 Step 5
For ZeiS = 0 To 3 Step 1
If Alle(strWas, rngWo.Offset(Zei + ZeiS, 0).Value) = True Then
rngWo.Offset(Zei + ZeiS, 1).Value = 100
End If
Next ZeiS
For ZeiP = 0 To 2 Step 2
'MsgBox Application.Sum(rngWo.Offset(Zei + ZeiP, 0).Resize(2, 1))
If Alle(strWas, Application.Sum(rngWo.Offset(Zei + ZeiP, 0).Resize(2, 1))) = True Then
rngWo.Offset(Zei + ZeiP, 2).Value = 100
End If
Next ZeiP
If Alle(strWas, Application.Sum(rngWo.Offset(Zei, 0).Resize(4, 1))) = True Then
rngWo.Offset(Zei, 3).Value = 100
End If
Next Zei
End With
Ende:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Ich möchte den Code so geändert haben dass er bei F13 beginnt und nicht bei F8. Desweiteren soll er nur jede einzelne Zahl der Spalte F prüfen und nicht wie jetzt, zusätzlich noch F8+F10,F9+F11 bzw. F8-F11,F13-F16 usw.

Die 100 im Code soll er aus einer Zelle(z.B I2) übernehmen.

Habe die Tabelle mal hochgeladen zum besseren Überblick.

http://www.file-upload.net/download-3640580/Versuch…

Sage schonmal Danke im Voraus

Lg Frank

Hallo Frank,

Ich möchte den Code so geändert haben dass er bei F13 beginnt
und nicht bei F8.

Ändere im Modul von Tabelle „Tabbi“ folgenden Code dementsprchend ab:
Private Sub Runde1_Change()
Call Berechne(Runde1.Value, " F8")
End Sub

Desweiteren soll er nur jede einzelne Zahl
der Spalte F prüfen und nicht wie jetzt, zusätzlich noch
F8+F10,F9+F11 bzw. F8-F11,F13-F16 usw.

Schau ich nachher, muß erstma weg.

Die 100 im Code soll er aus einer Zelle(z.B I2) übernehmen.

Ersetze dreinmal in der Prozedur Berechne() die 100 durch
Range(„I2“)

Habe die Tabelle mal hochgeladen zum besseren Überblick.

http://www.file-upload.net/download-3640580/Versuch…

Benutze bitte unbedingt den Pre-Tag.
Auch für die Fragen, d.H. die auch im Vb-Editor schreiben und zeilen umbrechen, Hochkomma vornedran.
Daß macht es viel einfacher.
Das sähe in diesem Fall dann so aus:

Option Explicit

'Ich möchte den Code so geändert haben dass er bei F13 beginnt
'und nicht bei F8.

'Desweiteren soll er nur jede einzelne Zahl der Spalte F prüfen
'und nicht wie jetzt, zusätzlich noch F8+F10,F9+F11 bzw. F8-F11,F13-F16 usw.

'Die 100 im Code soll er aus einer Zelle(z.B I2) übernehmen.

Sub Berechne(strWas As String, strWo As String)
Dim strZ As String, ZeiS As Long, ZeiP As Long, Zei As Long
Dim rngWo As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Worksheets("Tabbi")
 Set rngWo = .Range(strWo)
 If strWas = "Nix machen" Then
 rngWo.Offset(0, 1).Resize(154, 3).ClearContents
 GoTo Ende
 End If
 rngWo.Offset(0, 1).Resize(152, 3).Value = ""
 For Zei = 0 To 150 Step 5
 For ZeiS = 0 To 3 Step 1
 If Alle(strWas, rngWo.Offset(Zei + ZeiS, 0).Value) = True Then
 rngWo.Offset(Zei + ZeiS, 1).Value = 100
 End If
 Next ZeiS
 For ZeiP = 0 To 2 Step 2
 'MsgBox Application.Sum(rngWo.Offset(Zei + ZeiP, 0).Resize(2, 1))
 If Alle(strWas, Application.Sum(rngWo.Offset(Zei + ZeiP, 0).Resize(2, 1))) = True Then
 rngWo.Offset(Zei + ZeiP, 2).Value = 100
 End If
 Next ZeiP
 If Alle(strWas, Application.Sum(rngWo.Offset(Zei, 0).Resize(4, 1))) = True Then
 rngWo.Offset(Zei, 3).Value = 100
 End If
 Next Zei
End With
Ende:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Gruß
Reinhard

Nachtrag Code in w-w-w zeigen
Hallo Frank,

der Grund warum ich das mit Pre-Tag und auch den Zeilenmäig umgebrochenen Fragen sagte/sage ist Folgender.

Mich kostet es nur zwei Klicks dann ist der Code formatiert durch Einrückungen mit Leerzeichen.
Das erhöht sehr die schnelle Lesbarkeit.

So, dann habe ich den Code im VB-Editor in einem Modul.
Grad bei längeren Fragestellungen habe ich dann doch vergessen was genau da wo zu tun ist.

Wenn ich nun die Fragen die un unformatiert in w-w-w eingestellt hast einfach in das Code reinkopiere so erstellt der Editor daraus lange Textzeilen, wo ich seitlich scrollen muß um das zu lesen.
Das macht keine Laune, also brech ich die Zeilen um und zerleg sie in Zeilen die der Editor darstellen kann ohne daß man seitswärts scrollen kann.
Das hochkomma muß ich dabei wohl nicht beschreiben *annehm*

Letztlich ist das für mich verlorene Zeit. Es kostet mich x Minuten.
Jetzt laden sich aber vllt. auch andere Hilfsbereite deinen Code herunter, auch die werden so oder ähnlich vorgehen.
Also entweder die Fragen in das Modul mitreinkopieren und umbrechen
oder aber den Code reinkopieren, dann nochmal in w-w-w umschalten um nochmal die fragestellung zu lesen wenn da mehrere Dinge zu tun sind,
dann eine Frage versuchen zu lösen, dann wieder in w-w-w schauen was denn die zweite Frage war usw.
Alles verlorene Zeit.

Angenommen es sind 10 leute und x ist 3 Minuten so „verplembern“ die dann 30 Minuten für etwas was du in § Minuten locker hättest machen können.

So, jetzt schau ich mal nach deiner dritten Frage…

Gruß
Reinhard

Sub Berechne(strWas As String, strWo As String)
Dim strZ As String, ZeiS As Long, ZeiP As Long, Zei As Long
Dim rngWo As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Worksheets("Tabbi")
 Set rngWo = .Range(strWo)
 If strWas = "Nix machen" Then
 rngWo.Offset(0, 1).Resize(154, 3).ClearContents
 GoTo Ende
 End If
 rngWo.Offset(0, 1).Resize(152, 3).Value = ""
 For Zei = 0 To 150 Step 5
 For ZeiS = 0 To 3 Step 1
 If Alle(strWas, rngWo.Offset(Zei + ZeiS, 0).Value) = True Then
 rngWo.Offset(Zei + ZeiS, 1).Value = Range("G1")
 End If
 Next ZeiS
 For ZeiP = 0 To 2 Step 2
 'MsgBox Application.Sum(rngWo.Offset(Zei + ZeiP, 0).Resize(2, 1))
 If Alle(strWas, Application.Sum(rngWo.Offset(Zei + ZeiP, 0).Resize(2, 1))) = True Then
 rngWo.Offset(Zei + ZeiP, 2).Value = Range("G1")
 End If
 Next ZeiP
 If Alle(strWas, Application.Sum(rngWo.Offset(Zei, 0).Resize(4, 1))) = True Then
 rngWo.Offset(Zei, 3).Value = Range("G1")
 End If
 Next Zei
End With
Ende:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

'So, 3x100 habe gegen Range() ausgetauscht und klappt.
'Ich möchte 5 Leerzeilen in A1 einfügen,aber dann geht der Code nicht.
'If Alle(strWas, rngWo.Offset(Zei + ZeiS, 0).Value) = True Then hier zeigt mir VBA den Fehler,deshalb auch der Anfang in F13 anstatt F8

Hoffe,nun habe ich es richtig gemacht.

Lg Frank

Guten Morgen,

das scheit ja doch ein grösserer Aufwand zu sein den Code abzuändern. Hätt ich nicht gedacht.

Lg Frank

das scheit ja doch ein grösserer Aufwand zu sein den Code
abzuändern. Hätt ich nicht gedacht.

Hallo Frank,

in dieser Mappe die das enthält was du ändern wolltest

ist nachfolgender Code.

Gruß
reinhard

Option Explicit

Sub Berechne(strWas As String, strWo As String)
Dim strZ As String, ZeiS As Long, ZeiP As Long, Zei As Long
Dim rngWo As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Worksheets("Tabbi")
 Set rngWo = .Range(strWo)
 rngWo.Offset(0, 1).Resize(154, 3).ClearContents
 If strWas = "Nix machen" Then GoTo Ende
 For Zei = 0 To 150 Step 5
 For ZeiS = 0 To 3 Step 1
 If Alle(strWas, rngWo.Offset(Zei + ZeiS, 0)) = True Then
 rngWo.Offset(Zei + ZeiS, 1).Value = Range("I2")
 End If
 Next ZeiS
 ' For ZeiP = 0 To 2 Step 2
 ' 'MsgBox Application.Sum(rngWo.Offset(Zei + ZeiP, 0).Resize(2, 1))
 ' If Alle(strWas, Application.Sum(rngWo.Offset(Zei + ZeiP, 0).Resize(2, 1))) = True Then
 ' rngWo.Offset(Zei + ZeiP, 2).Value = Range("I2")
 ' End If
 ' Next ZeiP
 ' If Alle(strWas, Application.Sum(rngWo.Offset(Zei, 0).Resize(4, 1))) = True Then
 ' rngWo.Offset(Zei, 3).Value = Range("I2")
 ' End If
 Next Zei
End With
Ende:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Function Alle(Was As String, ByRef Zelle As Range) As Boolean
Dim intI As Integer, Wert As Integer, intVergleich As Integer
Select Case Was
 Case "Quersumme"
 intVergleich = Tabelle2.Cells(8, Zelle.Column).Value
 For intI = 1 To Len(Zelle.Value)
 Wert = Wert + CInt(Mid(Zelle.Value, intI, 1))
 Next
 Alle = IIf(Wert = intVergleich, True, False)
 Case "Durch"
 intVergleich = Tabelle2.Cells(8, Zelle.Column + 4).Value
 On Error Resume Next 'Wenn intVergleich =Null
 Alle = IIf(Zelle.Value Mod intVergleich = 0, True, False)
 On Error GoTo 0
 Case "Primzahl"
 For intI = 2 To Int(Sqr(Zelle.Value))
 If Zelle.Value Mod intI = 0 Then Exit For
 Next intI
 Alle = intI \> Int(Sqr(Zelle.Value))
 Case Else
 'nix
End Select
End Function

Nachtrag3 zu nachtrag2 *gg*
Hallo Frank,

ich weiß nicht ob ich das war oder du, völlig egal, mach die Formelansicht mit Strg+"#" wieder weg.
Dann stimmen auch die Zellformatierungen links, Mitte usw. wieder.

Gruß
Reinhard

Hallo Reinhard,

wie geil ist das denn? Es funktionieren ja alle 3 Funktionen. Damit habe ich nun überhaupt nicht gerechnet.

Meinen herzlichsten Dank für deine Mühe.

Habe noch eine generelle Frage zu dem Code. Wenn sich jetzt einer(z.B einer der Excel unterrichtet), die Mühe machen würde,diesen Code Zeile für Zeile zu kommentieren, d.h. genau zu erläutern,was jede einzelne Zeile macht,wäre ein Laie wie ich dann eventuell in der Lage, sowas selbst zu kreieren?

Wie du ja weisst,möchte ich den Code in der Tabbi ja noch erweitern. Es ist ja sehr sehr lobenswert,dass hier einem so toll geholfen wird, denke aber nicht,dass es Sinn und Zweck ist,dass andere für einen solch komplexe Codes schreibt.

Möchte mich an dieser Stelle nochmals bei dir bedanken.

Werde mich mit Sicherheit bald wieder melden…fg

Wünsche dir noch einen schönen Tag.

LG Frank

Guten Morgen Reinhard,

habe bei deinem Code leider doch ein Manko festgestellt. Der Code prüft alle Zellen der Spalte F, also auch die leeren,was dazu führt,dass das Endergebnis verfälscht wird und Tische in der Siegerehrungauftauchen,die gar nicht gespielt haben.

Ist es möglich,dass der Code nach Eingabe einer Zahl prüft?

LG Frank

habe bei deinem Code leider doch ein Manko festgestellt. Der
Code prüft alle Zellen der Spalte F, also auch die leeren,was
dazu führt,dass das Endergebnis verfälscht wird und Tische in
der Siegerehrungauftauchen,die gar nicht gespielt haben.
Ist es möglich,dass der Code nach Eingabe einer Zahl prüft?

Hallo Frank,

Füge diese IF-Bedingung zwischen die beiden FOR ein:

 For Zei = 0 To 150 Step 5
 If rngWo.Offset(Zei, 0) = "" Then GoTo Ende
 For ZeiS = 0 To 3 Step 1

Jetzt wird nacheinander F13, F18, F23, usw. abgeprüft ob sie leer sind.

Gruß
Reinhard

Hallo Reinhard,

ist das normal,dass ich erst alle Zahlen in Spalte „F“ eingeben und dann z. B. Primzahl auswählen muss,bevor die Überprüfung startet oder prüft der Code jede Zelle direkt nach der Eingabe?

Lg Frank

Hallo Frank,

wie geil ist das denn? Es funktionieren ja alle 3 Funktionen.
Damit habe ich nun überhaupt nicht gerechnet.

sorry, soll ich das wieder ändern? :smile:))

Habe noch eine generelle Frage zu dem Code. Wenn sich jetzt
einer(z.B einer der Excel unterrichtet), die Mühe machen
würde,diesen Code Zeile für Zeile zu kommentieren, d.h. genau
zu erläutern,was jede einzelne Zeile macht,wäre ein Laie wie
ich dann eventuell in der Lage, sowas selbst zu kreieren?

Du kannst ja deinen Laienzusatnd ändern.
Nimm den Code. Laß dich nicht im geringsten von manchen Codezeilen abschrecken.
Nimm dir Zeile für Zeile vor.
Dann den Curser in den Befehl stellen und F1 drücken oder Befehl in F1 suchen. Lesen, versuchen zu verstehen, ggfs. auch den Zweck warum dieser befehl an dieser Stelle und nicht woanders oder ein anderer Befehl.

Z.B. screenupdating.
Aha, Bildschirmaktiuualisierung aus oder ein.
Dann Calculation checken

Beiden Befehlen ist gemeinsam das sie meist paarweise auftreten.
Denn ihr Zweck ist die Schnelligkeit des Codes zu erhöhen.
Und wenn der Bildschirm aktualisiert wird oder während der Code läuft Berechnungen durch Excel durchgeführt werden so macht das den Code langsam, teste das mal mit 1 Mio Zellen in der der Code was reinschreibt, gar Formeln die berechnet werden o.ä.

Grad bei Calculation ist es wichtig daß sie bei Beendigung des Codes auch wieder auf automatisch gestellt wird.
Deshalb steht das unten auch unterhalb von „Ende:“

Das was du über die befehle weißt schreibst du in den Code mitrein, denn dann kannste das in Wochen noch nachlesen und weißt wieder schnell bescheid.

Jetzt sieht das im Code z.B. so aus:

’ Bildschirmaktualisierung AUS (Schnelligkeit)
Application.ScreenUpdating = False
’ Berechnung auf manuell gestellt (Schnelligkeit)
Application.Calculation = xlCalculationManual

Und wenn dir was unklar ist wie
For zei = 0 To 150 step 5
schreib ruckzuck eine kleine testroutine

sub test()
Dim Zei
For zei = 0 To 150 step 5
msgbox zei
next zei
end sub

Oder .offset(0,1), oder .offset(0,1).resize(154,1)
die kannst du so testen:

sub test()
msgbox Range(„F13“).address
msgbox Range(„F13“).offset(0,1).address
msgbox Range(„F13“).offset(0,1).resize(154,1).address
end sub

(Bei Offset kannste auch mal mit negativen Zahlen für zeile oder Spalte operieren. Übrigens ist Offset ähnlich wie Bereich.verschieben in Excel.

Auf diese Art des llangsamen zeile für zeile verstehenwollens wirst du 60-90% des Codes durchschauen können.
Dann zeige das hier, dann kann man dir bei den Unklarheiten helfen.

Wie du ja weisst,möchte ich den Code in der Tabbi ja noch
erweitern. Es ist ja sehr sehr lobenswert,dass hier einem so
toll geholfen wird, denke aber nicht,dass es Sinn und Zweck
ist,dass andere für einen solch komplexe Codes schreibt.

Auf Dauer nicht, denn dann bleibst du auf ewig abhängig.
So wie du in Excel völlig davon abhängig bist was MS-Funktionen können oder nicht. Maxiimal kannst du durch geschicktes Zusammenlegen von Formeln oder Hilfsspalten mehr aus den MS-Funktionen herausholen.

Mit Vba kannst du diese Excel-Schranken selbst bis zu einem gewissen Punkt beliebig übertreten und bastelst dir Wunschfunktionen.

Gruß
Reinhard

ist das normal,dass ich erst alle Zahlen in Spalte „F“
eingeben und dann z. B. Primzahl auswählen muss,bevor die
Überprüfung startet oder prüft der Code jede Zelle direkt nach
der Eingabe?

hallo Frank,

ja, ist derzeit so.
Soll ich das einbauen?

Übrigens, den Code habe ich so geschrieben daß er auch wie in der Originaltabelle in M13, T13, usw. fuktionieren müßte habe das aber nicht getestet.
Teste halt mal und um sicherzustellen daß wir vom gleichen reden, lade dann halt wieder eine Mappe hoch.
Nimm dazu bitte
http://www.uploadagent.de/
denn ich will die testen ob die gut für die FAQ:2606 ist.

Gruß
Reinhard

Hallo Reinhard,

wenn das kein zu grosser Aufwand ist,wäre es besser,wenn der Code sofort nach Eingabe prüft.

Nachdem ich den Code in die neue Tabbi eingepflegt habe und aus

intVergleich = Tabelle2.Cells(8, Zelle.Column).Value - Tabelle1.Cells gemacht habe,funktioniert der Code.

Meinst du die Tabbi damit,ob sie für FAQ:2606 gut ist?

Ich hatte in einem vorigen Beitrag gefragt, ob ich anhand dieses Codes,wenn er Zeile für Zeile dokumentiert wäre, in der Lage wäre so einen Code mal selber zu basteln.

Gruss Frank

Hallo Frank,

wenn das kein zu grosser Aufwand ist,wäre es besser,wenn der
Code sofort nach Eingabe prüft.

ok, nö, kein großer Aufwand *schätz* Aber manchmal trügt der Schein, mal einfach dann sehe ich es ja.

Nachdem ich den Code in die neue Tabbi eingepflegt habe und
aus

intVergleich = Tabelle2.Cells(8, Zelle.Column).Value -
Tabelle1.Cells gemacht habe,funktioniert der Code.

Interessant. In der mappe auf die ich mich beziehe bzw. die du mir sandtes gibt es aber keine tabelle1.
Übrigens, Tabelle1.Cells ist ein Objekt, es sind alle Zellen von tabelle1, glaub nicht daß man die von einer Zahl abziehen kann :smile:

Die Summe aller Zellen kann man abziehen aber nicht die zellen, geht doch gar nicht.
schreib doch mal
msgbox Tabelle1.Cells.value

GENAU aus diesem Grund schrieb ich ja, wenn du da was probierst in einer mir unbekannten Mappe, gar am Code was änderst so brauche ich da den neuen Code und die Mappe.

Meinst du die Tabbi damit,ob sie für FAQ:2606 gut ist?

Nein, hat mit dir und deiner Mappe Null zu tun, es geht um die genannte Hochladseite. Schonmal auf den Link FAQ:2606 geklickt?
Was siehste da? hochladadressen…

Ich hatte in einem vorigen Beitrag gefragt, ob ich anhand
dieses Codes,wenn er Zeile für Zeile dokumentiert wäre, in der
Lage wäre so einen Code mal selber zu basteln.

Das ist zu vage um es mit ja oder nein zu beantworten.
Angenommen ich hätte jetzt den letzten Code Zeile für zeile auskommentiert.

Ich bezweifle äußerst stark daß dann jmd. der sich mit Vba sehr wenig auskennt diesen Code wiederum so abändern kann sodaß er das zuerst von dir verlangte, also nicht nur F13-FF16 einzeln abzbrüfen s0ndern auch F13:F14 zusammnen, F15:F16 zusammen, F13:F17 zusammen.

Dies kann er mit sehr guten Chancen selbst wenn er vorher den vorhanden Code auch 90%-komplett verstanden hat.
Also riet ich dir daß du versuchst selbst den Code zu kommentieren was ja letztlich bedeutet Vba zu lernen. Also ein andere Ansatz aber an sich das Gleiche, versuche den Code zu verstehen.

Noch was, aber setzt das mal auf deine Agenda für irgendwann später wenn du fitter in Vba wurdest durch beschäftigen mit Vba und laß dich jetzt davon nicht beirren.
Mein Code ist absolut unvollständig.
Da fehlt eine saubere, möglichst Alles bedenkende auch das Unerwartete Fehlerbehandlungsroutine.
Ohne die siehst du keinen Proficode.

Aber sowas, wie auch die Auskommentierung von Codezeilen sprengt gewaltig den Rahmen eines Fragenbeantwortungsforums wie w-w-w oder andere.
Ich denke ich mach schon mehr als sonst üblich. Naja, bin halt ein shrer guter Mensch aber da ich nicht den Himmel will sondern eher nach Soddum und Gomorrha juckt es mich grad gewaltig in den Fingern einem Neumitglied bei w-w-w der hier unhöflich auftaucht, gleich MP macht und gleich pampig wird gewaltig mit OT was zu antworten.
Was mir dann wieder eine Löschbenachrichtigung einbringen wird *lächel*
Wenn du etwas was nicht mit Excel nicht verstehst so vergiss es einfach, ist dann ein Selbstgespräch von mir.

Für dich ist wichtig zu wissen, wenn du dich nicht mit Vba beschäftigst so kannst du auch keinen und sei er noch so gut auskommentiert, Code abändern sodaß er etwas machen soll was ein bißchen anders ist als die ursprüngliche Aufgabe.

Peanuts, wie aus
For X = 1 to 100
dann
For X = 1 to 200
zu machen geht natürlich.

Aber den Geamtzusammenhang meines Codes (der übrigens für einen Anfänger gar nicht einfach ist) zu durchschauen mußt du ihn schon verstehen und das auch ohne Kommentierung.
Fragen wie z.B. warum klappt der gleiche Code für mehrere Spaltenbereiche, also für mehrere Runden wo entweder F13, oder M13 die Ausgangszelle ist!

Und da steckt die lösung im Zusammenspiel von Codeaufrufen im Modul des Blattes und der prozedur Berechne die dann die Prozedur Alle aufruft wie ein zahnrad in ein anderes greift.
Du mußt quasi für den Gesamtblick jedes zahnrad genau kennen und dann auch noch das Zusammenspiel der zahnräder durchschauen.

Erst dann kannste dieses Zahnradgetriebe nachbauen, abändern.

Gruß
Reinhard

wenn das kein zu grosser Aufwand ist,wäre es besser,wenn der
Code sofort nach Eingabe prüft.

Hallo Frank,

ich habe das eben gebastelt.
Setze es in das Modul von „Tabbie“ der mappe die ich dir zuletzt hochlud, oder du mir. Komm grad durcheinander :smile:

Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, Range(„F13:F200“))
If Target Is Nothing Then Exit Sub
Application.EnableEvents = False
Call Berechne(Tabelle2.OLEObjects(„Runde“ & 1).Object.Value, „F13“)
Application.EnableEvents = True
End Sub

Es ist jetzt nur für Spalte F gültig. Aber wenn du genau schaust und
gezielt auf („Runde“ & 1) achtest siehst du daß da schon alles für Runde2, Runde3 usw vorbereitet ist.

Gruß
Reinhard

Hallo Reinhard,

Interessant. In der mappe auf die ich mich beziehe bzw. die du
mir sandtes gibt es aber keine tabelle1.
Übrigens, Tabelle1.Cells ist ein Objekt, es sind alle Zellen
von tabelle1, glaub nicht daß man die von einer Zahl abziehen
kann :smile:

Das ist ganz leicht zu erklären. Auf Anraten von euch habe ich die Tabelle von Grund auf neu erstellt. Dabei habe ich mit der „Tabbi“ begonnen und dann erst den Tunierbericht erstellt. Somit ist „Tabbi“ nunmehr Tabelle 1 und der Turnierbericht Tabelle 2. Also entgegen der ursprünglichen Tabelle.

Habe versucht den letzten Code einzufügen,aber da schon eine Private Sub Worksheet_SelectionChange(ByVal Target As Range) vorhanden ist streikt Excel bei mir. Auch in der von dir hochgeladenen Tabelle scheint er nicht so zu machen. Leerzellen bekommen immer noch den Bonus,bevor ein Wert eingegeben worden ist.

Wenn es kein grosser Aufwand ist habe ich mir das so vorgestellt:

Funktion auswählen(z.B Primzahl),Bonus eingeben dann die Werte in entsprechende Zellen der Spalte F und nach jeder Eingabe soll geprüft werden.

Habe meine Tabelle mal hochgeladen.

http://www.uploadagent.de/show-175948-1313091889.html

Gruss Frank