Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1896to1900
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
VBA Daten kopieren aus undef. Blatt
30.08.2022 12:43:31
T
Hallo.
Folgendes Problem:
Ich habe 2 Tabellenblätter, dabei Kopiert Blatt 2 per Makro Daten von Blatt 1.
Blatt 1 kann durch den Anwender kopiert werden wenn benötigt - dann sollen die Daten von diesem Blatt kopiert werden, also von Blatt 1 (2).
Das Makro auf Blatt 2 wird durch den User manuell gestartet.
Gibt es hier per VBA eine Option, eine Art Auswahl zu treffen bevor die Daten kopiert werden? Also das der User auswählen kann von welchem Tabellenblatt kopiert wird?
Wäre für Hilfe wie immer dankbar :)

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Daten kopieren aus undef. Blatt
30.08.2022 13:09:07
Herbert
Moin moin,
bei Macro start eine Msgbox mit 3 Button einmal um von 1 auf 2 zu kopieren, einmal um von 2 auf 1 zu kopieren und abbrechen.
Den Copycode im Modul mit Option Elpicit,
bei der Messagebox den jeweiligen Button einen wert der als Integer ausgeben lassen 1 und 2 und dann nur den Code auch per Option Explicit haben,
damit der Wert an das Copymakro weitergegeben werden kann.
MfG
Herbert
-Umsetzung kommt gleich-
Hier der Code in eins!
30.08.2022 14:04:14
Herbert
Moin moin ich bins wieder,
Der Code:

Option Explicit
Public Sub CopyCode()
Dim a As String
a = MsgBox("Ja = 1, Nein = 2, oder Abbrechen um abzubrechen", vbYesNoCancel, "Copy")
If a = vbYes Then
Worksheets(1).Range("A1").Copy
Worksheets(2).Range("A1").PasteSpecial Paste:=xlPasteValues
ElseIf a = vbNo Then
Worksheets(2).Range("A1").Copy
Worksheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues
Else
Exit Sub
End If
End Sub
Hinweis:
Wenn du die Button anders Beschriftet haben willst,
musst du eine Userform dazunehmen,
um so die Button umzubennen,
dazu kannst du dann auch machen,
das wenn man Beispielsweise mehrere Tabellenblätter hat,
das man einen Tabellenblattnamen einegeben kann, der Index von diesem bestimmt wird und das Tabellenblatt wo es eingefügt werden soll,
auch angeben wird,
damit davon der Index bestimmt wird und dort das ganze eingefügt wird.
Um es noch Variabler zuhalten,
könnte man dann auch eine Textbox mit den Werten für die Range erstellen,
damit man diese für jedes Tabellenblatt bestimmen kann,
oder halt nur für den jeweiligen Bereich den man kopiert haben will.
Über eine Rückmeldung freut sich jeder! :)
MfG
Herbert

Anzeige
AW: Hier der Code in eins!
30.08.2022 15:12:34
T
Hallo Herbert.
Super - vielen Dank - werde ich gleich mal versuchen nachher!
Ich bin jetzt mal folgenden Weg gegangen, aber es hängt noch an einer Stelle:
Ich rufe eine UserForm auf und lasse mir die Tabellenblätter anzeigen:

Private Sub UserForm_Initialize()
Dim i As Long
Me.ComboBox1.Clear
For i = 1 To Sheets.Count
Me.ComboBox1.AddItem Sheets(i).Name
Next
Me.ComboBox1.Value = ActiveSheet.Name
End Sub
Private Sub ComboBox1_Change()
ActiveWorkbook.Sheets(Me.ComboBox1.Value).Activate
End Sub
Danach würde ich gerne, dass Tabellenblatt, welches angewählt ist übergeben in das Makro welches kopiert (so wäre ich absolut unabhängig vom User - dann kann er es auch 17 mal kopieren wenn er mag):

Sub test_freischalten()
Application.ScreenUpdating = False
Range("C9").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=testblatt!$L$10:$L$105"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Selection.AutoFill Destination:=Range("C9:C16"), Type:=xlFillDefault
Range("C9:C16").Select
Selection.AutoFill Destination:=Range("C9:N16"), Type:=xlFillDefault
Range("C9:N16").Select
Range("C9").Select
Application.ScreenUpdating = True
End Sub
Kannst du mir da evtl sagen wie ich die Variable deklinieren müsste? Habe alles versucht, bin bisher gescheitert....
Anzeige
AW: Hier der Code in eins!
30.08.2022 16:34:03
Herbert
Moin,
entschuldige die späte Antwort ich war noch im Mittag ab 15:05 Uhr :)
Über alle Subs diesen Code und so Deklarieren,
anstatt Dim = Public

Option Explicit
Public ... As ....
Bei Zahlwerten würde ich den Integer nehmen,
aber wie mich erkennen lässt,
würde ich sagen gehst du anch den Namen,
also:

Public ... As String
Ich versuche dir das auch mal eben anhand deiner Codes in eine Beispielmappe zu bauen.
MfG
Herbert

Public Deklarierung ansprechen?
30.08.2022 17:00:30
Herbert
Moin moin,
also das mit dem Deklarieren kriege ich hier auf der Arbeit gerade auch irgendwie nicht gebacken...,
muss gleich noch weiter nach der Arbeit, melde mich nachher oder morgen dazu.
Hier einmal eine BSP-Datei wie du es sonst machen kannst anhand deines Codes:
https://www.herber.de/bbs/user/154885.xlsm
MfG
Herbert

Anzeige
AW: Hier der Code in eins!
30.08.2022 17:15:56
Daniel
Hi
Variablen, die du in allen Makros einer Datei verwenden willst, müssen in einem allgemeinen Modul (Modul1) ganz oben (oberhalb der Makros) beginnend mit dem Vorsatz Public anstelle von Dim deklariert werden.
also im Modul "Modul1"

Option Explicit
Public x as Variant
Public shÜbergabe as Worksheet
Innderhalb dieser Makros dürfen diese Variablen dann nicht mehr deklariert werden, wenn du das tust, hast du in diesem Makro dann eine neue Variable, die zwar den gleichen Namen hat, aber nichts mit der anderen Variable zu tun hat.
Gruß Daniel
Anzeige
AW: Hier der Code in eins!
31.08.2022 12:44:06
Herbert
Moin T,
also ich habe mir die Antwort von Daniel einmal durchgelesen,
woraus ich entnehmen konnte,
das die Werte von einem Makro in eine Userform übergeben,
wenn du die Werte aus der Userform nehmen willst,
muss diese währenddessen glaube ich geöffnet sein,
oder es klappt garnicht,
ich bin kein VBA Genius,
versuche nur zu helfen wo geht :=)
MfG
Herbert

AW: Hier der Code in eins!
31.08.2022 14:36:27
T
Hm ich versuche das mal zu beschreiben:
Ich habe ein Tabellenblatt auf welches ich Werte übergeben möchte mittel Makro von einem Zweiten. Das Zweite würde ich gerne über eine Userform auswählen, da dies kopiert werden kann.
Wenn es so sein muss, dass die UserForm geöffnet sein muss während dem Kopiervorgang wäre das kein Problem, dann würde ich das "Kopiermakro" in die UserForm packen.
Über die UserForm kann ich navigieren und die Tabellenblätter wechseln, nur noch das "store" des Tabellenblatts in der Variablen ist das kleine Problem - ich hatte heute leider noch keien Zeit für Tests, evtl schaffe ich es morgen :)
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige