Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1956to1960
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

Kopiervorgang

Kopiervorgang
04.12.2023 15:16:37
siegfried
Hallo,
habe nochmal eine Frage zum Kopieren der Daten.
Ich möchte gern vom Jahr (Sheet ist als 2023benannt) ins nächste Jahr kopieren,
anbei mein Makro, welches ich mir zusammengestellt habe.
 Dim vtbl, vtbl2 As String

vtbl = ActiveSheet.Name
vtbl2 = ActiveSheet.Name + 1 '1 Jahr weiter
' MsgBox vtbl
' MsgBox vtbl2
vtbl = Range("AA7").Copy
vtbl2.Range("C7").Selection.PasteSpecial


bleibt hier stehen: vtbl2 = ungültiger Bezeichner.

gr siegfried

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopiervorgang
04.12.2023 15:38:44
Pappawinni
Wau, du verstehst nicht viel von dem was du da tust, oder?

Dass VBA gnädig ist und zu einem String etwas addiert ist Glück.
du kannst dann dem String auch noch das Ergebnis der Copy Methode zuweisen, was dann true oder false ergibt
dann willst du aber die Zeichenkette als Worksheet-Objekt verwendet wissen und das will VBA dann doch nicht mehr verstehen.

AW: Kopiervorgang
04.12.2023 15:40:01
UweD
Hallo


so??
Dim vtbl As String, vtbl2 As String

vtbl = ActiveSheet.Name
vtbl2 = CInt(ActiveSheet.Name) + 1 '1 Jahr weiter
' MsgBox vtbl
' MsgBox vtbl2

Sheets(vtbl2).Range("C7") = Sheets(vtbl).Range("AA7")

LG UweD
Anzeige
AW: Kopiervorgang
04.12.2023 16:05:59
Pappawinni
oder wenn es halt eine Copy methode sein soll:

Sub unit()


Dim strNameWks1 As String
Dim strNameWks2 As String

strNameWks1 = ActiveSheet.Name
strNameWks2 = ActiveSheet.Name + 1

Worksheets(strNameWks1).Range("A7").Copy Destination:=Worksheets(strNameWks2).Range("C7")

End Sub


wobei du vielleicht einmal etwas zu den Namenskonventionen lesen solltest
https://www.herber.de/vbabasics/0002.html

und dann vielleicht auch das:
https://learn.microsoft.com/en-us/office/vba/api/excel.range.copy
Anzeige
Danke UweD für die zusätzliche Info's
04.12.2023 17:29:13
siegfried
Danke Uwe, funktioniert ! -)
04.12.2023 17:28:18
siegfried
Kleine Nachfrage UweD...
04.12.2023 17:49:23
siegfried
Hallo Uwe,
habe deinen Vorschlag genommen.
Bevor ich mit meinen NICHT Fachkenntnissen anfange, ich würde gern Prüfen
ob die empfangene Tabelle vorhanden ist.
In diesem Fall : vtbl2

danke im Voraus,
gr siegfried
AW: Kleine Nachfrage UweD...
04.12.2023 18:32:10
Pappawinni
da gibt es mehrere Möglichkeiten
Du könntest z.B. eine Funktion einführen



Function WksExists(strName As String) As Boolean
On Error Resume Next
WksExists = Worksheets(strNam).Index > 0
End Function


und diese dann aus deinem Programm aufrufen

if  WksExists(vtbl2) then

'Kopieren
else
'Meldung oder sonst was
end if


Man könnte auch per for each die Worksheets durchackern und schauen, ob das gewünschte dabei ist..

Du kannst obiges aber auch direkt einbauen.



Dim blnWksExists as boolean
on error resume next
blnWksExists = Worksheets(vtbl2).Index > 0
on error goto 0

if blnWksExists then
'Kopieren
else
'Meldung oder sonst was
end if


Anzeige
Danke funktioniert --))
04.12.2023 19:09:13
siegfried
Guten Abend,
habe dies genommen:
Dim blnWksExists as boolean

on error resume next
blnWksExists = Worksheets(vtbl2).Index > 0
on error goto 0

if blnWksExists then
'Kopieren
else
'Meldung oder sonst was
end if


einwandfrei ! DANKE
gr siegfried
AW: Danke funktioniert --))
05.12.2023 09:01:41
UweD
Hallo

noch eine Lösung
' Hochkomma wegen möglicher Leerzeichen innerhalb des Tabellenblattnamens

If IsError(Evaluate("'" & vtbl2 & "'!A1")) Then
'nicht da


LG UweD

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige