VBA - Skript Probleme

Bild

Betrifft: VBA - Skript Probleme
von: Daniel
Geschrieben am: 12.10.2003 22:23:43

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.
Bild


Betrifft: AW: VBA - Skript Probleme
von: Beni
Geschrieben am: 12.10.2003 22:38:11

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



Bild


Betrifft: AW: VBA - Skript Probleme
von: Daniel
Geschrieben am: 12.10.2003 22:42:37

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.


Bild


Betrifft: AW: VBA - Skript Probleme
von: Björn
Geschrieben am: 12.10.2003 22:44:01

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


Bild


Betrifft: AW: VBA - Skript Probleme
von: Beni
Geschrieben am: 12.10.2003 22:56:12

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



Bild


Betrifft: AW: VBA - Skript Probleme
von: Daniel
Geschrieben am: 12.10.2003 23:14:56

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:



Download des Tabellenkonverters                 Formeln in den Zellen als QuickNotiz
Von Daniel

Bild
AA AB AC
10 Details: Sendung eingeben   Details: Sendung eingeben
11 A A
12Details: Kunden Eingeben Details: Kunden Eingeben
13A A
14A A



Vielen Dank

Daniel


Bild


Betrifft: AW: VBA - Skript Probleme
von: Björn
Geschrieben am: 12.10.2003 23:24:31

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


Bild


Betrifft: AW: VBA - Skript Probleme / PS
von: Björn
Geschrieben am: 12.10.2003 23:31:00

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


Bild


Betrifft: AW: VBA - Skript Probleme / PS
von: Daniel
Geschrieben am: 12.10.2003 23:35:45

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


Bild


Betrifft: AW: VBA - Skript Probleme
von: PeterW
Geschrieben am: 12.10.2003 23:10:32

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


Bild


Betrifft: AW: VBA - Skript Probleme
von: Daniel
Geschrieben am: 12.10.2003 23:24:25

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.


Bild


Betrifft: AW: VBA - Skript Probleme
von: PeterW
Geschrieben am: 12.10.2003 23:35:53

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


Bild


Betrifft: AW: VBA - Skript Probleme
von: Daniel
Geschrieben am: 12.10.2003 23:49:02

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


Bild


Betrifft: AW: VBA - Skript Probleme
von: PeterW
Geschrieben am: 13.10.2003 00:00:15

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


Bild


Betrifft: noch offen - VBA - Skript Probleme - Erklärung
von: Daniel
Geschrieben am: 13.10.2003 00:10:28

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


Bild


Betrifft: AW: noch offen - VBA - Skript Probleme - Erklärung
von: Björn
Geschrieben am: 13.10.2003 00:16:25

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


Bild


Betrifft: AW: noch offen - VBA - Skript Probleme - Erklärung
von: Björn
Geschrieben am: 13.10.2003 00:22:51

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


Bild


Betrifft: AW: noch offen - VBA - Skript Probleme - Erklärung
von: Daniel
Geschrieben am: 13.10.2003 00:26:04

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.


Bild


Betrifft: AW: noch offen - VBA - Skript Probleme - Erklärung
von: Björn
Geschrieben am: 13.10.2003 00:39:45

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


Bild


Betrifft: AW: noch offen - VBA - Skript Probleme - Erklärung
von: PeterW
Geschrieben am: 13.10.2003 00:27:24

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


Bild


Betrifft: AW: noch offen - VBA - Skript Probleme - Erklärung
von: Daniel
Geschrieben am: 13.10.2003 00:30:35

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.


Bild


Betrifft: AW: noch offen - VBA - Skript Probleme - Erklärung
von: PeterW
Geschrieben am: 13.10.2003 00:37:43

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


Bild


Betrifft: AW: noch offen - VBA - Skript Probleme - Erklärung
von: Björn
Geschrieben am: 13.10.2003 00:47:40

dann eben

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

Gute Nacht.

Gruß

Björn


Bild


Betrifft: @ Peter, Björn & Beni - Vielen Vielen Dank
von: Daniel
Geschrieben am: 15.10.2003 15:32:40

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.


 Bild

Beiträge aus den Excel-Beispielen zum Thema " Zahlenwert aus string auslesen"