PDA

Vollständige Version anzeigen : Makro ausführen lassen bei Klick auf Zeile, im Makro entsprechend Bereich verschieben


VBAFirst
25.08.2017, 10:26
Hallo zusammen,

ich versuche gerade folgendes umzusetzen jedoch weiß ich ab hier nicht mehr weiter.

Gibt es eine Möglichkeit das die Bezüge des Makros um den Bereich einfach verschoben werden in jene Zeile in Excel in die man klickt?

Aktuell läuft es auf die Bezüge der Zeile 3. Ich benötige nun aber z.B. die Zeile 10 mit den Bezügen aus der Tabelle. Gibt es daher einen Code Zusatz der bei Klick auf eine andere Zeile entsprechend die Bezüge verschíet nach dorthin?


Sub test()
Dim olApp As Object
Dim olOldBody As String

Set olApp = CreateObject("Outlook.Application")

With olApp.CreateItem(0)

.GetInspector.Display
olOldBody = .htmlBody
.To = "test"
.Subject = "TEXT" & " - " & Range("AK3") & " // TEXT >>> " & Range("J3") & " <<< TEXT // " _
& Format(Range("L3"), "#,##0") & " MWh // " & Range("G3") & " - " & Range("H3") & " // " & _
Range("I3") & " // " & Range("C3") & EMPFAENGER
.htmlBody = olOldBody
End With

End Sub

Hajo_Zi
25.08.2017, 12:14
benutze
starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, Doppelklick auf Deine Datei, Doppelklick auf Deine Tabelle, Code ins rechte Fenster kopieren, VBA Editor schließen.
Das Makro wird automatisch gestartet.
Der Code wirkt nur in dieser Tabelle.


Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub


was Du machen willst kennst Du ganz genau.

Ich lade keine Datei mit dem Namen Test... herunter.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

drambeldier
25.08.2017, 13:50
Moin,

das Ereignis Selection_Change liefert mit Target.Row und Target.Column die Zelle, die angeklickt wurde. Daraus kannst Du die passenden Ranges bauen, zB
Range(Target.Row, "C")
anstatt
Range("C3")

VBAFirst
28.08.2017, 09:52
Danke für Eure Hilfe dazu.

Ich habe den Code in der Datei umgesetzt. Bezieht sich nun auf die "Tabelle1" ausschließlich.

Allerdings hakt es beim dem Bauen der Range noch. Wie müsste ich die Ranges anlegen damit genau die Zelle gezielt getroffen werden kann?

Es soll anstatt C3 nun z.B. nun nicht die Zeile 3 sondern 23 genommen werden.

Der Code sieht aktuelle wie folgt aus, funktioniert aber noch nicht.

Müsste zur Range(Target.row, "C") noch ein Range(Target.Column, "?" verknüpft werden??
Aktuell erhalte ich
Methode 'Range' Objekt '_Worksheet' fehlgeschlagen


Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim olApp As Object
Dim olOldBody As String

Set olApp = CreateObject("Outlook.Application")

With olApp.CreateItem(0)

.GetInspector.Display
olOldBody = .htmlBody
.To = "test"
.Subject = "TEXT" & " - " & Range(Target.Row, "AK") & " // TEXT >>> " & Range(Target.Row, "J") & " <<< TEXT // " _
& Format(Range(Target.Row, "L"), "#,##0") & " MWh // " & Range(Target.Row, "G") & " - " & Range(Target.Row, "H") & " // " & _
Range(Target.Row, "I") & " // " & Range(Target.Row, "C")
.htmlBody = olOldBody
End With

End Sub



Grüße
Henry

VBAFirst
28.08.2017, 10:23
Okay, hat geklappt! Es musste nur wie folgt geändert werden.
Bsp: Range("C" & Target.Row)

Mit diesem Code funktioniert es nun wie es soll. Danke Euch:)



Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim olApp As Object
Dim olOldBody As String

Set olApp = CreateObject("Outlook.Application")

With olApp.CreateItem(0)

.GetInspector.Display
olOldBody = .htmlBody
.To = "test"
.Subject = "TEXT" & " - " & Range("AK" & Target.Row) & " // TEXT >>> " & Range("J" & Target.Row) & " <<< TEXT // " _
& Format(Range("L" & Target.Row), "#,##0") & " MWh // " & Range("G" & Target.Row) & " - " & Range("H" & Target.Row) & " // " & _
Range("I" & Target.Row) & " // " & Range("C" & Target.Row)
.htmlBody = olOldBody
End With

End Sub

VBAFirst
28.08.2017, 12:36
Gäbe es eigentlich eine Möglichkeit das ich diesen Code ebenfalls als Makro erstellen kann, so dass es als Addin verwendet werden könnte?

Quasi Bei Addin Aktivierung in der Menüleiste bezieht sich das SelectionChange auf die momentan angezeigte Tabelle??

Grüße
Henry

drambeldier
28.08.2017, 14:48
so dass es als Addin verwendet werden könnte?
Das sollte mich wundern. Excel selbst ruft beim Eintritt des Ereignisses die Prozedur auf, die im zugehörigen Tabellenblatt hinterlegt ist. Wie da ein Umbiegen auf ein AddIn ablaufen sollte, ist mir rätselhaft, lasse mich aber gern überraschen.

VBAFirst
29.08.2017, 16:03
Ja verständlich. Ich habe mir jetzt einen Workaround geschaffen in dem ich mit einem anderen Makro als Addin einfach den Tabelleninhalt in die andere Datei lade. Klappt super.
Danke an alle für die Unterstützung!