Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Tabellenblattstruktur mit VBA erstellen
#1
Hallo G'meinde

Komme direkt zur Sachlage
Ich bitte um einen kleinen banalen Codeschnipsel (zum erlernen, weiterentwickeln) per VBA damit ich einem leeren Tabellenblatt Leben einhauche.
Nur Zeile 1(Überschriften, ohne fett größer und so): Datum;Uhrzeit;Name;Kegler-ID usw.
Bitte an die VBA-Exies nur den Anfang, wenn's denn keine grossen Mühen macht.

Hab hier und da gelesen aber irgendwie bin ich zu viel im Wald geirrt.
Danke;Thanks
05
?mage
to top
#2
Hi Frank,

ich hatte ja bereits in früheren Threads angemerkt, dass ich VBA-mäßig in den Babyschuhen stecke. Zu deinem Wunsch, Codeschnipsel zum Erlernen und Weiterentwickeln zu bekommen, denke ich, solltest du deinen Bedürfnissen folgend, erst mal ein Grundgerüst aufzeichnen. Den aufgezeichneten Code kannst du dann nach eigenem Können "ausmisten" und verfeinern.

Diesen Code habe ich aufgezeichnet und ist noch im absoluten "Rohzustand". Er macht nichts anderes als ein neues Arbeitsblatt anzulegen und die Überschriften einzutragen.

Code:
Option Explicit

Sub NeuesBlattMitUeberschriften()
'
' NeuesBlattMitUeberschriften Makro
'

'
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveCell.FormulaR1C1 = "Name"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Datum"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "Uhrzeit"
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "Kegler-Id"
End Sub
?mage

Misserfolg ist eine Chance, es beim
nächsten Mal besser zu machen.

(Henry Ford)
http://www.sprueche-zum-nachdenken.eu
to top
#3
Hi,

damit sich dein Projekt vielleicht direkt in die richtige Richtung entwickelt:
Wird diese Überschriftenzeile nur auf 1 Blatt benötigt oder auf mehreren?
Bestehen diese Blätter schon in der Datei?
Welchen Sinn hat das per VBA zu machen?
Ändern sich diese Überschriften später wieder? In Abhängigkeit wovon?

Nicht alles was machbar ist, ist auch sinnvoll mittels VBA, insbesondere bei statischen Fakten
Mit freundlichen Grüßen  Smile
Michael

Win 7 64 bit / Excel 2007/2016
to top
#4
(19.08.2014, 19:34)WillWissen schrieb: ...macht nichts anderes als ein neues Arbeitsblatt anzulegen und die Überschriften einzutragen...

Hallo Günter, darauf wollte ich ja auch hinaus. Danke für den Codeschnipsel. Mit Makrorecorder wäre ich ehrlich geschrieben nicht gekommen, der Wald eben. Danke

(19.08.2014, 19:37)Zwergel schrieb: ...

Wird diese Überschriftenzeile nur auf 1 Blatt benötigt oder auf mehreren?
Bestehen diese Blätter schon in der Datei?
Welchen Sinn hat das per VBA zu machen?
Ändern sich diese Überschriften später wieder? In Abhängigkeit wovon?...

...insbesondere bei statischen Fakten...
Hallo Michael, zum Teil sind es statische Fakten, aber zu 1.
Es soll nur der Code mit UF1 bestehen, der widerum ausgelöst die Tabellenblätter mit den Anwesenden für den Abend anlegt.
zu2.
Nein, es sollen nur aktive Kegler in der Mappe generiert werden.
zu3.
Ob Sinn oder Zweck, mein Gedanke war/ist nur die Grundstruktur quasi als Masterdatei zu verwenden um im Anschluß aller eingetragen Daten mit neuem Namen (Kegeldatum) zu speichern.
zu4.
Diese Daten wären eigentlich Statisch. Nur die Kegler ändern sich in Reihe und Erscheinen.

Danke für eure Statements, werde beides überdenken.
?mage
to top
#5
(19.08.2014, 19:34)WillWissen schrieb: Diesen Code habe ich aufgezeichnet und ist noch im absoluten "Rohzustand".

Ja, in der Tat "Rohzustand". Und es ist mir wichtig, gerade Einsteiger auf die "Unsitte" des Makrorecorders hinzuweisen, andauernd Select zu verwenden. Denn praktisch 99% aller SELECTs und ACTIVATEs sind überflüssig. Aufgeräumt sieht der Code dann etwa so aus:

Code:
Option Explicit
Sub NeuesBlattMitUeberschriften()
' NeuesBlattMitUeberschriften Makro
    Sheets.Add After:=Sheets(Sheets.Count)
    With ActiveSheet
       'Das .Value ist nicht unbedingt erforderlich aber sinnvoll
       .Cells(1, 1).Value = "Name"
       'Alternativ auch als Range
       .Range("B1").Value = "Datum"
       .Range("C1").Value = "Uhrzeit"
       .Range("D1").Value = "Kegler-Id"
End Sub
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
to top
#6
Hi Günther,

Zitat:'Das .Value ist nicht unbedingt erforderlich aber sinnvoll

kannst du mir/uns das kurz erklären? Danke.
?mage

Misserfolg ist eine Chance, es beim
nächsten Mal besser zu machen.

(Henry Ford)
http://www.sprueche-zum-nachdenken.eu
to top
#7
Hallo Günter,

aber klar ...
Prinzipiell reicht in der Code-Zeile:
Code:
.Cells(1, 1) = "Name"
weil die Default-Rückgabe dieser Funktion Value ist. Und das gilt auch für frühere Versionen. Aber es ist nicht garantiert, dass das auch für die nächste Version gilt. MS ist da mitunter sehr kreativ. Ich räume aber ein, dass auch ich vielfach einfach schreibfaul bin ... Wink

Ich denke, dass es für Einsteiger besser ist, immer die Wunsch-Rückgabe mit dazu zu schreiben. Es könnte ja auch einmal .Row sein oder etwas anderes.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
to top
#8
Hallo @all,
die Profis haben die Diskussion entfacht.
Klar ist jetwege klare Unterstützung für Newbies wie mich von Vorteil.
Zitat:
"Synapsen: Die Synapse ist die Schnittstelle zweier Neurone. Die Kommunikation findet meist per chemischer Botenstoffe, den Neurotransmittern, statt."
- aber Value und Text deklarieren doch unterschiedlich ob nun Textbox oder Layer ???
Ergo nicht relevant im Code ?

man liest sich ...
?mage
to top
#9
(20.08.2014, 12:46)GMG-CC schrieb: Hallo Günter,

aber klar ...
Prinzipiell reicht in der Code-Zeile:
Code:
.Cells(1, 1) = "Name"
weil die Default-Rückgabe dieser Funktion Value ist. Und das gilt auch für frühere Versionen. Aber es ist nicht garantiert, dass das auch für die nächste Version gilt. MS ist da mitunter sehr kreativ. Ich räume aber ein, dass auch ich vielfach einfach schreibfaul bin ... Wink

Ich denke, dass es für Einsteiger besser ist, immer die Wunsch-Rückgabe mit dazu zu schreiben. Es könnte ja auch einmal .Row sein oder etwas anderes.

Hi Günther,

danke für die Erklärung. Das habe ich mir in meiner Vorlagendatei gespeichert - werde wohl aber (zumindest so lange es geht) eher zur schreibfaulen Liga gehören. Wink
?mage

Misserfolg ist eine Chance, es beim
nächsten Mal besser zu machen.

(Henry Ford)
http://www.sprueche-zum-nachdenken.eu
to top
#10
Hallo zusammen,

ich schreibe auch der Übersichtlichkeit halber oft .value.
In einigen Fällen funktioniert die Verwendung von Range oder Cells zur Nutzung des enthaltenen Wertes auch nur, wenn .Value dahinter steht.

Hier ist übrigens ein interessanter Artikel zum Thema .Text, .Value und -Value2
http://fastexcel.wordpress.com/2011/11/3...-avoid-it/
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste