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.

=Tabelle
#11
eine Frage hätte ich noch zum Thema VBA:

wie müsste das aussehen wenn ich eine Formel in VBA definieren will.
=Set1.Sheets("Set").Range("A4:E6").Copy
=Set2.Sheets("Set").Range("A12:E14").Copy usw. ?

Vorab schon vielen Dank für eure Hinweise.

EDIT:

der Anfangsbereich für die Sets (A4 und A12) passen. Jedoch wäre es super wenn das Makro den letzten Eintrag (dieser kann also variabel sein), als Endpunkt nimmt.

Wenn das geht.... Puh, dann wäre das ein Traum :05:
Antworten Top
#12
Glaube das war nicht wirklich klar in der Formulierung gestern..

ich würde gerne mittels VBA eine eigene Formel definieren: 

Set1 = Set1.Sheets("Set").Range("A4:E6").Copy
Set2 = Set2.Sheets("Set").Range("A12:E14").Copy

Ziel ist es also das wenn ich =Set1 in meiner Arbeitsmappe eingebe, mir der im Makro definierte Bereich wieder gegeben wird.
Da sich dieser Bereich teilweise um ein bis zwei Zeilen erweitern kann (sprich im Set1 eben von A4:E7 oder E8 gehen könnte) wäre es super wenn man das auch i wie berücksichtigen könnte.

Mich würde erstmal interessieren, ob das denn überhaupt möglich ist :17:


Beste Grüße
Leo
Antworten Top
#13
Hallo Leo,

folgender Code kommt in das schon vorhandene VBA-Modul des entsprechenden Tabellenblattes, in welchem diese Eingaben getätigt werden sollen:

Private Sub Worksheet_Change(ByVal Target As Range)
 Select Case Target.Cells(1).Formula
   Case "=Test1"
     On Error Resume Next
     Application.EnableEvents = False
     With Sheets("Set").Range("A4:E6")
       Target.Resize(.Rows.Count, .Columns.Count).Value = .Value
     End With
     Application.EnableEvents = True
     On Error GoTo 0
   Case "=Test2"
     On Error Resume Next
     Application.EnableEvents = False
     With Sheets("Set").Range("A12:E14")
       Target.Resize(.Rows.Count, .Columns.Count).Value = .Value
     End With
     Application.EnableEvents = True
     On Error GoTo 0
 End Select
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 14 - mit VBAHTML 12.6.0


Da Set1 und Set2 Zelladressen sind, würdest Du nur den jeweiligen Wert der entsprechenden Zelle erhalten. Deshalb hab ich mal Test1 und Test2 genommen.

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Leonhard
Antworten Top
#14
Herzlichen Dank für den Code.
Ich schäme mich.. aber egal wo ich den Code einfüge, ich kann nirgends =Test1 eingeben und bekomme den gewollten Output
Antworten Top
#15
Hallo,

in Deiner Beispieldatei käme es in das VBA-Modul Tabelle1. Die Datei muss dann aber als Makrodatei (.xlsm) gespeichert werden.

Gruß Uwe
Antworten Top
#16
Hallo Uwe,

es liegt bestimmt an mir, aber anbei mein Versuch wie von dir beschrieben.

Beste Grüße
Leo


Angehängte Dateien
.xlsm   Set.xlsm (Größe: 17,09 KB / Downloads: 2)
Antworten Top
#17
Hallo Leo,

Du hattest es richtig gemacht.
Auf meinem jetzigen Rechner funktioniert es auch nicht.  Huh
Dann denke Dir andere Kürzel ohne Gleichheitszeichen aus.
Im Code sind es jetzt #set1 und #set2:

Private Sub Worksheet_Change(ByVal Target As Range)
 Select Case LCase(Target.Cells(1).Value)
   Case "#set1"
     On Error Resume Next
     Application.EnableEvents = False
     With Sheets("Set").Range("A4:E6")
       Target.Resize(.Rows.Count, .Columns.Count).Value = .Value
     End With
     Application.EnableEvents = True
     On Error GoTo 0
   Case "#set2"
     On Error Resume Next
     Application.EnableEvents = False
     With Sheets("Set").Range("A12:E14")
       Target.Resize(.Rows.Count, .Columns.Count).Value = .Value
     End With
     Application.EnableEvents = True
     On Error GoTo 0
 End Select
End Sub

Code eingefügt mit: Excel Code JeanieGruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Leonhard
Antworten Top
#18
Hallo Uwe,

jetzt funktioniert es super :18:  Vielen lieben Dank.
Meine Anfrage zwischendurch, ob man die Range auch variabel programmieren kann (also z.B. nicht fest auf E6, sondern bis zum letzten Eintrag in Spalte E), kann man wohl ehr nicht umsetzen nehme ich an?

Falls nicht möglich auch kein Beinbruch. Nochmal vielen Dank für deine Hilfe

Beste Grüße
leo
Antworten Top
#19
Hallo Leo,

(11.04.2019, 08:17)Leonhard schrieb: Meine Anfrage zwischendurch, ob man die Range auch variabel programmieren kann (also z.B. nicht fest auf E6, sondern bis zum letzten Eintrag in Spalte E), kann man wohl ehr nicht umsetzen nehme ich an?

das geht schon. Ich habe im Blatt Set die Sets so angeordnet, dass sie komplett von leeren Zellen umgeben sind.
Schau es Dir mal an.


.xlsm   Set_Kuwer.xlsm (Größe: 18,34 KB / Downloads: 1)

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Leonhard
Antworten Top


Gehe zu:


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