Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Prüfen in Welcher Zelle ein Makro ausgeführt wird

Prüfen in Welcher Zelle ein Makro ausgeführt wird
28.11.2014 11:38:50
Steven
Guten Tag,
Ich habe ein Problem bei einem VBA
und zwar:
Ich habe eine Tabelle "Namen"
In dieser schreibe ich in Zellen untereinander verschiedene Namen
In einer anderen Tabelle will ich nun tabbel mit diesen Namen anlegen.
Das soll aber so gemacht werden, dass, wenn ein neuer Name dazu kommt, eine neue Spalte erstellt wird.
Das wollte ich über ein Makro lösen, welches ich so aufrufe
=WENN(B3"";startmakro();"")
Diese Formel wird in eine Zelle über der eigenen Tabelle geschrieben, und über die länge der Tabelle gezogen. (Also B3 ist variabel, d.h. B3, C3, D3 usw)
Gibt es da eine Möglichkeit, die Zeichenfolge "B3" über eine Variable beispielsweise an den VBA code zu übergeben?
Oder eine andere Idee, die ich hatte.
Gibt es einen VBA Code, der feststellt in welcher Zelle der Code ausgeführt wird.
Wenn ich es nicht anschaulich genug erklärt habe, könnte ich auch versuchen eine Beispieldatei hochzuladen.
Danke im Vorraus für ihre Hilfe.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen in Welcher Zelle ein Makro ausge
28.11.2014 12:02:05
Klaus
Hallo Steven,
Übergib das WENN doch einfach mit ins Makro ...
=startmakro(B3)
Public Function startmakro(FromWhere As Range)
If FromWhere.Value  "" Then
DEIN MAKRO
Else
startmakro = ""
End If
End Function
Grüße,
Klaus M.vdT.

AW: Prüfen in Welcher Zelle ein Makro ausge
28.11.2014 12:28:46
Steven
Danke schonmal für deine Antwort.
War schon sehr hilfreich.
Das was ich gesucht hatte, war FromWhere.Adress
Danke für das Grundgerüst, und den Ansatz.

Danke für die Rückmeldung! mit Text
28.11.2014 12:41:42
Klaus
Hallo Steven,
danke für die Rückmeldung! Nur zum Klarstellen: "FromWhere" ist eine selbst benannte Variable, kein Befehl. Was du gesucht hattest war als, Variablen in Functions zu übergeben.
Was dir vielleicht auch helfen kann:
Application.Caller.Address
Damit bekommt du die Adresse, in der die Formel selbst steht.
Grüße,
Klaus M.vdT.

Anzeige
AW: Danke für die Rückmeldung! mit Text
01.12.2014 16:37:20
Steven
Hallo Klaus,
Ich habe nun ein anderes Problem und zwar:
Ich rufe die Wenn-Funktion nun über die funktion auf und in den DANN und SONST-Zweigen soll jeweils eine eigen Prozedur gestartet werden.
In diese komme ich auch rein, aber ich kann keine andere Zellen makieren.

Public Function startmakro(FromWhere As Range)
Dim zelle As String
Dim buchstabe As String
Dim buchstabe_fertig As String
Dim laenge As Long
If FromWhere.Value  "" Then
'Buchstabe aus Zelle filtern
zelle = Application.Caller.Address
MsgBox (zelle)
buchstabe = Mid(zelle, 2, 2)
If InStr(1, buchstabe, "$")  0 Then
buchstabe_fertig = Left(buchstabe, 1)
'Rahmen setzen
Call Wenn(zelle, buchstabe, buchstabe_fertig, laenge)
Else
End If
'buchstabe_fertig =
'Range("C4").Value = "abc"
'Test
'laenge = InStr(1, buchstabe, "$")
'MsgBox (laenge)
MsgBox (buchstabe_fertig)
startmakro = ""
Else
startmakro = ""
End If
End Function
Sub Wenn(zelle As String, buchstabe As String, buchstabe_fertig As String, laenge As Long)
Dim test As String
Dim i As String
Dim j As String
i = 4
j = 8
Range(buchstabe_fertig & i & ": " & buchstabe_fertig & j).Select
Wenn der Code nicht hilft ohne datei, kann ich auch die selbige hochladen

Anzeige
AW: Danke für die Rückmeldung! mit Text
01.12.2014 17:06:54
Klaus
Hallo Steven,
aus Functions kannst und darfst du keine Zellen markieren, Punkt. Eine Messagebox aus einer Function aufzurufen funktioniert zwar, ist aber grob fahrlässig. Wenn du sagst was du vorhast, kann man vielleicht gezielter helfen.
Sub Wenn()
=WENN ist eine Formel. Benenne Subs oder Functions nicht nach Befehlen die es bereits gibt, das macht nur Folgeprobleme. Wenn du nicht kreativ genug bist, häng einfach ein "My" vor den Namen!
Sub MyWenn()
ist eindeutig und nicht verwechselbar.
Grüße,
Klaus M.vdT.

AW: Danke für die Rückmeldung! mit Text
02.12.2014 11:01:47
Steven
Hi
Die MsgBox war nur aus Testzwecken da.
Ich möchte einen Bereich unter den Namen mit Rahmen versehen.
Also die namen werden aus einem anderen Tabellenblatt eingefügt.
Unter den eingefügten Namen sollen dünnere Rahmen gesetzt werden und die Zelle mit dem Namen soll einen dickeren Rahmen erhalten.
Das Rahmen vergeben, habe ich schon aufgezeichnet.
Das Problem daran ist, dass ich die bestimmten Zellen nicht markieren kann.
Das wollte ich hiermit versuchen
Range(buchstabe_fertig & i & ": " & buchstabe_fertig & j).Select
(i = 4, j = 8 - war auch nur zu testzwecken)
hier die Datei:
https://www.herber.de/bbs/user/94140.xlsm
Ist bestimmt nur ein kleinerer Fehler und ich steh auf dem Schlauch
Ich bedanke mich schonmal für deine Hilfe.

Anzeige
AW: Danke für die Rückmeldung! mit Text
03.12.2014 08:09:27
Klaus
Hallo Steven,
du bist komplett auf dem Holzweg, da kann ich auch nicht helfen.
Es macht überhaupt keinen Sinn, die Rahmensetzung über eine Function-UDF aus Excel heraus aufzurufen. Es gibt ein paar Sachen die in Functions nicht gut gehen - dazu gehört Rahmensetzung.
Vergiss alle Functions und mache einen BUTTON der das ganze als MAKRO aufruft! Anders kommst du nicht weiter.
Völlig unabhängig davon empfehle ich dir folgendes Tutorial:
http://www.online-excel.de/excel/singsel_vba.php?f=78
Und du wirst sehen, das dein Code an sich noch ziemliches Optimierungspotential hat, auf .select und .activate kannst du nämlich komplett verzichten
Grüße,
Klaus M.vdT.

Anzeige
AW: Danke für die Rückmeldung! mit Text
03.12.2014 08:23:31
Steven
OK danke
hab ich mir schon gedacht.
Danke trotzdem für deine Mühen. ;)

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige