Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Variabele Anzahl an Spalten
#1
Wink 
Hallo

Es würde mir sehr weiterhelfen wenn jemand ein Blick auf mein Problem werfen könnte und mir dann einen Tip geben könnte.
Ich muss ein bestehendes Marco an einigen Stellen anpassen.
Ich scheitere aber immer an derselben Problemstelle.




Hier steht der funktionierende Code um in Spalte A alle Zellen bis zur letzten automatisch auszufüllen.

Code:
letzteZeile = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 'in Spalte A ermittelt

'Werte auffüllen
With Range("A1:A2:A3")
.AutoFill Destination:=Range("A1:A" & letzteZeile), Type:=xlFillDefault
End With

Ich müsste nun ähnliches machen, allerdings in der Breite.
Also ich müsste die Werte ausfüllen bis zur vorletzten Spalte für die Zeile 1
Momentan fülle ich IMMER bis zur Zelle 1 der Spalte Y aus.


Code:
   Range("B1").Select
   ActiveCell.FormulaR1C1 = "Zelle 1"
   Range("C1").Select
   ActiveCell.FormulaR1C1 = "Zelle 2"
   Range("B1:C1").Select
   Selection.AutoFill Destination:=Range("B1:Y1"), Type:=xlFillDefault


Neuerdings sind das aber nicht mehr IMMER 24 Zellen (bis zur Spalte Y)

Ich habe mich hier mal versucht


Code:
letzteSpalte = ActiveWorkbook.ActiveSheet.Cells(2, Columns.Count).End(xlToLeft).Column 'in Zeile 2 ermittelt
vorletzteSpalte = letzteSpalte - 1 'vorletzte Spalte

   Selection.AutoFill Destination:=Range("B1:Y1" & votletzte), Type:=xlFillDefault

Allerdings in der Gewissheit dass("B1:Y1"   nicht stimmen kann.  Ich weiss bloß nicht wie es richtig ist.

---------------------------

Später im Ablauf wähle ich momentan den Bereich  ("B1´:Y1")      aus - kopiere ihn und füge ihn in einem anderen Blatt wieder vertikal ein.
Anschliessend dasselbe für den Bereich ("B2:Y2")
Zur Info: B1 bis Y1 ist der Nummer einer Batteriezelle
          in B2 bis Y2 steht der Wert der Batteriespannung

Code:
ActiveWorkbook.Sheets(strTabname).Select
   Range("B1:Y1").Select
   Selection.Copy
   Sheets("Floating").Select
   Range("B6:B29").Select
   Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
       False, Transpose:=True

   ActiveWorkbook.Sheets(strTabname).Select
   Range("B2:Y2").Select
   Application.CutCopyMode = False
   Selection.Copy
   Sheets("Floating").Select
   Range("C6:C29").Select
   Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
       False, Transpose:=True


Das klappt super weil aktuell ja IMMER der fixe Bereich für die 24 Zellen ausgewählt uns eingefügt wird.
Auch hier habe ich das Problem dass bis zu Y1 oder Y2 variabel wird / also bis zur vorletzten Spalte

Ebenfalls wird das eventuell nicht gehen um die kopierten Werte (da variabele Länge) nach ("B6:B29") oder ("C6:C29") einzufügen ??


Vielen Dank

Mit freundlichsten Grüssen  (was überhaupt so möglich ist)
Antwortento top
#2
Hallo,

Du bist schon sehr nah Dran am Ergebnis.
Lösch die 1  bei Y1.
Gruß Atilla
Antwortento top
#3
Hallo,

Code:
   Range("B1")= "Zelle 1"
   Range("C1")= "Zelle 2"
   Range("B1:C1").AutoFill Destination:=Range(cells(1,2),cells(1, vorletzteSpalte)), Type:=xlFillDefault



Code:
With ActiveWorkbook.Sheets(strTabname)
    .Range(Cells(1, 2), Cells(1, vorletzteSpalte)).Copy
    Sheets("Floating").Range("B6").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
       False, Transpose:=True
    .Sheets(strTabname).Range(Cells(2, 2), Cells(2, vorletzteSpalte)).Copy
    Application.CutCopyMode = False
    Sheets("Floating").Range("C6").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
       False, Transpose:=True




ungetestet!

Hallo atilla,

bist Du Dir da sicher????
Gruß
Opa Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Benutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • PaulB
Antwortento top
#4
Hallo Edgar,

ich bezog mich auf diesen Teil:

Zitat:Zitat:
letzteSpalte = ActiveWorkbook.ActiveSheet.Cells(2, Columns.Count).End(xlToLeft).Column 'in Zeile 2 ermittelt
vorletzteSpalte = letzteSpalte - 1 'vorletzte Spalte

   Selection.AutoFill Destination:=Range("B1:Y1" & votletzte), Type:=xlFillDefault

Allerdings in der Gewissheit dass("B1:Y1"   nicht stimmen kann.  Ich weiss bloß nicht wie es richtig ist.


Aber für mich gilt auch ungetestet: Range("B1:Y" & votletzte) sollte von der Syntax her richtig sein.
Gruß Atilla
Antwortento top
#5
Hi,

(11.01.2017, 16:46)atilla schrieb: Aber für mich gilt auch ungetestet: Range("B1:Y" & votletzte) sollte von der Syntax her richtig sein.

und "vorletzteSpalte" ist was anderes als "votletzte"
Antwortento top
#6
Hallo Edgar,

sorry Du hast recht, war Blödsinn von mir.

Die Syntax ist zwar richtig, hat aber mit der Aufgabenstellung nichts zu tun.
So, wie Du es mit der Range(cells()) Schreibweise machst, sollte es gelöst werden.

Ich habe einfach nur oberflächlich drüber gelesen und das erste was mir auf-und einfiel nieder geschrieben.
Man sollte sich auch bei scheinbar einfachen Dingen genauso konzentrieren wie bei den schweren Dingen.
Gruß Atilla
Antwortento top
#7
Hallo BoscoBiati

Vielen dank für eure schnelle Antwort.

Ich habe deine Vorschläge eingebracht.

Er bleibtt aber hängen bei: xlPaste  zudem wird bei der Eingabe von xlPaste automatisch ein Leerzeichen davor und dahinter eingefügt.
Code:
Sheets("Floating").Range("B6").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
       False, Transpose:=True


Als Fehlermeldung kommt: Compile error  invalid use of property

P.S. votletzte = vorletzte


Danke

Schönen Abend gewünscht
Antwortento top
#8
Hallo,

an der gezeigten Stelle stimmte der Code.
zeig bitte mehr Code, also eigentlich den gesamten.
Gruß Atilla
Antwortento top
#9
Hallo,


Zitat:xlPaste  zudem wird bei der Eingabe von xlPaste automatisch ein Leerzeichen davor und dahinter eingefügt

das gehört so 19

@atilla,

ich hatte es genauso wie Du, dann kam mir irgendwie, dass Y ja die Spalte ist und vorletzteSpalte auch, passt also nicht.
Gruß
Opa Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antwortento top
#10
Hallo

Die obenerwähnte Anpassung der variablen Zellen hat geklappt und läuft super.
Danke an Euch.

Zusätzlich möchte ich nun aber noch den Wert: "Total" in die Zelle 1 der letzten Spalte einfügen.

Ursprünglich war das immer fix die Spalte X
Damals konnte ich die Zelle so adressieren
Range ("Z1") = "Total"

Da neuerdings die letze Spalte nicht mehr immer die Spalte Z ist,
sondern mit "letzteSpalte" definiert wurde - gelingt mir die Adressierung nicht mehr.

Versuch habe ich:
Range ("letzteSpalte1") = "Total"

resp.

Range (cells(1, letzteSpalte)) = "Total"

Es wäre nett wenn nochmal jemand mir weiterhelfen würde.

Vielen Dank

mfg

Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste