Microsoft Excel

Herbers Excel/VBA-Archiv

mal wieder Array

Betrifft: mal wieder Array von: Blaumann
Geschrieben am: 16.10.2014 10:43:48

Hi,

ich möchte im Selection_Change_Ereignis die Werte der markierten Zellen in ein Array schreiben.

wird jetzt in einer oder allen markierten Zellen etwas geändert und das Change_Ereignis spricht an, soll aus dem Array die Werte wieder in die Zellen geschrieben werden.

mit einer Zelle ohne Array bekomme ich es hin, nur mit dem Array steh ich wieder auf Kriegsfuss.

Gruss Peter

  

Betrifft: AW: mal wieder Array von: Bastian
Geschrieben am: 16.10.2014 11:27:56

Hallo Peter,

man könnte auch generell verhindern, dass mehr als eine Zelle markiert wird.
Dann kämst Du mit dem jetzigen Makro zurecht. Wäre das eine Option?

Gruß, Bastian


  

Betrifft: noch offen! owT von: Bastian
Geschrieben am: 16.10.2014 11:28:35




  

Betrifft: AW: noch offen! owT von: Blaumann
Geschrieben am: 16.10.2014 12:34:56

Hi Bastian,

leider ist das keine Lösung für mein Vorhaben, es soll keinerlei Beschränkungen geben was die Bearbeitung angeht.

Gruss Peter


  

Betrifft: AW: noch offen! owT von: Bastian
Geschrieben am: 16.10.2014 14:34:57

Hallo Peter,

wo harkt es denn genau?

Nimm mal folgenden Code als Anregung:

Gruß, Bastian

Option Explicit

Dim strAlteWerte() As String
Dim intAnzahl As Integer
Dim i As Integer
Dim rngZelle As Range


Private Sub Worksheet_Change(ByVal Target As Range)
    
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    
    i = 0
    
    For Each rngZelle In Target
        rngZelle.Value = strAlteWerte(i)
        i = i + 1
    Next rngZelle
    
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  
    i = 0
    
    intAnzahl = Target.Cells.Count
    ReDim strAlteWerte(intAnzahl)
    
    For Each rngZelle In Target
        strAlteWerte(i) = rngZelle.Text
        i = i + 1
    Next rngZelle
     
End Sub



  

Betrifft: AW: ganz schön gefährlich von: Ewald
Geschrieben am: 16.10.2014 15:18:21

Hallo,

das funktioniert nur bei manueller Eingabe. Bei Copy/Paste gibt es Fehler.

Außerdem ist das ein gemeiner Code, diesen einem Kollegen in die Tabelle kopiert und ihr könnt sicher sein,das innerhalb kürzester Zeit sein Blutdruck auf 210 ist.

Gruß Ewald


  

Betrifft: AW: ganz schön gefährlich von: Blaumann
Geschrieben am: 16.10.2014 22:49:17

Hi Bastian,

dachte schon das wäre die Lösung, nur geht bei mir Garnichts mehr.

Ich kann nix mehr eingeben, aber überall reinkopieren.

Das soll so aber nicht sein.

Gruss Peter


  

Betrifft: AW: deshalb ist er so gemein von: Ewald
Geschrieben am: 16.10.2014 23:24:40

Hallo Peter,

weil du nichts mehr in die Tabelle eingeben kannst.

Der Code gilt ja für die ganze Tabelle und deshalb geht auch nichts mehr.

Eigentlich war der Code als Formelschutz gedacht, nur man muß ihn anpassen.

Es muß ein Bereich angegeben werden, wo er wirken soll.

Copy/Paste muß für diesen Bereich ausgeschaltet werden.

Im Change-Ereignis muß eine Freigabe rein, damit der Code nur dann ausgeführt wird.

Habe als Beispiel den Code von Bastian mal angepaßt auf die Spalte C.

Dim sicol As Boolean
Dim strAlteWerte() As String
Dim intAnzahl As Integer
Dim i As Integer
Dim rngZelle As Range

Private Sub Worksheet_Change(ByVal Target As Range)
    If sicol Then
    On Error Resume Next
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    i = 0
    For Each rngZelle In Target
        rngZelle.Formula = strAlteWerte(i)
        i = i + 1
    Next rngZelle
    sicol = False
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 3 Then
    Application.CutCopyMode = False
    i = 0
    intAnzahl = Target.Cells.Count
    ReDim strAlteWerte(intAnzahl)
    For Each rngZelle In Target
        strAlteWerte(i) = rngZelle.Formula
        i = i + 1
    Next rngZelle
    sicol = True
    End If
End Sub
kannst ja mal testen

Gruß Ewald


  

Betrifft: AW: deshalb ist er so gemein von: Bastian
Geschrieben am: 17.10.2014 08:44:45

Hallo zusammen,

deshalb hatte ich ja auch dabeigeschrieben "als Anregung".
Peter hat ja eingangs geschrieben, dass er ein Problem mit dem Array hat.
Und das ist in meinem Code zu sehen.
Dass man den Code noch Peteres individuellen Bedürfnissen anpassen muss, ist ja klar.

Gruß, Bastian


  

Betrifft: Das kann man provisorisch aber auch gleich tun,... von: Luc:-?
Geschrieben am: 17.10.2014 20:46:15

…Bastian,
damit so etwas wie hier Peter (mit bescheidenen VBA-Kenntnissen!) eben nicht geschieht! :-]
Das, was angepasst wdn muss, sollte schon im PgmCode vorhanden sein!
Gruß, Luc :-?

Besser informiert mit …


 

Beiträge aus den Excel-Beispielen zum Thema "mal wieder Array"