Bereich nach Inputbox Abfrage kopieren

Hola an alle, habe mal wieder etwas. Habe mir aus dem Internet folgendes Makro zusammengebastelt.

Sub Kopieren()
Dim sSpalte As String
Dim sZeile As Integer
Dim last_col As String
Dim last_row As Integer
Dim iSpaltenanzahl As Integer
Dim iZeilenanzahl As Integer
Dim wks1 As Worksheet
Dim wks2 As Worksheet
Dim iNCopy As Integer
Dim sTab1 As String
Dim sTab2 As String
sTab1 = InputBox(„Wie heißt die Quelltabelle?“, „Quelle“)
sTab2 = InputBox(„Wie heißt die Zieltabelle?“, „Ziel“)
Set wks1 = Worksheets(sTab1)
Set wks2 = Worksheets(sTab2)
iSpaltenanzahl = wks1.UsedRange.Columns.Count
iZeilenanzahl = wks1.UsedRange.Rows.Count
last_col = Replace(Cells(1, iSpaltenanzahl).Address(0, 0), „1“, „“)
last_row = iZeilenanzahl
sZeile = InputBox(„Welche Zeile soll kopiert werden? (1-“ & last_row & „)“, „Zeile kopieren“) sSpalte = InputBox(„Welche Spalte soll nicht kopiert werden? (A-“ & last_col & „)“, „Spalte kopieren“)
iNCopy = Range(sSpalte & „:“ & sSpalte).Column For i = 1 To iSpaltenanzahl If i iNCopy Then wks1.Cells(sZeile, i).Copy Destination:=wks2.Cells(sZeile, i)
End If Next i
End Sub

Meine Frage ist folgende: Kann man z.B. in die Inputbox eine Auswahl einfügen. Ich habe immer Tabelle 1 und Tabelle 2 woraus ich kopiere. Jetzt muss ich ja immer Tabelle 1 in das Fenster schreiben wenn die Frage nach der QuellTabelle kommt. Genau das gleiche bei der Abfrage nach der Zieltabelle. Es ist immer Tabelle 3 oder 4.
Danke schon mal wieder im Voraus für eure Hilfe hier
Saludos Carsten

Hallo Carsten,

in einer InputBox sehe ich keien Chance.

Du musst dir deinen eigenen Dialog bauen!

Im VBA Editor einen UserDialog aufbauen. Zwei mal zwei Option Buttons. Ein OK und weiter gehts mit deinem Makro.

Sorry, aber das must dann schon selber machen. Dabei helfen wir gerne…

fg

Dirk.P

Danke dir für die schnelle Antwort. Mal sehen was ich schaffe.

Meine Frage ist folgende: Kann man z.B. in die Inputbox eine
Auswahl einfügen.

Hallo Carsten

Ich habe Dein Makro nicht „studiert“, aber zu Deiner Frage kann ich Dir aus einem Beitrag von Smart-Tools folgendes zitieren und hoffe, dass Dir das Anregungen gibt für Deine Arbeit.

Grüsse Niclaus

_In vielen Makro werden Zellbereiche verarbeitet. Suchen Sie eine komfortable Möglichkeit, aus einem Makro heraus einen Bereich auszuwählen? Dann können Sie das Kommando INPUTBOX verwenden.

Nach der Anzeige des Fensters können Sie mit der Maus oder Tastatur einen Bereich in einer Tabelle auswählen. Im Eingabefeld setzt Excel automatisch den passenden Bezug ein. Das folgende Makro zeigt, wie Sie solche Fenster einbinden:_

Sub MarkiereBereich()
On Error Resume Next
Dim Bereich As Range
Set Bereich = Application.InputBox("Bitte markieren Sie einen Bereich", \_
 "Bereich wählen", , , , , , 8)
MsgBox "Sie haben den folgenden Bereich ausgewählt: " & \_
 Bereich.AddressLocal(False, False)
On Error GoTo 0
End Sub

In Ihren Makros setzen Sie anstelle des Mitteilungsfensters den Programmcode ein, mit dem Sie die Zellen im zuvor markierten Zellbereich verarbeiten möchten. Da der Befehl INPUTBOX ein Objekt vom Typ RANGE zurückliefert, können Sie den gewählten Zellbereich sofort verarbeiten, beispielsweise in einer FOR-EACH-Schleife.

Danke dir. Mal sehen ob ich es hinbekomme.
carsten

Danke für eure Hilfe. Muss aber zugeben das das meine geringen VBA Kentnisse überschreitet. Das Makro von Niclaus funktioniert aber ich schaffe es nicht es in mein Makro einzubinden oder so zu ergänzen das es den markierten Bereich dann auch kopiert und in die andere Tabelle immer in die nächste freie Zeile einfügt.
Danke euch allen
Saludos Carsten

Hallo Carsten

Ich verstehe nicht recht, was Du mit Deinem Makro genau machst bzw. machen willst. Kannst Du das mal kurz erklären?

Danke für eure Hilfe. Muss aber zugeben das das meine geringen
VBA Kentnisse überschreitet. Das Makro von Niclaus
funktioniert aber ich schaffe es nicht es in mein Makro
einzubinden

Wenn Du Deine Excel-Datei (mit anonymisierten Daten) hochladen willst, könnte man das Einbinden besorgen!

Grüsse Niclaus

Danke das du dich so bemühst Niclaus. Ich habe schon eine andere Lösung im Internet gefunden die mein Problem fast löst.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

'Aktuelle Zeile von Tabelle1!A:G unter Doppelklick verknüpft in erste freie Zeile in Tabelle2 einfügen
Sheets(„Tabelle2“).Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(1, 5).Formula = „=Tabelle1!A“ & Target.Row

'Kopiermodus beenden : Doppelklick abbrechen
Application.CutCopyMode = False: Cancel = True

End Sub

Das ist eigendlich schon optimal für mich, aber evtl. könntest du mir dabeihelfen. Bei Doppelklick in eine Zelle wird jetzt immer die ganze Zeile kopiert. Wie ändert man das, dass z:B. aus der Zeile nur bestimmte Zellen (A1, C1,E1 oder A13, C13, E13) kopiert werden und wie mache ich den Zielbereich variabler. Z.B. das ich A1 nach B schiebe und C1 nach D usw. Danke dir nochmal für deine Hilfe und dein Interesse.
Muchos Saludos
Carsten

Nur zur Erklärung.
Ich lebe in Costa Rica und habe mir für die hiesige Steuererkärung (ja das gibt es hier auch) ein kleines Programm gebastelt. Ich habe Tabelle1 für die Einnahmen, Tabelle2 für die Ausgaben und Tabelle3 für die Abrechnung. So ist wie es mir ein befreundeter Buchhalter gezeigt hat. ich bin jetzt nur zu faul die ganzen Ein und Ausgaben alle immer einzelnt zu kopieren und wieder einzufügen. Deswegen ist die Doppelklick Variante natürlich sehr bequem für mich. Das kleine Problem was ich halt noch habe ist, das ich eigendlich nicht alle Zellen aus meiner Zeile (A-G) benötige und das sie in andere Zellen eingefügt werden. A aus Tabelle1 wird z.B. in Tabelle3 in B verschoben (C in D usw.)
Danke für eure tolle Hilfe hier im Forum
Saludos
Carsten

Hallo Carsten

Es wird zwar gar nicht gern gesehen, wenn ein Schweizer einem Ausländer in Steuersachen hilft! Trotzdem, ich nehme das Risiko auf mich:

Wie ändert man das, dass z.B.
aus der Zeile nur bestimmte Zellen (A1, C1,E1 oder A13, C13,
E13) kopiert werden und wie mache ich den Zielbereich
variabler. Z.B. das ich A1 nach B schiebe und C1 nach D usw.

Verstehe ich das richtig:
A1 der Quelldatei soll in der Zieldatei in der Spalte B erscheinen,
C1 der Quelldatei in der Spalte D der Zieldatei und
E1 der Quelldatei in der Spalte F der Zieldatei ??
Wenn ja, dann:

Private Sub Worksheet\_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

With Sheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp)
.Offset(1, 0).Formula = "=Tabelle1!A" & Target.Row
.Offset(1, 2).Formula = "=Tabelle1!C" & Target.Row
.Offset(1, 4).Formula = "=Tabelle1!E" & Target.Row
End With

Application.CutCopyMode = False: Cancel = True

End Sub

Eine Hinweis noch: Du fügst jetzt in Tabelle2 Formeln mit Bezügen zu Tabelle1 ein. Falls Du in Tabelle2 die Werte aus Tabelle1 fix einfügen möchtest, müsstest Du schreiben:
.Offset(1, 0) = Range(„Tabelle1!A“ & Target.Row)
usw.

Ich hoffe, das entspricht Deinen Bedürfnissen, und grüsse vielmals
Niclaus

Danke Niclaus. Ist perfekt. Dank dir habe ich das System verstanden und kann es mir anpassen. Und ich werde es hier keinem erzählen das es der Schweitzer erfunden hat:smile: .
Tausend Dank
Y saludos de Costa Rica
Carsten