Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1296to1300
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
Wert um eins erhöhen
06.02.2013 11:45:05
Thomas
Hallo zusammen,
ich versuche mich an unten stehenden Code.
Es soll so funktionieren, dass wenn man in der Spalte B (Zeilen 13 bis 309) einen Wert größer 1 eingibt, in der Spalte A in der entsprechenden Zeile um 1 erhöht wird.
Vielen Dank!
Gruß
Thomas
Private Sub Worksheet_Change(ByVal Target As Range)
For i = 13 To 309
If Cells(i, 2) > 1 Then
Was muss hier stehen, damit die Zelle in Spalte A um eins erhöht wird?
End If
Next i
End Sub

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert um eins erhöhen
06.02.2013 12:08:54
Matze
Hallo Thomas,
Cells(i, 1).Value = Cells(i, 1).Value + 1
Matze

AW: Wert um eins erhöhen
06.02.2013 12:17:50
Thomas
Hallo Matze,
wenn ich deine Zeile einsetzen, dann läuft eine Art "Endloszähler" in der Zelle.
Gruß
Thomas

Das geht zB so, ...
06.02.2013 12:18:47
Luc:-?
…Thomas;

Private Sub Worksheet_Change(ByVal Target As Range)
Const adTgBer$ = "B13:B309"
If Not Intersect(Target, Me.Range(adTgBer)) Is Nothing And Target > 1 Then
With Me.Cells(Target.Row, 1)
.Value = .Value + 1
End With
End If
End Sub
Denn Target repräsentiert die geänderte Zelle.
Gruß Luc :-?

Events abschalten! owT
06.02.2013 12:23:05
Rudi

Anzeige
Nachtrag: Wenn man nicht ...
06.02.2013 12:25:26
Luc:-?
…unnötigerweise die Prozedur noch einmal aufrufen lassen will, Thomas,
muss man vor With … End With Application.EnableEvents = False und danach Application.EnableEvents = True hinzufügen.
Luc :-?

AW: Das geht zB so, ...
06.02.2013 13:00:35
Thomas
Hallo,
mit dieser Lösung:

Private Sub Worksheet_Change(ByVal Target As Range)
Const adTgBer$ = "B13:B309"
If Not Intersect(Target, Me.Range(adTgBer)) Is Nothing And Target > 1 Then
With Me.Cells(Target.Row, 1)
.Value = .Value + 1
End With
End If
End Sub
bekomme ich in der Spalte A immer nur den Wert 1
Es soll so sein:
A13 1
A14 2
A15 3
usw.
Gruß
Thomas

Anzeige
AW: Das geht zB so, ...
06.02.2013 13:05:54
Matze
Hallo Thomas,
damit sollten auch mehrfach eingaben in spalte 2 machbar sein.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
Dim Basis As Range
Dim Zelle As Range
Dim Loletzte&
Loletzte = Cells(Rows.Count, 2).End(xlUp).Row
Set Basis = Intersect(Range("B2:B" & Loletzte), Target)
If Not Basis Is Nothing Then
Application.EnableEvents = False
For Each Zelle In Basis
i = Zelle.Row
If IsNumeric(Zelle) And IsNumeric(Cells(i, 1)) Then
Cells(i, 1) = Cells(i, 1).Value + 1
Zelle.Calculate
End If
Next Zelle
Application.EnableEvents = True
End If
Set Basis = Nothing
End Sub
Matze

Anzeige
OJE hab das >1 völlig vergessen,..übel
06.02.2013 13:08:32
Matze
,...ohne Worte,...

AW: OJE hab das >1 völlig vergessen,..übel
06.02.2013 13:13:29
Matze
sry,
diese Ziele: If IsNumeric(Zelle) And IsNumeric(Cells(i, 1)) Then
gegen diese: If IsNumeric(Zelle) And Zelle > 1 Then
ersetzen, Matze

Was du jetzt schreibst entspricht nicht ...
06.02.2013 13:10:48
Luc:-?
…der ursprünglichen Aufgabenstellung, so wie sie normalerweise verstanden wdn musste, Thomas!
Von flfd Zeilennummerierung war nicht die Rede, nur von Erhöhen der jeweiligen Zelle um 1. Das leistet die Prozedur!
Eine flfd Nummerierung erzeugt man idR nicht über ein Change-Ereignis, das ist mit Zellfmln viel einfacher. Da du hier ja wohl VBA üben willst, solltest du dich entscheiden, ob du die flfd Zeilennummerierung mittels einer Schleife, oder das Wirken einer Ereignisprozedur üben willst. Für Letzteres ist deine Aufgabenstellung ungeeignet.
Luc :-?

Anzeige
AW: Was du jetzt schreibst entspricht nicht ...
06.02.2013 13:14:18
Thomas
Hallo Luc,
tut mir leid, dann habe ich mich falsch Ausgedrückt.
Aber das ist es was ich will, eine laufende Nummerierung.
Gruß
Thomas

AW: Was du jetzt schreibst entspricht nicht ...
06.02.2013 13:26:24
Matze
Hallo Thomas,
das ist eine andere Aufgabenstellung wie Luc schon schrieb.
Sollen wir das jetzt so verstehen?
Wenn du ZB.: in B100 einen Wert größer 1 eingibst, das die Zellwerte ab A13-A309 sich um 1 erhöhen
Oder ab der Eingabezeile A100 = Altwert + 1,...A101= Altert +1 ?
Die Werte oberhal ändern sich dann nicht? A13-A99 ?

AW: Was du jetzt schreibst entspricht nicht ...
06.02.2013 13:35:05
Thomas
Hallo Matze,
ich hatte ursprünglich mal in A13 den Wert 1 stehen und in A14 dann die Formel
WENN(B14>=1;A13+1;"")

Nur diese Formel wollte ich nun mit VBA lösen.
Gruß
Thomas

Anzeige
AW: Was du jetzt schreibst entspricht nicht ...
06.02.2013 13:57:38
Matze
Thomas,
die Formel würde aber mit Fehlerwerten weiterarbeiten, wenn in Spalte B13:B309 ein Wert < 1 vorkommt.
Du hast meine Frage auch nicht beantwortet.Wir gehen immer noch davon aus das sich Zellwerte
in Spalte B "ändern" .
Matze
anfangs >1 jetzt >=1 du weist echt was du willst?

AW: Was du jetzt schreibst entspricht nicht ...
06.02.2013 14:09:01
Thomas
Hallo Matze,
es soll davon unabhängig sein, welcher Wert in B13 steht
Die erste Zeile ist 13.
In A13 steht bereits eine 1. Trägt man jetzt in B14 einen Wert ein, so soll in A14 die 2 erscheinen.
Trägt man in B15 einen Wert ein, soll in A15 die 3 erscheinen usw.
Gruß
Thomas

Anzeige
- ich bin raus,..
06.02.2013 14:23:19
Matze
Thomas,
wenn du mit deiner Formel zufieden bist arbeite damit, aber:
<b>was soll denn passieren </b>wenn in B14 eine 0 oder -10 eingetragen wird?
Deine Formel >=1 geht dann nicht. Du antwortest nicht auf meine Fragen;
ich bin dann raus.
Matze

Und was hätte dann in A15 gestanden? owT
06.02.2013 14:34:57
Luc:-?
:-?

AW: Und was hätte dann in A15 gestanden? owT
06.02.2013 14:43:26
Thomas
ich hätte die Fromel runter kopiert, so wäre in A15 gestanden
Wenn(B15>=1;A14+1;"")

Aha, siehe da! Und wenn du das ...
06.02.2013 15:03:40
Luc:-?
…so wie von dir per VBA geplant mit Eintrag einer Zahl in B15 erhöhen wolltest, Thomas,
und weder in A14 noch in A15 steht etwas (weil zB auch in B14 nichts eingetragen wurde), wie soll dann in A15 3 erscheinen?
Deine Idee, einen Zeilenzähler per VBA einzurichten, bist du falsch angegangen! Wie beim Formel-Herunterziehen kommt es hierbei auf die Kontinuität an. Zwar war die Lösung mit der Schleife im Prinzip nicht falsch, aber der Auslöser und die Rahmenprozedur passen nicht so recht dazu.
Wolltest du mit dem Ereignis arbeiten und in A15 soll immer 3 erscheinen, egal ob in A13:A14 etwas steht, muss nicht addiert, sondert die Zeilendifferenz eingetragen wdn! Also anstelle des With-Konstrukts noch einfacher Target.Offset(0, -1) = Target.Row - 12 !
Gruß Luc :-?

Anzeige
AW: Aha, siehe da! Schon gehts...
06.02.2013 15:12:56
Thomas
Danke euch allen, besonders Luc ;o)

Na dann weiter viel Erfolg! Gruß owT
06.02.2013 15:53:02
Luc:-?
:-?

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige