Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
988to992
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
988to992
988to992
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zelländerung = Änderung Registername

Zelländerung = Änderung Registername
23.06.2008 14:17:49
Martin
Hallo Gemeinde,
ich habe da mal eine Frage.
Ich habe ein kleines Programm geschrieben, das mir beim Öffnen des Excel Dokuments die Register nach einem bestimmten Registernamen (Max Mustermann) durchsucht.
Ist ein solches Register nicht vorhanden, wird es Erzeugt. Dabei wird der Name (Max Mustermann) in die Zelle D5 geschrieben und das Register natürlich auch Max Mustermann genannt.
Nun mein Problem:
Wenn ich in D5 des Registers Max Mustermann einen anderen Namen schreibe, dann möchte ich das anhand dieses Namens das Register neu benannt wird.
Hatte dazu folgenden Code in die Arbeitsmappe geschrieben:

Sub aenderung()
If ThisWorkbook.Worksheets("Max Mustermann").Range("D5")  "Max Mustermann" Then
Sheets("Max Mustermann").Range("D5")
Worksheets("Max Mustermann").name = Sheets("Max Mustermann").Range("D5")
End If
End Sub


Da ich vorher nicht weiß, ob es ein Register Max Mustermann gibt, kann ich die Änderung nicht unter der Tabelle1(Max Mustermann) abfangen.
Wie könnte ich das lösen?
mfg Martin

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelländerung = Änderung Registername
23.06.2008 14:23:52
Hajo_Zi
Hallo martin,
mache dies doch von Hand. Da es eine einmalige Aktion ist. Nach der ersten Änderung hat die Tabelle ja nicht mehr den Namen "Max Mustermann.

AW: evtl.so ?
23.06.2008 16:29:48
hary
Hallo Martin
Meinst Du das vieleicht so?

Dim Text
Sub nameAendern()
Text = Range("D5")
If Text = "" Then
Exit Sub
End If
If Text >= "" Then
ActiveSheet.Name = Text
End If
End Sub


Gruss Hary

AW: Zelländerung = Änderung Registername
23.06.2008 20:43:09
Chris
Servus Martin,
vllt. bringt dich das weiter:
in DieseArbeitsmappe:

Private Sub Workbook_Open()
Dim Ws As Worksheet, bol As Boolean
For Each Ws In ActiveWorkbook.Worksheets
If Ws.Name = "Max Mustermann" Then
bol = True
Exit For
End If
Next Ws
If bol = False Then
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Max Mustermann"
Call t
End If
End Sub


in ein allg.Modul:
Sub t()
intDummy = ThisWorkbook.VBProject.VBComponents(1).CodeModule.CountOfLines
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
.InsertLines 1, "


Private Sub Worksheet_Change(ByVal Target As Range)"
.InsertLines 2, "If Target.Address = ""$D$5"" Then"
.InsertLines 3, "If target.Value = """" Then Exit Sub"
.InsertLines 4, "If Target.Value  ""Max Mustermann"" Then"
.InsertLines 5, "Sheets(""Max Mustermann"").Name = Target.Value"
.InsertLines 6, "End If"
.InsertLines 7, "End if"
.InsertLines 8, "End Sub

"
End With
End Sub


Gruß
Chris

Anzeige
AW: Zelländerung = Änderung Registername
24.06.2008 12:09:20
Martin
Vielen Dank für die Vorschläge.
leider funktionieren die nur nicht.
Das Problem ist wahrscheinlich, das mir das Register erst bei Programmstart erstellt wird.
Hätte ich das Register schon vorher, dann könnte ich den dementsprechenden Code dort hinterlegen.
mfg

AW: warum?
24.06.2008 17:13:00
Chris
Servus Martin,
der 1. Code erstellt das Register, wenn noch nicht vorhanden (Workbook_Open).
der 2. Code schreibt das Makro in das neu erstellte Register (Change-Ereignis).
https://www.herber.de/bbs/user/53324.xls
Schau mal in die Beispielmappe. Da gibt es eine Tabelle mit dem Namen "Max Mustermann". Lösche diese Tabelle und speichere die Mappe ab, dann öffnest du sie wieder und schaust mal, was im CodeModul der neu erstellten Tabelle "Max Mustermann" steht.
Vorher, aber unter Extras Makros Sicherheit Vertrauenswürdige Herausgeber den Haken bei Zugriff auf VB-Projekt vertrauen setzen.
Gruß
Chris

Anzeige
AW: AW:kleine Nachbesserung für das...
24.06.2008 21:43:23
Martin
Mensch Chris,
das geht ja super !!
Jetzt muss ich nur noch durch den Code blicken und alles ist gut.
Vielen Dank für deine/eure Hilfe !
mfgMartin

AW: AW:kleine Nachbesserung für das...
25.06.2008 09:59:00
Martin
Hallo Chris,
an meinem Home-Rechner mit Office 2000 gehts super.
Jetzt habe ich noch eine Kurze Frage.
Kann man das Progrämmchen auch so schreiben, das man nicht extra das Häkchen unter
Extras - Makro - Sicherheit - Zugriff auf Visual Basic Projekte vertauen
machen muss?

Anzeige
AW: AW:kleine Nachbesserung für das...
25.06.2008 10:02:11
Hajo_Zi
Hallo martin,
das geht aus Sicherheitsgründen nicht.

AW: AW:kleine Nachbesserung für das...
25.06.2008 11:22:29
Martin
Hallo,
ich habe mir auf deiner Antwort hin eine Frage gestellt:
Würde es gehen, wenn ich eine Art Stammblatt mache, dies verstecke und dann zur Erzeugung
von den neuen Tabellenblättern kopiere?

So z.B.
Sheets("Template_person").Copy After:=Sheets(1)
ActiveSheet.name = "Max Mustermann"
Sheets("Max Mustermann").Cells(namens_zeile, namens_spalte) = "Max Mustermann"
Unter dem Blatt Template_person kann ich doch ein Makro schreiben, das dann auf die neuen
Blätter mitkopiert wird.
Gleich bei einem ersten Versuch hat es funktioniert.
Hatte dazu folgendes unter Template_person geschrieben:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim nam As String
Set Target = Sheets("Max Mustermann").Range("D5")
If ActiveSheet.name = "Max Mustermann" Then
If Target  "Max Mustermann" Then
nam = Target.Value
ActiveSheet.name = nam
End If
End If
End Sub


Vielen Dank für Eure Mühen
Martin

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige