Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1352to1356
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
Zellwerte automatisch kopieren mit combolist
07.03.2014 22:50:08
Sebthie
Hallo zusammen,
ich bin was VBA angeht absoluter Neuling. Zur Vereinfachung eines Arbeitsvorgangs möchte ich gerne automatisch einen Monatsbericht erzeugen. Die Arbeitsmappe ist dazu folgendermaßen aufgebaut.
Im ersten Reiter habe ich das Hauptmenü über das ich auf Wunsch per Button die verschiedene Reiter z.B "Energie" aufrufen kann.
Bleiben wir beim Reiter "Energie", da die anderen Blätter ähnlich aufgebaut sind. Hier ist eine Tabelle in der in Spalte E5 bis E15 die Geräte 1 - 10 stehen und in Zeile F4:Q4 die Monate liegen. Zum Monatsende wird die Tabelle entsprechend automatisch über Verknüpfungen gefüllt.
Jetzt gibt es noch ein Tabellenblatt mit einem Leerformular "Monatsbericht", wohin die Zellwerte (in dem Fall Stromzähler) kopiert werden.
Ich hab jetzt schon folgendes mit Hilfestellung zusammen:
Mein Button Monatsbericht ist im Tabellenblatt Hauptmenü eingebettet. Ich habe jetzt eingefügt
Private Sub CommandButton3_Click()
UserForm1.Show
End Sub
Dann öffnet sich die Userform. Hier möchte ich nicht erst in der Combolist einen Monat eintragen, sondern eine Auswahlliste von Januar bis Dezember. Nach Auswahl des Monats und Bestätigung des CommandButton in der Userform werden die Zellwerte in die Monatsberichte kopiert.
Code:

Private Sub Bestätigen_Click()
With Worksheets("Strom")
.Range(.Cells(6, intMonat + 1), .Cells(17, intMonat + 1)).Copy Worksheets("Monatsberichte").   _
_
_
Range("A1")  ' linke obere Zelle des Bereiches in Monatsberichte anpassen
End With
End Sub

Private Sub ComboBox1_Change()
intMonat = ComboBox1.ListIndex + 2
End Sub

Den Code habe ich jetzt auf die Combolist und den Commandobutton in der Userform gelegt. Wie muss der Teil angepasst werden, das er nur die Zellwerte kopiert ohne Formatierung, sondern die der Zielzelle übernimmt?
Wenn die Monate in F4 bis Q4 stehen, muss dann stehen .Range(.Cells(6, intMonat + 1), .Cells(17, intMonat + 1)). oder .Range(.Cells(6, intMonat + 1), .Cells(11, intMonat + 1)). Damit das ganze funktioniert fehlt noch einiges, ich hoffe mir kann hier geholfen werden, Danke.
MfG

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellwerte automatisch kopieren mit combolist
08.03.2014 01:51:17
fcs
Hallo Sebthie,
der zum Füllen der Auswahlliste für die Combobox und das Übertragen der Werte in den Monatsbericht muss der Code etwa wie folgt aussehen.
Die Combobox_Change-Prozedur ist hier nicht erforderlich. Den gewählten Monat kannst du auch in der "Bestätigen"-Prozedur ermitteln.
11 oder 17 bei der Angabe der 2. Zeile für den Zellbereich?
Hier musst du die Nummer der Zeile angeben, in der der letzte zu kopierende Wert steht.
Gruß
Franz

Private Sub Bestätigen_Click()
Dim intMonat As Integer
If Me.ComboBox1.ListIndex = -1 Then
MsgBox "Bitte erst Monat auswählen"
Else
intMonat = ComboBox1.ListIndex + 1 'Index für Januar = 0
With Worksheets("Strom")
.Range(.Cells(6, intMonat + 5), .Cells(17, intMonat + 5)).Copy
Worksheets("Monatsberichte").Range("A1").PasteSpecial Paste:=xlPasteValues  ' linke obere  _
Zelle des Bereiches in Monatsberichte anpassen
Application.CutCopyMode = False
End With
End If
End Sub
Private Sub UserForm_Initialize()
Dim intI As Integer
'AUswahlliste für Combobox erstellen
With Me.ComboBox1
For intI = 1 To 12
.AddItem Format(VBA.DateSerial(2014, intI, 1), "MMMM")
Next
End With
End Sub

Anzeige
AW: Zellwerte automatisch kopieren mit combolist
10.03.2014 15:43:49
Sebastian
Vielen Dank,
das funktioniert schon fasst. Wie kann die Userform nach den Klick auf Bestätigen wieder geschlossen werden, mit unload.me? Ich habe vergessen zu erwähnen das er nur die Zellwerte kopieren soll, da die Zielzelle eine vorgegeben Formatierung hat.
MfG

AW: Zellwerte automatisch kopieren mit combolist
10.03.2014 17:26:08
fcs
Hallo Sebastian,
mit "Unlod Me" kannst du das Userform schließen und aus dem Arbeitsspeicher löschen.
Mit ".PasteSpecial Paste:=xlPasteValues"
sollten eigentlich nur die Werte eingefügt werden ohne das Format der Zielzellen zu ändern. Was funktioniert denn da jetzt nicht?
Gruß
Franz
Private Sub Bestätigen_Click()
Dim intMonat As Integer
If Me.ComboBox1.ListIndex = -1 Then
MsgBox "Bitte erst Monat auswählen"
Else
intMonat = ComboBox1.ListIndex + 1 'Index für Januar = 0
With Worksheets("Strom")
.Range(.Cells(6, intMonat + 5), .Cells(17, intMonat + 5)).Copy
Worksheets("Monatsberichte").Range("A1").PasteSpecial Paste:=xlPasteValues  ' linke obere  _
_
Zelle des Bereiches in Monatsberichte anpassen
Application.CutCopyMode = False
End With
Unload Me
End If
End Sub

Anzeige
AW: Zellwerte automatisch kopieren mit combolist
11.03.2014 14:16:59
Sebastian
Super,
danke dir. Habts bei mir angepasst und läuft wunderbar. Ohne jetzt ein neuen Thread zu eröffnen, wie muss der Code lauten um auf Knopfdruck ein voreingestellten Bereich, mit bestimmten Zoomfaktor, Formatwahl und ausgewählten Drucker in die Druckvorschau zu kommen. Durckvorschau damit doch nochmal alles geprüft werden kann. Konkret sagen wir A1:P52 in Querformat und Zoom 80. Meine Code ist zu lang, umständlich und dauert in seiner Ausführung zu lang.
    ActiveSheet.PageSetup.PrintArea = "$A$1:$P$52"
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.787401575)
.RightMargin = Application.InchesToPoints(0.787401575)
.TopMargin = Application.InchesToPoints(0.984251969)
.BottomMargin = Application.InchesToPoints(0.984251969)
.HeaderMargin = Application.InchesToPoints(0.4921259845)
.FooterMargin = Application.InchesToPoints(0.4921259845)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 80
.PrintErrors = xlPrintErrorsDisplayed
End With
ActiveWindow.SelectedSheets.PrintPreview
Application.ActivePrinter = "\\FKADCN\KT21 auf Ne06:"

Anzeige
AW: Zellwerte automatisch kopieren mit combolist
11.03.2014 15:01:06
Sebastian
Jetzt gibt es doch noch ein Problem. Ich hab das mal für meine Dieseltabelle gemacht. Hier liegen die Monate in der Zeile 7:18, die Daten die er kopieren soll liegen aber in verschiedenen Spalten und müssen alle in statt horizontal untereinander in G16 Monatsbericht übertragen werden. Er scheitert schon bei der Aufzählung der Zellen die kopiert werden sollen.
Private Sub Bestätigen_Click()
Dim intMonat As Integer
If Me.ComboBox1.ListIndex = -1 Then
MsgBox "Bitte erst Monat auswählen"
Else
intMonat = ComboBox1.ListIndex + 1 'Index für Januar = 0
With Worksheets("Diesel")
.Range(.Cells(intMonat + 7, 3), .Cells(intMonat + 7, 6), .Cells(intMonat + 7, 9), .Cells( _
intMonat + 7, 12), .Cells(intMonat + 7, 15), .Cells(intMonat + 7, 18).Cells(intMonat + 7, 21).Cells(intMonat + 7, 22).Cells(intMonat + 7, 23).Cells(intMonat + 7, 24)).Copy
Worksheets("Monatsbericht").Range("t9").PasteSpecial Paste:=xlPasteValues
End With
With Worksheets("Energie")
.Range(.Cells(5, intMonat + 5), .Cells(15, intMonat + 5)).Copy
Worksheets("Monatsbericht").Range("p9").PasteSpecial Paste:=xlPasteValues  ' linke obere  _
Zelle des Bereiches in Monatsbericht anpassen
Application.CutCopyMode = False
End With
Unload Me
End If
Sheets("Monatsbericht").Select
Application.Goto Reference:="R1C1"
ActiveWindow.Zoom = 80
End Sub
Private Sub UserForm_Initialize()
Dim intI As Integer
'AUswahlliste für Combobox erstellen
With Me.ComboBox1
For intI = 1 To 12
.AddItem Format(VBA.DateSerial(2014, intI, 1), "MMMM")
Next
End With
End Sub

Anzeige
AW: Zellwerte automatisch kopieren mit combolist
12.03.2014 08:12:23
fcs
Hallo Sebastian,
kopieren kann man in Excel immer nur zusammenhängende Zellenblöcke.
bei einzelnen Zellen kann man die Werte den Zielzellen auch direkt zuweisen.
Wenn man die Anordnung der kopierten Zellen um 90° drehen möchte, dann muss man zusätzlich transponieren.
Das Makro muss dan etwa wie folgt aussehen:
Private Sub Bestätigen_Click()
Dim intMonat As Integer
Dim wksMonat As Worksheet
If Me.ComboBox1.ListIndex = -1 Then
MsgBox "Bitte erst Monat auswählen"
Else
Set wksMonat = Worksheets("Monatsbericht")
intMonat = ComboBox1.ListIndex + 1 'Index für Januar = 0
With Worksheets("Diesel")
wksMonat.Range("t9").Value = .Cells(intMonat + 7, 3).Value
wksMonat.Range("t9").Offset(1, 0).Value = .Cells(intMonat + 7, 6).Value
wksMonat.Range("t9").Offset(2, 0).Value = .Cells(intMonat + 7, 9).Value
wksMonat.Range("t9").Offset(3, 0).Value = .Cells(intMonat + 7, 12).Value
wksMonat.Range("t9").Offset(4, 0).Value = .Cells(intMonat + 7, 15).Value
wksMonat.Range("t9").Offset(5, 0).Value = .Cells(intMonat + 7, 18).Value
.Range(.Cells(intMonat + 7, 21), .Cells(intMonat + 7, 24)).Copy
Worksheets("Monatsbericht").Range("t9").Offset(5, 0).PasteSpecial _
Paste:=xlPasteValues, Transpose:=True
End With
With Worksheets("Energie")
.Range(.Cells(5, intMonat + 5), .Cells(15, intMonat + 5)).Copy
wksMonat.Range("p9").PasteSpecial Paste:=xlPasteValues  ' linke obere _
Zelle des Bereiches in Monatsbericht anpassen
Application.CutCopyMode = False
End With
Unload Me
End If
wksMonat.Select
Application.Goto Reference:="R1C1"
End Sub
Das Einrichten der Seite kannst du nur so machen wie in deinem Code.
Auch wenn Änderungen unter "Seite Einrichten" zu den am langsamsten ausgeführten Befehlen gehören (Schließlich muß das komplette Tabellenblatt für die Druckausgabe neu berechnen) sollte die Ausführung bei einem Tabellenblatt mit wenigen Zeilen normalerweise weniger als 1 Sekunde dauern.
Um die Sache zu beschleunigen musst du ja nur die Einstellungen andern die wirklich anzupassen sind. Also ggf. nur den Druckbereich und den Drucker.
Gruß
Franz

Anzeige
AW: Zellwerte automatisch kopieren mit combolist
14.03.2014 13:07:27
Sebastian
Vielen Dank,
hat alles geklappt.
MfG Sebastian

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige