Clever-Excel-Forum

Normale Version: Dies-alle-Fragen-neu-fragen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Hallo Frank,

wenn ich mir zwei kleine Hinweise erlauben darf.

1. Public-Variablen mußt Du in einem allgemeinen Modul deklarieren, nicht wie bei dir in einem Tabllenmodul.
2. Als Public würde ich die Variablen hier in deinem Beispiel nicht deklarieren, weil Du die Variablen nur im Change-Ereignis benötigst, also so

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Application.EnableEvents = False
    Set Target = Intersect(Target, Range("B6:G9,K6:P9"))
    If Target Is Nothing Or Target.Count > 1 Then Exit Sub
    j = Target.Row
    k = Target.Column + 16
    If Target.Column >= 2 And Target.Column <= 7 Then
        Cells(j, k) = Target
    Else
        For i = 23 To 18 Step -1
            If Cells(j, i) = Target Then
                Cells(j, i) = ""
                Exit For
            End If
        Next
    End If
    Application.EnableEvents = True
    Set Target = Nothing
End Sub
Hallo Stefan
deinen Tipp hab ich verarbeitet, aber das Ergebnis lässt die Rückrunde unangetastet.
Wieso?
Fehler meinerseits oder muss das Modul irgendwie noch mit Button zum laufen gebracht werden.
Sollte doch eigentlich im H.gr. aktiv werden, oder ?
Gruß Frank
Hallo Frank,

ich kann dir nicht ganz folgen, was meinst Du mit der Rückrunde? Und was soll da passieren?

Zitat:Sollte doch eigentlich im H.gr. aktiv werden, oder ?

Eigentlich ja, vielleicht hast Du die Ereignisse abgeschaltet? Prüfe mal das am besten im Direktfenster. Lasse Dir das Direktfenster mit der Tastenkombination STRG + G (oder über Menü - Ansicht) im Editor anzeigen. Klicke in dieses und gebe

Code:
?Application.EnableEvents

ein und drücke die Return-Taste. Welcher Wert wird dir angezeigt? Wahr oder Falsch? Falls es falsch sein sollte, gebe nochmals im Direktfenster

Code:
Application.EnableEvents = True

ein und drücke die Return-Taste. Danach sollten die Ereignisse wieder gestartet werden.
Hallo Stefan
schau bitte nochmals in die Datei Tab1
[attachment=127]
Zitat:ch kann dir nicht ganz folgen, was meinst Du mit der Rückrunde? Und was soll da passieren?
Rückrunde (Hilfsteil R6:W9 wüsste nicht wie anders benennen) wird dank Glausius mit der Hinrunde befüllt, im Mittelteil kommen dann die geworfenen Zahlen hinein.
Der gegebenen Code von Glausius funktioniert gut.
Als ich die Änderung (deine) vornahm, funktionierte es nicht mehr.

Habe deinen Rat befolgt, allerdings mit 1tem Code
siehe Auszug aus Direktfenster
?Application.EnableEvents
Wahr

mit dem Code als Modul
passiert nichts?

erläuter mir deinen Tipp bitte nochmal
Hallo Frank,

das hast Du missverstanden. Der Code ist ein Ereignismakro und das gehört in das Tabellenmodul. Was ich angemerkt hatte, war die Variablendekleration also solche Codezeilen

Code:
Dim k As Integer
'bzw.
Public l As Integer

und was ich meinte. Die Variablen, die als Public deklariert sind, gehören in ein allgemeines Modul.

So hatte ich es vorgesehen

Code:
'in einem Tabellenmodul
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Application.EnableEvents = False
    Set Target = Intersect(Target, Range("B6:G9,K6:P9"))
    If Target Is Nothing Or Target.Count > 1 Then Exit Sub
    j = Target.Row
    k = Target.Column + 16
    If Target.Column >= 2 And Target.Column <= 7 Then
        Cells(j, k) = Target
    Else
        For i = 23 To 18 Step -1
            If Cells(j, i) = Target Then
                Cells(j, i) = ""
                Exit For
            End If
        Next
    End If
    Application.EnableEvents = True
    Set Target = Nothing
End Sub

bzw. die Variante von Glausius unter der Berücksichtigung von der Public-Variablen in einem allgemeinen Modul

Code:
'in einem Tabellenmodul

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Application.EnableEvents = False
    Set Target = Intersect(Target, Range("B6:G9,K6:P9"))
    If Target Is Nothing Or Target.Count > 1 Then Exit Sub
    j = Target.Row
    k = Target.Column + 16
    If Target.Column >= 2 And Target.Column <= 7 Then
        Cells(j, k) = Target
    Else
        For i = 23 To 18 Step -1
            If Cells(j, i) = Target Then
                Cells(j, i) = ""
                Exit For
            End If
        Next
    End If
    Application.EnableEvents = True
    Set Target = Nothing
End Sub

'in einem allgemeinen Modul

Option Explicit

Public i As Integer
Public j As Integer
Public k As Integer

Ein paar Informationen, wo was hingehört findest Du hier.
Hallo Frank,

da hast Du Einiges in Deiner Auflistung falsch gemacht! 2 x ein Change-Ereignis kann Excel nich bewältigen!
Ich habe jetzt den Code bereinigt und dort hin gebracht, wo er hingehört - jetzt läuft es (erst einmal) wieder:
Hallo und Danke an Stefan & Günter

Da ist aber viel durcheinander geworfen worden von mir. Sorry
Bin halt noch nicht so ganz firm mit der Materie (bis das so sein könnte in 15J bin ich RentneR)

Das ist es, so habe ich es mir gedacht.
Konnte nur mit Formeln (wenn überhaupt) das Prob. ein wenig lösen.

Den Link muss ich wohl näher studieren

- wenn Freizeit zu Hauf; ein F.M. in der Nähe wohnen tät - was wäre dann.
Ich als geduldiger Schüler den fachmännischen Ausführungen folgen würde. :s
(natürlich beim Täschen B...)
Hallo Frank,

Sankt Augustin ist mir echt für eine "kühle Blonde" von hier zu weit, wenn ich meine Kinder in Bad Honnef mal längere Zeit "belästige", gäbe es dann schon eher eine Möglichkeit.
Hallo Frank,

entscheide Dich, entweder führst Du Dein Problem hier weiter oder im Clever-Forum! Dort wirst allerdings keine Antwort von mir mehr erhalten!
(01.05.2014, 22:06)Glausius schrieb: [ -> ]entscheide Dich
Hab ich - bleib hier, derweil hier eine schnellere Resonanz erfolgt.
Schuldigung wollt keinen brüskieren (vor den Kopf stoßen)

(01.05.2014, 22:06)Glausius schrieb: [ -> ]Dort wirst allerdings keine Antwort von mir mehr erhalten!
Bin an der weiteren Hilfe/Zusammenarbeit sehr interessiert.
An alle, es ist schwer jemanden zu finden ohne zu ahnen was einen erwartet.
Bin auf weiteres gespannt - ehrlich

Gruß an @ People'z
Seiten: 1 2 3 4