Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1512to1516
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
Inhaltsverzeichnis

VBA abgefragte Spaltennummer umwandeln

VBA abgefragte Spaltennummer umwandeln
03.09.2016 17:54:55
Heinz
Hallo Liebe Excellenten,
ich habe in einem Programmcode folgende Zeile
.Range("A" & ErsteDatenzeile & ":CW" & letzteZ).Copy
Die Abfrage der letzten gefüllten Spalte ergibt mit VBA ja eine
Nummer (z.B. ist 100 die Spalte CW).
Wie kann ich die Nummer, die ich in eine Variable gespeichert haben,
in meine Range Anweisung einbauen?
Ich freue mich auf Eure Vorschläge.
Heinz

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA abgefragte Spaltennummer umwandeln
03.09.2016 18:05:58
Gerd
Hallo Heinz,
wenn du die Cells-Schreibweise /Cells(Zeilennummer, Spaltennummer)/ benutzt, kannst du
die Spaltennummer direkt verwenden.
With ActiveSheet
.Range(.Cells(ErsteDatenzeile, 1), .Cells(letzteZ, LetzteDatenspalte)).Copy ...
End With
Gruß Gerd
AW: VBA abgefragte Spaltennummer umwandeln
03.09.2016 20:15:34
Heinz
Hallo Gerd,
Deinen Ansatz kann ich gut nachvollziehen,
aber im Code bleibt das Programm an dieser Stelle hängen.
ThisWorkbook.Worksheets(2).Range(.Cells(1, 1), .Cells(4, 100)).Copy ..
Die Fehlermeldung ist:
Unzulässiger oder nicht ausreichend definierter Verweis
und das ".Cells" in der Programmzeile ist farbig hinterlegt.
Woran hängts?
Heinz
Anzeige
AW: VBA abgefragte Spaltennummer umwandeln
03.09.2016 21:49:38
Werner
Hallo Heinz,
die Schreibweise mit einem Punkt vor den Cells ist nur in einem With - End With zulässig.
With ThisWorkbook.Worksheets(2)
.Range(.Cells(1, 1), .Cells(4, 100)).Copy
End With
Gruß Werner
AW: VBA abgefragte Spaltennummer umwandeln
04.09.2016 07:03:28
Heinz
Hallo liebe Excellenten,
mit Hilfe von Werner habe ich es geschafft,
innerhalb einer With - End With Anweisung
den Zellbereich mit Cells und Variablen zu gestalten.
Aber in dem nachfolgenden Ausschnitt ohne With - End With funktioniert die Anwahl des Zellbereichs
nicht. (Anwendungs- oder objektorientierter Fehler). Die Zeile ist fett markiert.
Darüber ist die Zeile die funktioniert. Im Augenblick noch mit fester Spaltenbezeichnung "CW",
aber mein Ziel ist es, die Spaltenbezeichnung "CW" durch eine Variable zu ersetzen.
Übrigens sind im Original vor dem Ende noch ein paar Programmzeilen.
Sub zusammenfassen2()
Dim ws_Ziel As Worksheet
Dim Zeile As Long
Dim ErsteDatenzeile As Long
Dim LetzteDatenspalte As Long
Dim Kopfzeilen As Long
Dim letzteZ As Long
Dim AnzahlBlaetter As Integer
Dim i As Integer
Kopfzeilen = InputBox("Bitte hier die letzte Zeilennummer der Kopfzeile eingeben")
LetzteDatenspalte = Cells(Kopfzeilen, Columns.Count).End(xlToLeft).Column
'Auswertungsblatt an 1. Position einfügen
ThisWorkbook.Sheets.Add Before:=Worksheets(1), Type:=xlWorksheet
Set ws_Ziel = ActiveSheet
ws_Ziel.Name = "Zusammenfassung"
'Die ersten 4 Kopzeilen kopieren
'Funktioniert: ThisWorkbook.Worksheets(2).Range("A1:CV" & Kopfzeilen).Copy ws_Ziel.Range(" _
A1")
ThisWorkbook.Worksheets(2).Range(Cells(1, 1), Cells(4, 100)).Copy ws_Ziel.Range("A1")

'Überschrift
With ws_Ziel.Range("A1")
.Value = "Gesamt"
.Font.Bold = True
.Font.Size = 14
End With
End Sub
Heinz
Anzeige
AW: VBA abgefragte Spaltennummer umwandeln
04.09.2016 08:01:27
Oberschlumpf
Hi Heinz,
versuch mal das hier (ungetestet)
erstz deine fette Zeile durch diese
ThisWorkbook.Worksheets(2).Range(Cells(1, 1), ThisWorkbook.Worksheets(2).Cells(4, 100)).Copy ws_Ziel.Range("A1")
oder einfacher, auch wieder mit With
With ThisWorkbook.Worksheets(2)
.Range(Cells(1, 1), Cells(4, 100)).Copy ws_Ziel.Range("A1")
End With
Wie gesagt, von mir ungetestet.
Hilfts denn?
Ciao
Thorsten
noch ne Frage:
Dein Ziel ist wirklich: Kopiere den Bereich Zeile 1, Spalte 1 : Zeile 4, Spalte 100
Du meinst es nicht umgekehrt
Kopiere den Bereich Zeile 1, Spalte 1 : Zeile 100, Spalte 4
Oder?
Anzeige
AW: VBA abgefragte Spaltennummer umwandeln
04.09.2016 10:20:02
Werner
Hallo Heinz,
also ich verstehe jetzt dein Problem nicht ganz. Ich habe dir doch gezeigt, wie man mittels With - End With korrekt referenziert.
Dein nicht funktionierendes Beispiel müsste korrekterweise so geschrieben werden:
ThisWorkbook.Worksheets(2).Range(Worksheets(2).Cells(1, 1), Worksheets(2).Cells(4, 100)).Copy ws_Ziel.Range("A1")

Für eine korrekte Referenzierung muss das Worksheet auf dem sich die Range befindet vor alle Range-Objekte geschrieben werden - also vor Range und vor alle Cells. Deshalb kannst du ja auch auf das With - End With ausweichen, ist nich so umständlich zu schreiben.
Nochmal für deinen Wunsch es variabel zu halten:
With ThisWorkbook.Worksheets(2)
.Range(.Cells(VariZeileVon, VariSpalteVon), .Cells(VariZeileBis, VariSpalteBis))
End With
Das hat dir Gerd aber auch schon geschrieben.
Gruß Werner
Anzeige
AW: VBA abgefragte Spaltennummer umwandeln
04.09.2016 10:22:42
Werner
Hallo Thorsten,
beide Versionen werden nicht funktionieren.
Bei der ersten Verson fehlt vor dem ersten Cells das Worksheet und bei der zweiten Version fehlen die Punkte vor den Cells.
Gruß Werner
AW: VBA abgefragte Spaltennummer umwandeln
04.09.2016 12:42:12
Heinz
Liebe Excellenten,
das Ding ist durch. Vielen Dank an alle.
Ich habe mich für die With .. End Lösung entschieden.
Die fehlenden Punkte von Thorsten vor dem Cells hab ich nach
einer kurzen Frustphase selber herausbekommen.
das hab ich von Werner gelernt ;-)
Danke
Und allen einen schönen Sonntag.
Heinz
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
04.09.2016 12:46:47
Werner
AW: VBA abgefragte Spaltennummer umwandeln
03.09.2016 18:09:19
Hajo_Zi
benutze Cells ist einfacher.
Sub n11()
Dim InI As Integer
InI = 100
MsgBox Left(Cells(1, InI).Address(True, False), InStr(Cells(1, InI).Address(True, False), "$ _
") - 1)
End Sub


Anzeige
AW: VBA abgefragte Spaltennummer umwandeln
05.09.2016 11:28:42
Daniel
Hi
am einfachsten mit Cells und Resize:
Cells(ErsteZeile, ErsteSpalte).Resize(LetzeZeile - ErsteZeile + 1, LetzteSpalte - ErsteSpalte + 1).Copy
Gruß Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige