Microsoft Excel

Herbers Excel/VBA-Archiv

Spalte auslesen, weiter übertragen


Betrifft: Spalte auslesen, weiter übertragen von: Waldow
Geschrieben am: 26.09.2019 10:59:08

Hallo Exel Freunde,
ich wär gerne interessiert wenn jemand so freundliche wäre, mir von einer Excel Anwendung in einem VBA Script Code umzuschreiben, um die Ausgabe von Spalten-Inhalte fortlaufende in andere Spalten zu übertragen, da dieses Problem mit einer Excel-Anwendung nicht funktioniert.

Als Beispiel hier mit einer Excel Programm-Beschreibung:
In der Spalte A1-A5 stehen 5 konstante Zahleninhalte von 1-5, die durch die Zufallszahl-Formel in Spalte C1-5 eine Veränderung der Zahlen-Reihenfolge in Spalte B1-5 ausgibt,

soweit ist das in der Excel-Anwenung auch ok, dieses sollte aber in einem VBA Script umgeschrieben werden, weil bei dem nächste Klick mit F9 die selbe Spalte B1-5 – und E1-5 überschrieben wird, dass sollte mit einem VBA Script fortlaufent in andere Spalten geschrieben werden, weil es mit diesem Excel-Programm nicht funktioniert.

Excel-Programm:
Spalte A1-A5 1.2.3.4.5
Spalte B1-B5, Index(A$1:A$5;Rang.Gleich($C$1:$C$5;1))
Spalte C1-C5, =Zufallszahl()

Ausgabe-Spalte: Spalte E1-E5, =B1(4) =B2(3) =B3(2) =B4(5) =B5(1)

Durch Betätigen der Funktionstaste F9 (später Button 1) wird eine neue Zahlen-Reihenfolge mit Spalteninhalt in Spalte B1-B5 ausgegeben, ich habe hier die Ausgabe einfach manuell in die Ausgabe-Spalte E1-5 kopiert, diese sollten dann automatisch im VBA Modus Spaltenweise immer weiter ausgegeben werden.
Die nächste Ausgabe wäre dann in Spalte F1-5, G1-5, H1-5 usw. bis dann später alle mit einem Lösch (2 Button) die Spalteninhalte ab F1-5 wieder gelöscht werden können.

Der VBA Code müßten vorher die konstante Zahlenreihe 1-5 von der Variable Z1:Z5 in A1-A5 übernommen werden, sodas mit der VBA Anwendung die Zahlenfolge A1-A5 dann konstant bleibt, wie im Exce-Programm.

Option Explicit

Sub Makro1()
Dim arrV As Variant, intNr As Integer, B As Integer, Target As Range

arrV = Application.Transpose(Range(“Z1:Z5“))
Range(“A1:A5“) = Range(“Z1:Z5“)
Range(“Z1:Z5“)= Application.Transpose(arrV)

Range(“E1:E5“) = Range(“B1:B5“), Value     ' Ausgabespalte
' Range(“F1:F5“) = Range(“B1:B5“), Value     ' Ausgabespalte
End Sub
Option Explicit
Sub Makro2()

Spalte F1-F5,G1-G5,H1-H5 usw.
hier sollten die Spalten-Inhalte ab F1 alle wieder gelöscht werden.

End Sub
mit freundlichem Gruß
K-H Waldow

  

Betrifft: AW: Spalte auslesen, weiter übertragen von: Rudi Maintaire
Geschrieben am: 26.09.2019 12:36:47

Hallo,

Sub DasMakro()
  Dim DieZielSpalte As Long
  DieZielSpalte = Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).Column
  DieZielSpalte = Application.Max(DieZielSpalte, 5)
  Cells(1, 1).Resize(5) = Application.Transpose(Array(1, 2, 3, 4, 5))
  Cells(1, DieZielSpalte).Resize(5).Value = Range("B1:B5").Value
End Sub

Gruß
Rudi


  

Betrifft: AW: Spalte auslesen, weiter übertragen von: Waldow
Geschrieben am: 26.09.2019 13:16:45

Hallo Rudi
in der Zeile --
DieZielspalte = Cells(1, Columns,Count) .End(xToleft), Offset(, 1) .Coloumn
Cells(1, 1) .Resize(5) = Application.Transpose(Arry(1,2,3,4,5,))

macht er immer eine Fehlermeldung

Erwarte Anwendungsende
was muss ich da machen.


  

Betrifft: AW: Spalte auslesen, weiter übertragen von: Pierre
Geschrieben am: 26.09.2019 13:36:41

Hallo Waldow,

ich muss mal doof fragen, stehen die Zeilen in deinem Code so, wie du sie oben geschrieben hast oder so, wie sie von Rudi kamen?

Wenn ersteres der Fall ist (was ich vermute), solltest du die Leerzeichen, Satzzeichen usw. mal genau prüfen, dann liegt da nämlich dein Fehler.

Gruß Pierre

PS: Kopiere einfach den gesamten Code, den dir Rudi zur Verfügung gestellt hat und füge ihn 1:1 ins Modul ein...


  

Betrifft: bei mir geht das. owT von: Rudi Maintaire
Geschrieben am: 26.09.2019 13:38:52




  

Betrifft: AW: bei mir geht das. owT von: Waldow
Geschrieben am: 27.09.2019 09:23:14

Hallo,
ja es war mir wirklich ein schreib Fehler unterlaufen, der Code macht jetzt keine Fehlerangabe
alles ok. Wäre es mögliche mir im Makro1() das zu zeigen weil löschen wird bei mir noch keine Spalte als Beispiel, danke.
Gruß Waldow

Option Explicit

Sub Makro1()

  '1   1   3   4   5
  '3   2   1   3   1
  '5   3   4   5   2
  '2   4   2   2   4
  '4   5   5   1   3
  
 '$B$1 '$C$1 '$D$1 '$E$1 '$F$1
 '$B$2 '$C$2 '$D$2 '$E$2 '$F$2
 '$B$3 '$C$3 '$D$3 '$E$3 '$F$3
 '$B$4 '$C$4 '$D$4 '$E$4 '$F$4
 '$B$5 '$C$5 '$D$5 '$E$5 '$F$5

End Sub

Sub Makro2()

Dim DieZielSpalt As Long
DieZielSpalte = Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).Column
DieZielSpalte = Application.MaxChange(DieZielSpalte, 5)
Cells(1, 1).Resize(5) = Application.Tranpose(Array(1, 2, 3, 4, 5))
Cells(1, DieZielSpalte).Resize(5).Value = Range("B1:B5").Value
  
  End Sub



  

Betrifft: keine Ahnung, was du willst. owT von: Rudi Maintaire
Geschrieben am: 27.09.2019 12:15:26




  

Betrifft: AW: keine Ahnung, was du willst. owT von: Waldow
Geschrieben am: 03.10.2019 10:21:48

Hallo Rudi,
ich wollte doch nur wissen ob ich mit deinem Code die 5 Spalten (Tabelle1) löschen kann, die ich die oben mit aufgezeigt habe, bei mit funktioniert es nicht, es wäre schön dieses von dir noch mal zu prüfen.
Gruß Waldow


Beiträge aus dem Excel-Forum zum Thema "Spalte auslesen, weiter übertragen"