1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Makro-Verlinkung

Discussion in 'Office-Programme' started by Tommizzo, Jan 15, 2008.

Thread Status:
Not open for further replies.
  1. Tommizzo

    Tommizzo Byte

    Hallo!

    Ist es möglich durch eine Makro, das mit einem Commandbutton aktiviert wird auf ein bestimmtest Tabellenblatt zu wechseln? Also ich will auf einer Startseite auf einen Button klicken, der mich z.B. dann zum Tabellenblatt 3 bringt. Ist das möglich?

    Kann man auch festlegen, das eine Arbeitsmappe immer mit einem bestimmten Blatt geöffnet wird, egal in welchem Blatt gespeichert wurde?

    Danke,
    Tommizzo
     
  2. Urs2

    Urs2 Megabyte

    Mit Button verknüpft, geht es so auf das gewünschte Blatt
    Code:
    Private Sub GeheZuXYZ()
        Sheets("Blattname").Select
        Range("A60").Select           '=Zelle die den Fokus haben soll
    End Sub
    

    Im VB-Editor unter "Diese Arbeitsmappe" eingefügt, gehts beim Oeffnen gleich zum gewünschten Blatt
    Code:
    Private Sub Workbook_Open()     'dieser Name muss genau so sein
        Sheets("Blattname").Select
        Range("A60").Select             '=Zelle die den Fokus haben soll
    End Sub
    
    Gruss Urs
     
  3. Tommizzo

    Tommizzo Byte

    Hallo Urs!

    Danke für die Hilfe.
    Die Verlinkungen klappen nun alle perfekt bei mir. Allerdings mit dem öffnen des ausgewählten Blattes klappt es nicht. Muss dieser Code an einer bestimmten Stelle eingegeben werden?

    Hab da auch gleich noch eine weitere Frage.
    Ich habe eine Eingabemaske, deren Werte durch einen Commandbutton in ein Auswertungsblatt kopiert werden. Dieses will ich aber mit einem Blattschutz versehen. Ich habe gehört, das man diesen Blattschutz durch den Commandbutton aufheben kann und der sich dann nach Beendigung des Kopiervorgangs wieder aktiviert. Wie geht das denn genau?

    Gruss
    Tommizzo
     
  4. Urs2

    Urs2 Megabyte

    1. Ja, bestimmte Stelle >
    Im VB-Editor bei +VBAProject(NameDeinerExcelDatei), darin "Diese Arbeitsmappe" öffnen und den Code eingeben, und der Name des SUBs muss genau so sein > Private Sub Workbook_Open()

    2. Ich arbeite für mich nie mit Blattschutz und kann deshalb aus dem Bauch heraus nichts dazu sagen. Wenn nicht eine andere gute Seele sich hier zu Wort meldet, werde ich mich heute Abend klug machen...

    +3. Wenn Du in Excel der Suchzelle (in meinem Beispiel "A60") einen Namen vergibst, kannst Du nachher diese Zelle verschieben, das Blatt umbenennen oder Blätter dazufügen und entfernen, ohne dass die Funktion des Makros darunter leidet.

    In beiden Makros müsste dann der Code zwischen den den Sub-Zeilen nur lauten >
    Application.Goto Reference:="NameDerBenanntenZelle"

    Gruss Urs
     
  5. Urs2

    Urs2 Megabyte

    Ich habe gesucht und geübt... und so funktioniert es bei mir >
    Code:
    Sub Test1()
            'in versuch1.xls Tabelle1 steht der zu übertragende Wert
            'ebenso der CommandButton und dieses Makro
    wertc15 = Worksheets("Tabelle1").Range("C15").Value
    
            'gleiche versuch1.xls - Tabelle2 > geschützt, ohne Passwort
        Worksheets("Tabelle2").Unprotect
        Worksheets("Tabelle2").Range("C15").Value = wertc15
        Worksheets("Tabelle2").Protect
    
            'gleiche versuch1.xls - Tabelle3 > geschützt, mit Passwort = 1234
        Worksheets("Tabelle3").Unprotect "1234"
        Worksheets("Tabelle3").Range("C15").Value = wertc15
        Worksheets("Tabelle3").Protect "1234"
        
            'speichert in andere geöffnete versuch2.xls, ohne und mit Passwort
        Workbooks("versuch2.xls").Worksheets("Tabelle1").Unprotect
        Workbooks("versuch2.xls").Worksheets("Tabelle1").Range("C15").Value = wertc15
        Workbooks("versuch2.xls").Worksheets("Tabelle1").Protect
        
        Workbooks("versuch2.xls").Worksheets("Tabelle2").Unprotect "1234"
        Workbooks("versuch2.xls").Worksheets("Tabelle2").Range("C15").Value = wertc15
        Workbooks("versuch2.xls").Worksheets("Tabelle2").Protect "1234"
    End Sub
    
    So hebt es den Schutz in jeder Tabelle auf, speichert den Wert aus Tabelle1 - Zelle C15 dort nach C15 und setzt den Schutz wieder. Zwischen Unprotect und Protect gehören einfach alle Befehle, die in der geschützten Tabelle etwas verändern sollen.
    Je nach Bedarf wird das Passwort "1234" zum Oeffnen benutzt und nachher wieder gesetzt.

    Ich hoffe, meine Darstellung sei didaktisch gut genug... musste auch gerade lernen...

    Gruss Urs
     
  6. Tommizzo

    Tommizzo Byte

    Danke, du hast mir echt gut geholfen. Läuft nun so wie ich es will.

    Gibt es eigentlich auch die Möglichkeit einer if then Abfrage so zu gestalten, dass mehrere Bedingungen erfüllt sein müssen damit etwas geschit. Also es soll wie folgt sein.
    wenn ZelleA="" und ZelleB="" und ZelleC="", dann tu X. Allerdings als Makroprogrammierung. Ich habe da schon einiges ausprobiert, aber das funktioniert nicht.

    Gruß
    Tommizzo
     
  7. brum

    brum Kbyte

    Natürlich kannst Du eine If-Bedingung einfügen. Beispiel:

    Gruss
    Bruno
     
  8. Tommizzo

    Tommizzo Byte

    Vielen Dank!! Funktioniert nun alles so wie ich es will.

    Gruß
    Tommizzo
     
Thread Status:
Not open for further replies.

Share This Page