Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
132to136
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
132to136
132to136
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Inhalte löschen

Inhalte löschen
29.06.2002 07:53:14
Rolf ST
Hallo Excel Experten!
Ich möchte die Inhalte in Spalte D löschen.
Ist es möglich, das mir jemand folgendes Makro so ändert, das
nicht bei jeder, gelöschten Zelle die Meldung "falscher Wert kommt" ?

Option Compare Text ' Bei Vergleichen Groß-/Kleinschreibung nicht beachten
Option Explicit

Dim busy As Boolean

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Bereich1 As Range, Bereich2 As Range, Bereich3 As Range
Dim c As Range
Dim col As Integer
Dim AK As String
Application.EnableEvents = False
Application.Calculation = xlCalculationAutomatic
If busy Then Exit Sub ' zum Verhindern des Selbstaufrufens durch VBA-geänderte Zellen

Set Bereich1 = Range("D2:D1000")
Set Bereich2 = Range("E2:E1000")
Set Bereich3 = Range("I2:I1000")

If Intersect(Target, Bereich1) Is Nothing And Intersect(Target, Bereich2) Is Nothing _
And Intersect(Target, Bereich3) Is Nothing Then Exit Sub

busy = True
Application.ScreenUpdating = False

For Each c In Target

If Not (Intersect(c, Bereich1) Is Nothing) Then

If c.Value = "m" Then
col = 2
ElseIf c.Value = "w" Then
col = 3
Else
c.Select
Application.ScreenUpdating = True
MsgBox "Falscher Wert"
Application.ScreenUpdating = False
col = 0
End If

ElseIf Not (Intersect(c, Bereich2) Is Nothing) Then

If Cells(c.Row, 4) = "m" Then
col = 2
ElseIf Cells(c.Row, 4) = "w" Then
col = 3
Else
col = 0
End If

ElseIf Not (Intersect(c, Bereich3) Is Nothing) Then

If (Len(c) > 6 Or InStr(c, " ") <> 0 Or InStr(c, ".") <> 0) Then
c.Select
Application.ScreenUpdating = True
MsgBox "Unzulässiger Wert"
Application.ScreenUpdating = False
End If
col = -1 ' Verhindern des Beschreibens der "AK"-Spalte

End If

If col > 0 Then
AK = ""
On Error Resume Next
AK = Application.WorksheetFunction.VLookup(Cells(c.Row, 5), _
Worksheets("Klasseneinteilung").Range("B2:D150"), col, False)
On Error GoTo 0
Cells(c.Row, 6) = AK
ElseIf col = 0 Then
Cells(c.Row, 6) = ""
End If

Next c
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True

busy = False

End Sub

Vielen Dank für eure Hilfe!

Tschüß
Rolf

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Inhalte löschen
29.06.2002 09:35:28
Hajo_Zi
Hallo Rolf

ich vermute mal Dein Problem kann mann schlecht Nachvollziehen. Du möchtest bestimmt das bei Deiner Zeile
"AK = Application.WorksheetFunction.VLookup(Cells(c.Row, 5), _
Worksheets("Klasseneinteilung").Range("B2:D150"), col, False)"
nicht "falscher Wert kommt" aber da wir alle nicht Deine Verweiswerte haben.

Grundsätzlich hätte ich Deinen Code ein wenig umgestellt. Ein zweites Problem in Deinem Code ist falls mehr als eine Zelle miteinmal ausgefüllt wird, um dieses Problem habe ich mich jetzt nicht gekümmert.

Gruß Hajo

Re: Inhalte löschen
29.06.2002 12:08:22
Rolf St
Hallo Hajo!
Vielen Dank für deine Hilfe!

In Spalte D Tabellenblatt Stammdaten, dürfen nur die Werte, m oder w eingegeben werden.
Es können bis zu 1000 Werte untereinanderstehen.
Die Erste Zeile ist eine Überschrift.
Wenn ich nun zum Beispiel 100 Werte untereinander in Spalte D eingegeben habe und diese für den Beginn einer neuen Abwicklung löschen möche, kommt 100 mal die Meldung: "falscher Wert"

Wäre es möglich, das diese Meldung nicht kommt, wenn ich die Zellen-Inhalte in Spalte D 2:1000 lösche.

Ich hoffe du kannst damit etwas anfangen.

Tschüß
Rolf

Anzeige
Re: Inhalte löschen
29.06.2002 12:20:33
Martin Beck
Hallo Rolf,

ohne Deinen Code im einzelnen nachvollziehen zu wollen folgender Lösungsvorschlag. Schreibe ganz an den Anfang des Codes die Zeile

If IsEmpty(Target) Then Exit Sub

Wenn Du nun den Inhalt irgendeiner(!) Zelle, die natürlich auch im Bereich D2:D1000 liegen kann, löschst, wird die Ereignisprozedur verlassen und der restliche Code nicht ausgeführt. Dadurch entfällt dann auch die von dem Code generierte Fehlermeldung.

Gruß
Martin Beck

Re: Inhalte löschen
29.06.2002 14:18:01
Rolf St
Hallo Martin!
Vielen Dank für deine Hilfe, funktioniert leider nicht
Die Meldung kommt immer noch.

Tschüß

rolf

Anzeige
Re: Inhalte löschen
29.06.2002 19:30:08
Martin Beck
Hallo Rolf,

bei meinen Tests mit einem einfachen Beispiel ging's. Hast Du die Zeile vor

Application.EnableEvents = False

eingefügt? Der Sinn dieser Zeile ist mir auch nicht so klar, da Du ja damit die Ereignisse ausschaltest.

Gruß
Martin Beck

Re: Inhalte löschen
30.06.2002 00:08:59
Rolf St
Hallo Martin,
leider funktioniert es bei meinem Makro nicht.

Tschüß
Rolf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige