Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
912to916
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
912to916
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

vba Excel2000 überprüfen nach Inhalt

vba Excel2000 überprüfen nach Inhalt
12.10.2007 16:17:57
Franz
Hallo Spezialisten,
kann mir jemand helfen?
In Zelle B9 habe ich die Möglichkeit mit Daten/liste/eine zahl einzugeben.
Jetzt soll die Zahl 3 sein, zwei Zellen weiter unten, in der Zelle B11 erscheint dann z1 in B12 z2 und in B13 z3.
Dann benötige ich eine Schleife um bei erneuter Eingabe beispielsweise die Zahl 2 z1 und z2 erscheint der andere Wert soll gelöscht werden und andere Eingaben müssen auch gelöscht werden.
Das ist hoffentlich nicht zu kompliziet.
Danke fürt die Hilfe

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba Excel2000 überprüfen nach Inhalt
12.10.2007 16:32:00
Thomas
Lösung mit Funktionen:

=WENN(ZEILE()-ZEILE($B$11)


Voraussetzung: wie du gesagt hast, die Zahl steht in B9. Kopiere diese Formel in B11 und alle darunter in Frage kommenden Zellen. Dann müsste es gehen...
Gruß,
Thomas

AW: vba Excel2000 überprüfen nach Inhalt
12.10.2007 16:51:00
fcs
Hallo Namensvetter,
mit folgenem Makro sollte es funktionieren. Makro im VBA-Editor unter der Tabelle einfügen.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Range)
Dim wks As Worksheet, lZeile As Long, dWert As Double, Pruefzelle As Range
Set wks = Me
With wks
Set Pruefzelle = .Range("B9")
lZeile = Pruefzelle.Row + 2 '1. Zeile in der Werte eingefügt werden sollen
iSpalte = Pruefzelle.Column 'Spalte in der Werte eingetragen werden sollen
If Target.Address = Pruefzelle.Address Then
'Altdaten löschen
.Range(.Cells(lZeile, iSpalte), IIf(.Cells(.Rows.Count, iSpalte).End(xlUp).Row _


Anzeige
AW: vba Excel2000 überprüfen nach Inhalt
12.10.2007 18:47:00
Franz
Hallo ihr beide,
danke für die spontane Hilfe.
Das VBA ist der Hammer es geht.
Leider verstehe ich diese Befehle nicht .
Grüßle

AW: vba Excel2000 überprüfen nach Inhalt
12.10.2007 19:06:00
Franz
Ich die Prozedur ein zweites mal benutzten aber leider macht das Excel nicht mit.
Grüßle

AW: vba Excel2000 überprüfen nach Inhalt
14.10.2007 10:24:58
fcs
Hallo Franz,
bei dem Ereignismakro "Private Sub Worksheet_Change(ByVal Target As Range)" eines Tabellenblattes bezieht sich Target immer auf die Zelle(n) die gerade geändert wurden.
Deshalb prüft man in dem Makro meistens immer zuerst, ob die geänderte Zelle (Target) in dem Zellbereich liegt, den man bei Wertänderungen überwachen möchte.
Bei einer einzelnen Zelle, so wie in deinem Fall kann man das mit der Zell-Adresse machen. Umfasst der zu überwachende Bereich mehrere zusammenliegende Zellen, dann kann man entweder die Methode "Intersect" verwenden, die prüft ob ein Bereich in einem anderen Bereich liegt oder man vergleicht die Spalten- und/oder Zeilennummer der Target-Zelle mit Vorgabewerten.
Bei den anderen Befehlen ist für dich evtl. die With ... End With-Konstruktion neu. Dies ist eine Programmiererleichterung. Mit der With-Zeile wird das Objekt festgelegt (In meinem Beispiel das Tabellenblatt wks), auf das sich alle Methoden und Eigenschaften beziehen, die bis zur End With Zeile mit einem Punkt als erstes Zeichen beginnen.
Falls du in deinem Tabellenblatt mehrere Zellen in ähnlicher Weise abarbeiten möchtest, dann muss die Prüfung der Zellen anders aufgebaut werden. Ich hab hier "Select Case" gewählt, da diese übersichtlicher/pflegeleichter ist als eine Serie von If-Anweisungen.
In meinem Beispiel hab ich zwei Fälle eingebaut.
Bei einer Änderung in B9 werden Werte in Spalten B und C eingetragen, bei Anderung in Zelle D9 werden Werte in Spalte D eingetragen.
Das muss du jetzt an deine Wünsche anpassen. Das Ausfüllen der Zellen hab ich in eine Sub-Routine ausgelagert, damit die Zeilen im Hauptcode nicht ständig wiederholt werden müssen.
Ich hoffe jetzt kommst du weiter
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Select Case Target.Address
'Werte in Spalten B und C ausfüllen, wenn Wert in B9 geändert wird
Case "$B$9"
Call Eintragen(wks:=Me, lAnzahl:=Target.Value, strText:="z", lZeile:=Target.Row + 2, _
iSpalte:=Target.Column)
Call Eintragen(wks:=Me, lAnzahl:=Target.Value, strText:="Y", _
lZeile:=Target.Row + 2, iSpalte:=Target.Column + 1)
'Werte in Spalte D ausfüllen, wenn Wert in D9 geändert wird
Case "$D$9"
Call Eintragen(wks:=Me, lAnzahl:=Target.Value, strText:="xxx", lZeile:=Target.Row + 2, _
iSpalte:=Target.Column)
'keine Aktionen wenn andere Zellen geändert werden
Case Else
'do nothing
End Select
Application.EnableEvents = True
End Sub
Sub Eintragen(wks As Worksheet, lAnzahl As Long, strText As String, lZeile As Long, _
iSpalte As Integer)
'wks = Tabellenblatt auf dem die Aktion ausgführt wird
'lAnzahl = Wert von Target (zuletzt geänderte Zelle) = Anzahl der auszufüllenden Zeilen
'Text = Text der vor den Ziffern stehen soll
'lZeile = 1. Zeile in der Werte eingefügt werden sollen
'iSpalte = Spalte in der Werte eingetragen werden sollen
Dim lWert As Long
With wks
'Altdaten löschen
.Range(.Cells(lZeile, iSpalte), IIf(.Cells(.Rows.Count, iSpalte).End(xlUp).Row _


Anzeige
AW: vba Excel2000 überprüfen nach Inhalt
14.10.2007 14:36:40
Franz
Dank dir das Ding ist stark. Mit meinen VBA Kenntnissen wäre ich total gescheitert.
Ich habe in B9 die Zahl 3 gewählt und es sind zwei Spalten weiter unten die z1,z2 znd z3 zu sehen.
In der Spalte C11 gebe ich einen Wert ein in C12 und C13. (Formal z1=13cm,z2=10cm usw.)
Ich ändere den Wert in B9 auf 2 so ist der Wert in C13 noch vorhanden, der sollte aber gelöscht sein.
Sorry das ich soviel von dir verlange. Hast du dir diese vba Kenntnisse selber angeeignet?
Danke

AW: vba Excel2000 überprüfen nach Inhalt
14.10.2007 15:30:43
fcs
Hallo Franz,
wie wär es,wenn du deine Problemtabelle hier mal als Beispiel hochlädts. Ich hab keine Lust hier ständig ins Blaue zu programmieren.
In der Tabelle bitte die Eingabe-Zellen kennzeichnen und beschreiben, was wo wann eingetragen bzw. gelöscht werdne soll.
mfg
Franz

Anzeige
AW: vba Excel2000 überprüfen nach Inhalt
14.10.2007 16:10:20
Franz
https://www.herber.de/bbs/user/46759.xls
Sorry das ich dir ärger mache.
Zelle B9 gebe ich den Wert zwei vor und es erscheint z1 und z2. In der Spalte rechts hiervon sind die Angaben für z2und z2. Leider sind vom zuvor eingegebenen Wert noch Eingabe vorhanden

AW: vba Excel2000 überprüfen nach Inhalt
14.10.2007 23:03:54
fcs
Hallöchen nochmal,
du muss die Eintragen-Sub wie folgt anpassen, damit die Einträge in der rechten Nacbarspalte jeweils mit gelöscht werden.
Hoffe die Eingaben für die Stahlbauberechnung funktionieren dann wie gewünscht.
Gruß
Franz

Sub Eintragen(wks As Worksheet, lAnzahl As Long, strText As String, lZeile As Long, _
iSpalte As Integer)
'wks = Tabellenblatt auf dem die Aktion ausgführt wird
'lAnzahl = Wert von Target (zuletzt geänderte Zelle) = Anzahl der auszufüllenden Zeilen
'Text = Text der vor den Ziffern stehen soll
'lZeile = 1. Zeile in der Werte eingefügt werden sollen
'iSpalte = Spalte in der Werte eingetragen werden sollen
Dim lWert As Long, lZeileMax As Long
With wks
'Altdaten löschen
lZeileMax = Application.WorksheetFunction.Max(lZeile, _
.Cells(.Rows.Count, iSpalte).End(xlUp).Row, _
.Cells(.Rows.Count, iSpalte + 1).End(xlUp).Row)
.Range(.Cells(lZeile, iSpalte), .Cells(lZeileMax, iSpalte + 1)).ClearContents
'Werte einfügen
For lWert = 1 To lAnzahl
.Cells(lZeile + lWert - 1, iSpalte) = strText & lWert
Next
End With
Set wks = Nothing
End Sub


Anzeige
AW: vba Excel2000 überprüfen nach Inhalt
15.10.2007 08:36:25
Franz
Danke für deine Hilfe.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige