Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema CommandButton | |
---|---|
![]() |
CommandButton-Seite mit Beispielarbeitsmappe aufrufen |
Betrifft: vba codes verbinden??
von: alex
Geschrieben am: 13.10.2008 23:37:49
Hallo zusammen,
Wie kann man diese Codes kombinieren?
Code 1 (per CommandButton): wird der Bereich A16:L16 im Tabellenblatt „Grundformular“ kopiert und schaltet dann in das Tabellenblatt Übersicht
Sub Eintragungenübernehmen()
Range("A16:L16").Select
Selection.Copy
Sheets("Übersicht").Select
End Sub
In „Übersicht“ wähle ich per Doppelklick auf Zellen in Spalte A verschiedene Tabellenblätter an. (Die kopierten Daten befinden sich noch im Kopierspeicher.)
Code 2:
'zur Ansteuerung einzelner Trainingsnachweise mit Doppelklick
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) For Each Sheet In ThisWorkbook.Sheets If Sheet.Name <> ActiveSheet.Name Then Sheet.Visible = False End If Next If ActiveCell.Column = 1 Then Sheets(ActiveCell.Row).Visible = True Sheets(ActiveCell.Row).Activate Cancel = True End If End Sub
Mit Doppelklick habe ich nun das ausgewählte Tabellenblatt.
Um die letzte beschriebene Zeile auf dem aktiven Tabellenblatt zu ermitteln und in der nächsten die Daten einzufügen
Code 3:
Range(„A65536“).End(xlUp).Offset(1,0).Select
Selection.Paste
Wie kann ich Code2 und Code3 verbinden?
Für eure Antworten dankbar
Alex
Betrifft: AW: vba codes verbinden??
von: fcs
Geschrieben am: 14.10.2008 11:56:37
Hallo Alex,
den ersten Code brauchst du eigentlich nicht, da du immer den gleichen Datenbereich aus dem Grundformular kopieren willst.
Code 2 und 3 kann man dann etwa wie folgt zusammen.
Gruß
Franz
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) For Each Sheet In ThisWorkbook.Sheets If Sheet.Name <> ActiveSheet.Name Then Sheet.Visible = False End If Next If ActiveCell.Column = 1 Then Cancel = True Sheets(ActiveCell.Row).Visible = True Sheets(ActiveCell.Row).Activate If MsgBox(Prompt:="Daten aus Grundformular Zeiel 16 eintragen?", _ Buttons:=vbYesNo, _ Title:="Daten aus Grundformular kopieren") = vbYes Then 'Daten aus Grundformular kopieren Worksheets("Grundformular").Range("A16:L16").Copy _ Destination:=ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0) 'Zeilennummer anpassen If IsNumeric(ActiveSheet.Range("A65536").End(xlUp)) Then ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Value = _ ActiveSheet.Range("A65536").End(xlUp).Value Else ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Value = 1 End If End If End If End Sub
Betrifft: AW: vba codes verbinden
von: alex
Geschrieben am: 14.10.2008 12:23:53
Hi Franz,
danke für deine Unterstützung. Klappt jetzt so wie ich mir das gewünscht habe. War echt wichtig für mich.
Nur noch eines:
An welcher Stelle des Codes füge ich ein, dass er wieder auf das Blatt "Übersicht" zurückkehrt?
Danke nochmal,
alex
Betrifft: AW: vba codes verbinden
von: fcs
Geschrieben am: 14.10.2008 13:04:28
Hallo Alex,
Anpassung:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) For Each Sheet In ThisWorkbook.Sheets If Sheet.Name <> ActiveSheet.Name Then Sheet.Visible = False End If Next If ActiveCell.Column = 1 Then Cancel = True Sheets(ActiveCell.Row).Visible = True Sheets(ActiveCell.Row).Activate If MsgBox(Prompt:="Daten aus Grundformular Zeiel 16 eintragen?", _ Buttons:=vbYesNo, _ Title:="Daten aus Grundformular kopieren") = vbYes Then 'Daten aus Grundformular kopieren Worksheets("Grundformular").Range("A16:L16").Copy _ Destination:=ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0) 'Zeilennummer anpassen If IsNumeric(ActiveSheet.Range("A65536").End(xlUp)) Then ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Value = _ ActiveSheet.Range("A65536").End(xlUp).Value + 1 Else ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Value = 1 End If End If Sheets("Übersicht").Activate End If End Sub
Gruß
Franz
Betrifft: Danke!!! Funzt. o.T.
von: alex
Geschrieben am: 14.10.2008 14:31:54
.