PDA

Vollständige Version anzeigen : Tabelle kopieren


jagga007
23.07.2012, 21:03
Hallo Forum,

ich habe tabellen für jeden Tag (Tagesberichte) angelegt. Und würde nun gerne im Momentanen Tabellenblatt über einen CommandButton diese Tabelle komplett Kopieren für den nächsten Tag mit einer Abrage ob schon vorhanden und das eine Eingabe eines neuen Tabellennamens nur in Zahlen erfolgen darf.

Hat jemand eine Idee wie man das realisieren kann.

Für Vorschläge wäre ich sehr dankbar.

Gruß jagga007

josef e
23.07.2012, 21:30
<div style="width:98%; margin-left:5px; margin-right:15px; text-align:justify;">
Hallo ?,

eine Möglichkeit.

<div style="background-color:#F5F5F5; border-width:2px; border-style: groove; border-color:#ff9966; padding:4px;"><nobr><span style="font-family:Courier New,Arial; font-size:8pt ;" ><b><span style="color:#0000FF"; >Sub</span> copySheet()</b><br />&nbsp;&nbsp;<span style="color:#0000FF"; >Dim</span> vntName <span style="color:#0000FF"; >As</span> <span style="color:#0000FF"; >Variant</span><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >Do</span><br />&nbsp;&nbsp;&nbsp;&nbsp;vntName = Application.InputBox(<span style="color:#808080"; >"Bitte geben Sie einen Tabellennamen an"</span>, <span style="color:#808080"; >"Tabelle kopieren"</span>, Type:=1)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> vntName = <span style="color:#0000FF"; >False</span> <span style="color:#0000FF"; >Then</span> <span style="color:#0000FF"; >Exit</span> <span style="color:#0000FF"; >Sub</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> SheetExist(CStr(vntName)) <span style="color:#0000FF"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox <span style="color:#808080"; >"Eine Tabelle mit dem Namen '"</span> & CStr(vntName) & <span style="color:#808080"; >"' existiert bereits!"</span>, vbExclamation, <span style="color:#808080"; >"Hinweis"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Exit</span> <span style="color:#0000FF"; >Do</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >If</span><br />&nbsp;&nbsp;<span style="color:#0000FF"; >Loop</span><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> Len(vntName) <span style="color:#0000FF"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;ActiveSheet.Copy after:=Sheets(Sheets.Count)<br />&nbsp;&nbsp;&nbsp;&nbsp;Sheets(Sheets.Count).Name = CStr(vntName)<br />&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >If</span><br />&nbsp;&nbsp;<br /><b><span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >Sub</span></b><br /><br /><br /><b><span style="color:#0000FF"; >Private</span> <span style="color:#0000FF"; >Function</span> SheetExist(<span style="color:#0000FF"; >ByVal</span> sheetName <span style="color:#0000FF"; >As</span> String, <span style="color:#0000FF"; >Optional</span> Wb <span style="color:#0000FF"; >As</span> Workbook) <span style="color:#0000FF"; >As</span> <span style="color:#0000FF"; >Boolean</span></b><br />&nbsp;&nbsp;<span style="color:#0000FF"; >Dim</span> wks <span style="color:#0000FF"; >As</span> Worksheet<br />&nbsp;&nbsp;<span style="color:#0000FF"; >On</span> <span style="color:#0000FF"; >Error</span> <span style="color:#0000FF"; >GoTo</span> ERRORHANDLER<br />&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> Wb <span style="color:#0000FF"; >Is</span> <span style="color:#0000FF"; >Nothing</span> <span style="color:#0000FF"; >Then</span> <span style="color:#0000FF"; >Set</span> Wb = ThisWorkbook<br />&nbsp;&nbsp;<span style="color:#0000FF"; >For</span> Each wks In Wb.Worksheets<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> LCase(wks.Name) = LCase(sheetName) <span style="color:#0000FF"; >Then</span> SheetExist = True: <span style="color:#0000FF"; >Exit</span> <span style="color:#0000FF"; >Function</span><br />&nbsp;&nbsp;<span style="color:#0000FF"; >Next</span><br />&nbsp;&nbsp;ERRORHANDLER:<br />&nbsp;&nbsp;SheetExist = <span style="color:#0000FF"; >False</span><br /><b><span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >Function</span></b><br /><br /><br /></span></nobr></div>


</div>

<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>

jagga007
23.07.2012, 22:31
Hallo Sepp,

kennst du auch eine Möglichkeit nach Auswahl CommandButton öffnen eines Formulars in einer Textbox in der nur Zahlen eingegeben werden dürfen nur sechs Stellen und nach Enter diese sechs stellige Zahl dann an den Tabellennamen übergeben werden.

Gruß jagga007

josef e
24.07.2012, 20:35
<div style="width:98%; margin-left:5px; margin-right:15px; text-align:justify;">
Hallo ??,

anbei ein einfaches Beispiel.


<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>

jagga007
25.07.2012, 18:08
Mensch Sepp Danke das ist ok.

Aber was würdest du noch einbauen, da wie du sagst es ein einfaches Beispiel sein soll.

Gruß Rudolf (jagga007)

josef e
25.07.2012, 18:48
<div style="width:98%; margin-left:5px; margin-right:15px; text-align:justify;">
Hallo Rudolf,

na ich weiß ja nicht, nach welchen Kriterien z. B. die Tabellen benannt werden sollen, vielleicht handelt es sich dabei um ein Datum, dann müsste man checken, ob ein gültiges Datum eingegeben wurde.


</div>

<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>

jagga007
25.07.2012, 19:14
Da der Tabellennamen Eindeutig mit dem aktuellen Tag sein soll, ich aber auch den Namen so kurz wie möglich halten will, hab ich da anders gelöst. Es spielt ja auch das Monat und das Jahr eine Rolle.

Auf Seite hab ich schon das Datum des Tabellennamen und zwar hab ich das so gelöst.
=DATUM(RECHTS(Daten!I1;2);TEIL(_tab;3;2);LINKS(_tab;2))

Hab hierzu ein spezielle Blatt in dem meine Grundeistellungen definiert sind.

Gruß Rudi

jagga007
09.08.2012, 18:53
Hallo Sepp, bräuchte dein Wissen nach mal für den Bereich Kopieren.

Die Situation ist folgende, es kommt auch vor das am gleichen Tag mehrere Berichte geschrieben werden müssen der Name der Tabelle aber nicht unnötig lang sein soll.

Wie bekomm ich es hin, dass wenn z.B am 090812 ein zweiter , dritter oder mehrere Berichte geschrieben werden, hinter dem 090812 ein .1 und für den zweiten .2 usw angehängt wird.

Die Meldung das der Tag schon vorhanden ist gut aber den Hinweis, das
der zweite Bericht als 090812.1 angelegt wird.

Gruß Rudolf

josef e
09.08.2012, 19:08
<div style="width:98%; margin-left:5px; margin-right:15px; text-align:justify;">
Hallo Rudolf,

<div style="background-color:#F5F5F5; border-width:2px; border-style: groove; border-color:#ff9966; padding:4px;"><nobr><span style="font-family:Courier New,Arial; font-size:8pt ;" ><b><span style="color:#0000FF"; >Private</span> <span style="color:#0000FF"; >Sub</span> CommandButton1_Click()</b><br />&nbsp;&nbsp;<span style="color:#0000FF"; >Dim</span> strName <span style="color:#0000FF"; >As</span> String, lngIndex <span style="color:#0000FF"; >As</span> <span style="color:#0000FF"; >Long</span><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> Len(TextBox1) = 6 <span style="color:#0000FF"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;strName = TextBox1<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Do</span> <span style="color:#0000FF"; >While</span> SheetExist(strName)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lngIndex = lngIndex + 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strName = TextBox1 & <span style="color:#808080"; >"."</span> & CStr(lngIndex)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Loop</span><br />&nbsp;&nbsp;&nbsp;&nbsp;ActiveSheet.Copy after:=Sheets(Sheets.Count)<br />&nbsp;&nbsp;&nbsp;&nbsp;Sheets(Sheets.Count).Name = strName<br />&nbsp;&nbsp;&nbsp;&nbsp;Unload Me<br />&nbsp;&nbsp;<span style="color:#0000FF"; >Else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;MsgBox <span style="color:#808080"; >"Eingabe ung&uuml;ltig!"</span>, vbExclamation, <span style="color:#808080"; >"Hinweis"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;TextBox1.SetFocus<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Exit</span> <span style="color:#0000FF"; >Sub</span><br />&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >If</span><br /><b><span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >Sub</span></b><br /><br /><br /></span></nobr></div>


</div>

<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>

jagga007
09.08.2012, 19:42
Hab's versucht in jagga.xlms ein zubauen aber haut irgendwie nicht hin.

Die Meldung dass das Blatt schon vorhanden ist soweit gut, aber macht mir kein Neues Blatt mit 090812.1


Gruß Rudolf

josef e
09.08.2012, 20:08
<div style="width:98%; margin-left:5px; margin-right:15px; text-align:justify;">
Hallo Rudolf,




</div>

<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>

jagga007
11.08.2012, 08:48
Danke Sepp, ich dachte schon wieder zu kompliziert.