Namens-Frage
#11
Hallo Boris, ich bin jetzt hier: was mach ich falsch?
   


er sagt: Fehler beim Kompilieren.:

Ungültig im Direktbereich.
Antworten Top
#12
Hi,

mit „Klassenmodul“ meinte ich nicht ein separates Klassenmodul. 
Die einzelnen Tabellenblätter sind von Haus aus Klassenmodule. Also Doppelklick auf „Tabelle1“ - und da den Code reinkopieren.
Antworten Top
#13
Danke Boris, es klappt! ...nur, dass das Gelb nicht mitwandert!

ich hab mal dran rumgefummelt, und wollte, das er das Ergebnis immer über die erste Zelle schreibt....

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Application
If Not Intersect(Target, Range("A3:BG3")) Is Nothing Then
.EnableEvents = False
Target.Resize(1, 3).Select

'Range("K1") = WorksheetFunction.Sum(Selection)
Range("Target") = WorksheetFunction.Sum(Selection)
.EnableEvents = True
End If
End With
End Sub

... aber ich krieg sowas zurück: und jetzt geht garnict smehr, die verbindung zwischen arbeitsblatt und dem Programmm scheint unterbrochen. Er frug, ob ich debuggen wolle, wollte ber nicht ...
Antworten Top
#14
Hi,

Range("Target") ist der Grund für den Fehler.
Schau Dir mal die erste Zeile der SelectionChange-Routine an:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Der einzige Parameter dabei ist die Variable Target - die wird dort mit As Range als Objektvariable deklariert, enthält damit den Bereich der aktuellen Selektion im Tabellenblatt und hat somit auch alle notwendigen Eigenschaften.
Folgender Code schreibt nun die Summe der 3 Zellen in Zeile 2 über die erste der 3 Zellen. Ist es das, was Du suchst?

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Application
    If Not Intersect(Target, Range("A3:BG3")) Is Nothing Then
        .EnableEvents = False
        Target.Resize(1, 3).Select
        Rows(2).ClearContents
        Target.Offset(-1, 0) = WorksheetFunction.Sum(Selection)
        .EnableEvents = True
    End If
End With
End Sub
Antworten Top
#15
Danke Boris,

Rows(3).ClearContents
dies löscht die ganze Zeile

was mach ich, wenn er bei Rechtspfeiltaste den Eintrag im Offset machen soll, bei Linkstaste wieder löschen....

   

so funktioniert es jetzt in die eine Richtung, hab paar Sachen umgestellt

jetzt brauch ich noch, dass es, wenn ich die Linkstaste drück, das in der Summe-Zeile die Ergebnisse wieder verschwinden
und dann wäre noch gut, dass ich die beiden werte von Target.Resize meinetwegen in A1 und A2 eingeben könnte.... ich danke Dir von ganzem Herzen ...
Antworten Top
#16
und dann passiert es: ich baue eine Fehler ein, (hier hatte ich geschrieben (sum=(Selektion-5) dann wird die Zeile rot und es erscheint ein Fenster, dann drücke ich auf Debuggen, und von da an geht nichts mehr, ein kleiner gelber Pfeil erscheint im  VBA.Fenster links neben der Zeile im Grauen! 

   
Was muss man diesfalls tun, um die Szene wieder zu aktivieren?
Antworten Top
#17
Hi,

oben in der Bearbeitungsleiste des VBA-Editors gibt es den Button "Zurücksetzen" (blaues Quadrat).
Zu Deinen Zusatzfragen: Lad mal Deine Mappe hoch.
Antworten Top
#18

.xlsm   Mappe1.xlsm (Größe: 12,56 KB / Downloads: 2)
Hier die Mappe
Antworten Top
#19
Hi,

in A1 steht die RowSize (in Deinem aktuellen Fall: 2), in A2 die ColumnSize (aktuell: 5)

Teste mal:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static lngCol As Long
With Application
    If Not Intersect(Target, Range("A4:AZ5")) Is Nothing Then
        .EnableEvents = False
        Target.Resize(Range("A1"), Range("A2")).Select
        If Target.Column < lngCol Then
            Target.Offset(2, 0).Resize(2, 100).ClearContents
        End If
        Target.Offset(2, 0) = WorksheetFunction.Sum(Selection)
        .EnableEvents = True
    End If
End With
lngCol = Target.Column
End Sub
Antworten Top
#20
Danke erst mal. Wenn ich auf Run drücke, Kommt das Fenster "macros", dann drücxk ich "erstellen" und dann kommt eine neues Fenster mit Sub und EndSub. Das will ich nicht, ich will das das Ding läuft---
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste