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

VBA - Skript Probleme

VBA - Skript Probleme
12.10.2003 22:23:43
Daniel
Hallo Allerseits

Ich bin wieder was am rumprobieren, scheitere aber kläglich, vielleicht kann mich ja jemand von den Profis helfen.

Ich versuche ein Skript zu machen, auf Grund, eines das ich bereits habe, aber es geht einfach nicht.

Ich will das wenn in AA10 "A" steht AC10 leer wird - also clear.contents.
Allerdings wenn in AA10 etwas anderes steht bspw. "Details: Sendung eingeben", dann sollte dieser Text drin stehen. Und das gleiche für die Zelle AA11 - AA25 bzw. AC11-AC25


Private Sub Worksheet_Change(ByVal Target As Range)
Dim i%
If Intersect(Target, Range("AA10")) Is Nothing Then Exit Sub
If Target.Value = "A" Then
Range("AC10").ClearContents
Else
Cells(10, 29) = Cells(10, 27)
End If
End Sub


Vielen Dank!!!!!!!!!!!!!!!!!

Daniel.

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Skript Probleme
12.10.2003 22:38:11
Beni
Hallo Daniel,
wenn ich Dich richtig verstanden habe, meinst dieses.
Gruss Beni


Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("AA10")) Is Nothing Then Exit Sub
If Target.Value = "A" Then
Range("AC10").ClearContents
Else
For i = 11 To 25
Cells(i, 27) = [AA10]
Cells(i, 29) = [AA10]
Next i
End If
End Sub

AW: VBA - Skript Probleme
12.10.2003 22:42:37
Daniel
Hi Beni

Nein nicht ganz denn:


Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("AA10")) Is Nothing Then Exit Sub
-> Es sollte sich nicht immer auf AA10 beziehen sondern auf AA10, AA11, AA12 ... AA25
If Target.Value = "A" Then
Range("AC10").ClearContents
--> Nicht immer AC10 sollte leer werden, sondern auch wieder die entsprechende Zeile, also im ersten Fall AC10, dann AC11 ... AC25
Else
For i = 11 To 25
Cells(i, 27) = [AA10]
Cells(i, 29) = [AA10]
--> Cells(i, 29) = Cells(i, 27)
Next i
End If
End Sub


Es tut mir leid, das ich mich nicht genau genug ausgedruckt habe, ist auch schwierig zu erklären. Hoffentlich ist das nicht zu schwer und du kannst mir noch helfen.

Danke.

Daniel.
Anzeige
AW: VBA - Skript Probleme
12.10.2003 22:44:01
Björn
Huhu Daniel

vielleicht so:


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 10 And Target.Column = 27 Then
If Cells(10, 27) Is Nothing Then
Exit Sub
Else
If Target.Value = "A" Then
Cells(10, 29).ClearContents
Else
Cells(10, 29) = Cells(10, 27)
End If
End If
End If
End Sub


Gruß

Björn
AW: VBA - Skript Probleme
12.10.2003 22:56:12
Beni
Hallo Daniel,
ich glaube, so hast Du es gemeint.
Gruss Beni


Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("AA10")) Is Nothing Then Exit Sub
If Target.Value = "A" Then
Range("AC10").ClearContents
Else
For i = 11 To 25
Cells(i, 29) = Cells(i, 27)
Next i
End If
End Sub

Anzeige
AW: VBA - Skript Probleme
12.10.2003 23:14:56
Daniel
Hi Beni

Dein Skript bedeutet aber doch, das er kuckt was in AA10 steht, und wenn in AA10 A steht dann wird AC10 gelöscht. sonst wird in AC11- AC25 das was in AA10 steht reinkopiert.

Aber ich will, das er nur für AC10 kuckt was in AA10 steht. Für AC11 muss er in AA11 kucken was da drin steht und für AC25 soll er in AA25 kucken und dementsprechend handeln.

Also:

AW: VBA - Skript Probleme
12.10.2003 23:24:31
Björn
Huhu Daniel,

ich verstehe das Problem nicht. Wenn es nur um die drei bzw. sechs zellen geht, kannst Du das doch einzeln programmieren? Also ein Script für target.row = 10 und target.column = 27, dann für target.row = 12 und target.column = xyz, usw, usw..... Oder waren die genannten Zellen nur Exempel? Wie viele solcher Zellen hast Du denn?

Viele Grüße

Björn
Anzeige
AW: VBA - Skript Probleme / PS
12.10.2003 23:31:00
Björn
Ist es überhaupt so, daß in der zelle Ac10 ein wert auch manuell eingegeben werden kann? Falls Nein, würde es ja auch eine simple Wenn-Formel in AC10 tun, oder eine selbstgestrickte Funktionsformel à la:

'-------------------

Function chamäleon(Bezug As Range) As Variant
If Bezug.Value = "A" Or Bezug.Value = "" Then
chamäleon = ""
Else
chamäleon = Bezug.Value
End If
End Function

'------------------

wobei Du in AA10 notieren würdest =Chamäleon(AC10).

Gruß

Björn
AW: VBA - Skript Probleme / PS
12.10.2003 23:35:45
Daniel
Hi Björn,

PeterW hat eine relativ gute Lösung vorgeschlagen, ausser das die Werte sich nicht automatisch aktualisieren.

Ich habe bereits eine einfach Wenn Dann Geschichte probiert, nur das eine Andere Formel die danach auf die Zellen AC10-AC25 bezug nimmt, kann nur wirklich leere Zelen gebrauchen und keine ""-leere Zellen (frag mich nicht warum). Sonst wäre die Geschichte schon längst gegessen.

Danke

Daniel
Anzeige
AW: VBA - Skript Probleme
12.10.2003 23:10:32
PeterW
Hallo Daniel,

dann spekulier ich mal mit, was wohl gemeint war:


Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("AA11:AA25")) Is Nothing Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Target = "A" Then
Cells(Target.Row, 29).ClearContents
Else
Cells(Target.Row, 29) = Target
End If
Application.EnableEvents = True
End Sub


Gruß
Peter
AW: VBA - Skript Probleme
12.10.2003 23:24:25
Daniel
Hallo Peter

Ja genau, das meinte ich!

Allerdings updated er die Resultate nicht, also wenn jetzt in AA10 der Eintrag sich ändert, ändert er sich in AC10 nicht. Kann man das auch irgendwie hinkriegen?

Vielen vielen Dank

Daniel.
Anzeige
AW: VBA - Skript Probleme
12.10.2003 23:35:53
PeterW
Hallo Daniel,

ändere die Zeile
If Intersect(Target, Range("AA11:AA25")) Is Nothing Then Exit Sub in
If Intersect(Target, Range("AA10:AA25")) Is Nothing Then Exit Sub

Gruß
Peter
AW: VBA - Skript Probleme
12.10.2003 23:49:02
Daniel
Hi Peter

Diesen Fehler habe ich schon entdeckt. Mir geht es aber darum wenn irgendein Wert von AA10-AA25 geändert wird, dann ändert sich AC10 nicht mehr. Einmalig wurden die Resultat von AA10-AA25 in AC10 - AC25 kopiert. Aber ändert sich einer der AA Werte ändert sich nichts in AC.

Danke für die Unterstützung.

Daniel
AW: VBA - Skript Probleme
13.10.2003 00:00:15
PeterW
Hallo Daniel,

dann habe ich das Problem wohl doch nicht richtig verstanden. Soll unabhänging davon, wo in AA10:AA25 etwas verändert AC10 den Eintrag nach deinen Bedingungen anzeigen? Ein letzter Ansatz:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("AA10:AA25")) Is Nothing Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Target = "A" Then
Cells(Target.Row, 29).ClearContents
Cells(10, 29).ClearContents
Else
Cells(Target.Row, 29) = Target
Cells(10, 29) = Target
End If
Application.EnableEvents = True
End Sub

Gruß
Peter
Anzeige
noch offen - VBA - Skript Probleme - Erklärung
13.10.2003 00:10:28
Daniel
Nein, nein, nein.

Das habe ich dann wohl ganz falsch erklärt.

Nein, das ursprüngliche Skript ist von der Idee her völlig richtig. Nur: Wenn jetzt bspw. AA13 von "Details: Sendung eingeben" zu "A" wechselt, durch die Wenn - Dann formel die drin steht (wie auch in alle andere Felder von AA10-AA25) dann sollte sich AC13 auch entsprechend automatisch ändern.

Also um es noch anschaulicher zu machen.

. . |AA . . . . . . . . . . . | AC
10. |Text 1 . . . . . . . . . | Text 1
11. |Text 2 . . . . . . . . . | Text 2
12. |Text 3 . . . . . . . . . | Text 3
13. |Text 4 . . . . . . . . . | Text 4

Jetzt wurde etwas ausgelöst auf einer andere Tabelle, das Text 1 und Text 3 sind in A verwandeln. Jetzt sollte Feld AC in Zeile 10 und 12 leer werden...

. . |AA . . . . . . . . . . . | AC
10. |A. . . . . . . . . . . . |
11. |Text 2 . . . . . . . . . | Text 2
12. |A. . . . . . . . . . . . |
13. |Text 4 . . . . . . . . . | Text 4

... Aber AC ändert sich nicht...

. . |AA . . . . . . . . . . . | AC
10. |A. . . . . . . . . . . . | Text 1
11. |Text 2 . . . . . . . . . | Text 2
12. |A. . . . . . . . . . . . | Text 3
13. |Text 4 . . . . . . . . . | Text 4

... und Text 1 und Text 3 bleiben steht obwohl das A sagt sie müssten gelöscht werden.

Ich hoffe jetzt ist alles klar.

Vielen Dank für die Unterstützung.

Daniel
Anzeige
AW: noch offen - VBA - Skript Probleme - Erklärung
13.10.2003 00:16:25
Björn
Huhu Daniel,

vielleicht so? :


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then
Exit Sub
End If
If Target.Row < 26 And Target.Row > 9 And Target.Column = 27 Then
If Target.Value = "A" Then
Cells(Target.Row, 29).ClearContents
Else
Cells(Target.Row, 29) = Target.Value
End If
End If
End Sub


Gruß

Björn
AW: noch offen - VBA - Skript Probleme - Erklärung
13.10.2003 00:22:51
Björn
Huhu Daniel,

jetzt verstehe ich erst, was Du meinst. In der Spalte AA10 werden keine Werte eingegeben, sondern es befindet sich eine weitere Wenn-Formel in den Zellen. Natürlich löst die Änderung dieser Werte nicht das Change-Ereignis aus. Warum machst Du es dann aber nicht von den Zellen abhängig, die manuell geändert werden? Auf irgendwelche manuell geänderten Zellwerte muß sich die Wenn-F doch beziehen?

Gruß

Björn
Anzeige
AW: noch offen - VBA - Skript Probleme - Erklärung
13.10.2003 00:26:04
Daniel
Hi Björn

Ja genau so ist es.

Hier wäre die Formel von AA10 - =WENN(ISTLEER(Start!F9);"Details: Sendung eingeben";"A")

Ich habe absolut keine Ahnung wie ich das ganze machen sollte. Bin absolut neu mit VBA. Hoffe es aber bald zu lernen um dann auch andere helfen zu können.

Gruss

Daniel.
AW: noch offen - VBA - Skript Probleme - Erklärung
13.10.2003 00:39:45
Björn
Huhu Daniel,

ich muß leider jetzt ins Bett :-). Für mjch hört sich das eben doch nach einer Aufgabenstellung an, die sich besser mit Wenn-Formeln auf xl-Eben lösen läßt. Diesselbe Bedingung, die Du in die Zellen AA10 bis AA25 geschrieben hast, könntest Du doh auch für AC10 bis AC 25 verwenden?

Gruß Björn
Anzeige
AW: noch offen - VBA - Skript Probleme - Erklärung
13.10.2003 00:27:24
PeterW
Hallo Daniel,

jetzt wird es klarer. Wenn du das mit VBA machen willst musst du das Calculate-Ereignis benutzen (der Code gehört in das Modul der Tabelle, den Worksheet_Change-Code wirf raus).


Private Sub Worksheet_Calculate()
Dim rngC As Range
For Each rngC In Range("AA10:AA25")
If rngC = "A" Then
rngC.Offset(0, 3) = ""
Else
rngC.Offset(0, 3) = rngC
End If
Next
End Sub

Gruß
Peter
AW: noch offen - VBA - Skript Probleme - Erklärung
13.10.2003 00:30:35
Daniel
Hi Peter

Jetzt bleibt aber das Problem, das die Zelle nicht leer wird aber "" wird. Und dadurch wird er in der nachfolgenden Formel als 0 interpretiert.

Die nachfolgende Formel ist: {=WENN(ZEILEN($10:10)>ANZAHL2(AC:AC);"";INDEX(AC:AC;KKLEINSTE(WENN(AC$10:AC$25<>"";ZEILE($10:$25));ZEILEN($10:10))))}

Zweck davon ist eine neue Auflistung von AC10-AC25 zu erzeugen, jedoch ohne leerzeilen.

Gruss

Daniel.
AW: noch offen - VBA - Skript Probleme - Erklärung
13.10.2003 00:37:43
PeterW
Hallo Daniel,

ich klinke mich aus, hast schon etliche Formelteillösungen und beginnst den Thread mit einem VBA-Code ohne weitere Details. Habe leider nicht die Zeit, alle deine vorherigen Beiträge, mit denen sich schon andere beschäftigt haben, nachzulesen.

Viel Erfolg
Gruß
Peter
AW: noch offen - VBA - Skript Probleme - Erklärung
13.10.2003 00:47:40
Björn
dann eben

rngC.Offset(0, 3).ClearContents statt rngC.Offset(0, 3) ="" ?

Gute Nacht.

Gruß

Björn
@ Peter, Björn & Beni - Vielen Vielen Dank
15.10.2003 15:32:40
Daniel
Hallo Zusammen

War leider ein paar Tage krank (denke mal zuviele nächtliche Excel Einsätze ;-) Konnte deshalb erst heute noch die letzen Einträge ankucken.

Die letzte Lösung hat schlussendlich auch funktioniert. Vielen Dank.

Ich werde das nächste mal auch darauf achten genauere Beschreibungen des Problems zu geben, obwohl dies oftmals relativ schwierig ist und ich als VBA-newbie noch nicht wirklich weiss was wichtig ist und was nicht.

Nochmals vielen Dank für die Unterstützung.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige