Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - in Arbeitsmappe Schreiben ohne diese auszuwählen
#1
Hallo Zusammen,

ich habe folgendes Problem:

bei diesem Code wird meine Sheet "Monatsname" ausgewählt - das heißt lasse ich dies aus einem anderen Sheet heraus abspielen so endet das Macro mit der Ansicht des Sheets "Monatsname". 
Ich möchte aber nach abspielen des Makros immer das Sheet sehen von woraus ich das Macro gestartet habe.  
Kann ich direkt in die Zellen des Sheets Monatsname schreiben ohne es direkt auszuwählen...  bzw gibt es einen Code welche das Makro immer in dem Sheet enden lässt wo es gestartet wurde?
 

Sheets("Monatsname").Select
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Jan-2016"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Januar bis Januar 2016"




Vielen Dank für eure Hilfe
Antworten Top
#2
Hallo Sebastian,

so:

Code:
Sheets("Monatsname").Range("A1").Value = "Jan-2016"

Sheets("Monatsname").Range("B1").Value = "Januar bis Januar 2016"

kannst du in das benannte Blatt schreiben, ohne es auszuwählen.

Oder auch so:

Code:
With Sheets("Monatsname")
 .Range("A1").Value = "Jan-2016"
 .Range("B1").Value = "Januar bis Januar 2016"
End With

Das eignet sich besser, wenn viele Zeilen im Code sich auf das eine Blatt beziehen sollen.
Alle Objekte mit einem Punkt vorangestellt beziehen sich dann auf das Blatt in der With Zeile. In diesem fall die Range Objekte.

Du kannst aber auch andere blätter auswählen und am Ende zurück zum Ursprünglichen Blatt gelangen, wennn Du am Anfang den namen der Aktiven tabelle in eine Variable schreibst.
Oder generell die im spiel befindlichen Tabellen definierst, z.B:

Code:
Sub test()
 Dim wksQuelle As Worksheet
 Dim wksZiel As Worksheet
 Set wksQuelle = Sheets("Tabelle1")
 Set wksZiel = Sheets("Tabelle2")
 
 wksZiel.Select
 wksQuelle.Select
End Sub


Und auf die gleiche Art geht es auch zwischen Arbeitsmappen. Dann kommt noch der Name der Mappe hinzu.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • Sebastian8029
Antworten Top
#3
Hallo atilla.  
Vielen Dank für die ausführliche Antwort und dass aufzeigen der unterschiedlichen Möglichkeiten. Es funktioniert!

Das hilft ungemein weiter im Lernprozess mit dem VBA Thema. Viele Dinge versuche ich über den Macro Recorder nachzuvollziehen
aber bei einigen Dingen komme ich dann doch an die Grenzen Smile
Antworten Top


Gehe zu:


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