Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro abhängig von Zelleninhalt

Makro abhängig von Zelleninhalt
Zelleninhalt
Hallo,
Ich möchte in einem Arbeitsblatt abhängig von dem Eintrag in Spalte C unterschiedliche Makros ausführen
Folgendes stelle ich mir vor
in Spalte B habe ich fortlaufende Nummern eins bis xx
In Spalte C wird über Daten; Gültigkeit, "A" oder "B" eingetragen
Wenn "A" Makro1 aufrufen bei klick auf die B
Wenn "B" Makro2 aufrufen bei klick auf die B
Geht das ?
Könnt Ihr mir einen Lösungsansatz nennen?
Ich bin recht grün in VBA habe ein paar Gehversuche schon hinter mir aber mit so Variablen....
Momentan hab ich folgendes eingebaut:

Option Explicit
'Vorlage öffnen
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, [B6:B255]) Is Nothing Then
ActiveCell.Select
Selection.Copy
Workbooks.Add Template:="O:\Vorlage.xlt"
Range("S5:Y5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
End Sub

Möchte aber Wahlweise ein andere Vorlage öffnen. Pfad bleibt gleich Vorlagenname geändert
Danke schon mal für ein paar Tips
Al
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro abhängig von Zelleninhalt
22.09.2010 23:11:41
Zelleninhalt
Hallo Al,
hier ein Vorschlag
Gruß
Franz
Option Explicit
'Vorlage öffnen
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sVorlage As String, sPfad As String
'sPfad  =  "O:"
sPfad = "C:\Users\Public\Test"
If Not Application.Intersect(Target, [B6:B255]) Is Nothing _
And Target.Cells.Count = 1 Then
Select Case Target.Offset(0, 1).Value 'Werte in Spalte C (rechte Nachbarspalte von B)
Case "A", "B" 'alle gültige Einträge für Spalte C - Schreibweise (Groß/Klein beachten)!
Select Case Target.Offset(0, 1).Value
Case "A": sVorlage = "VorlageA.xlt"
Case "B": sVorlage = "VorlageB.xlt"
End Select
Workbooks.Add Template:=sPfad & "\" & sVorlage
Target.Copy Destination:=ActiveSheet.Range("S5:Y5")
ActiveSheet.Range("S5").Select 'Nicht unbedingt erforderlich
Application.CutCopyMode = False
Case Else
'do nothing
End Select
End If
End Sub

Anzeige
AW: Makro abhängig von Zelleninhalt
23.09.2010 17:16:23
Zelleninhalt
Boah Klasse das funktioniert!!
Und kaum jemand gezeigt schon neue Anforderung....
Hab es aber gekonnt :)
Option Explicit
'Vorlage öffnen
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sVorlage As String, sPfad As String
'sPfad  =  "O:"
sPfad = "O:\Draft\Workload"
If Not Application.Intersect(Target, [B2:B255]) Is Nothing _
And Target.Cells.Count = 1 Then
Select Case Target.Offset(0, 1).Value 'Werte in Spalte C (rechte Nachbarspalte von B)
Case "E", "V", "V-E" 'alle gültige Einträge für Spalte C - Schreibweise (Groß/Klein  _
beachten)!
Select Case Target.Offset(0, 1).Value
Case "E": sVorlage = "E_Vorlage.xlt"
Case "V": sVorlage = "V_Vorlage.xlt"
Case "V-E": sVorlage = "VE_Vorlage.xlt"
End Select
Workbooks.Add Template:=sPfad & "\" & sVorlage
Target.Copy Destination:=ActiveSheet.Range("S4:Y4")
ActiveSheet.Range("S4").Select 'Nicht unbedingt erforderlich
Application.CutCopyMode = False
Case Else
'do nothing
End Select
End If
End Sub
Jetzt stellt sich eine andere Frage, für die ich noch keine Lösung habe, aber auch noch nicht wirklich gesucht habe....
Kann ich bei diesen drei Vorlagen auch den Pfad hinterlegen das dieser bereits vorgewählt ist beim Speichern
Das wär klasse
Ich geh mal suchen ob ich was finde....
Danke in jedem Fall schon mal
Al
Anzeige
Makro abhängig von Zelleninhalt
23.09.2010 23:12:38
Zelleninhalt
Hallo Al,
das gewünschte Verzeichnis zum Speichern kannst du einer Variablen zuordnen. Entweder für jeden Case oder einmalig zu Beginn der Prozedur.
Sicherheitshalber hab ich auch den Wechsel des aktuellen Laufwerks eingebaut.
Gruß
Franz
'Vorlage öffnen
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sVorlage As String, sPfad As String, sPfadSpeichern As String, sLaufwerk As String
sPfad = "O:\Draft\Workload"
If Not Application.Intersect(Target, [B2:B255]) Is Nothing _
And Target.Cells.Count = 1 Then
Select Case Target.Offset(0, 1).Value 'Werte in Spalte C (rechte Nachbarspalte von B)
Case "E", "V", "V-E" 'alle gültige Einträge für Spalte C - Schreibweise (Groß/Klein _
beachten)!
Select Case Target.Offset(0, 1).Value
Case "E"
sVorlage = "E_Vorlage.xlt"
sPfadSpeichern = "C:\Users\Public\Test\01"
Case "V"
sVorlage = "V_Vorlage.xlt"
sPfadSpeichern = "C:\Users\Public\Test\Daten"
Case "V-E"
sVorlage = "VE_Vorlage.xlt"
sPfadSpeichern = "C:\Users\Public\Test\Archiv"
End Select
Workbooks.Add Template:=sPfad & "\" & sVorlage
Target.Copy Destination:=ActiveSheet.Range("S4:Y4")
ActiveSheet.Range("S4").Select 'Nicht unbedingt erforderlich
Application.CutCopyMode = False
'aktuelles Laufwerk wechseln auf Laufwerk des Speicherpfads
sLaufwerk = Left(sPfadSpeichern, 1)
VBA.ChDrive sLaufwerk
'aktuelles Verzeichnis wechseln
VBA.ChDir sPfadSpeichern
Case Else
'do nothing
End Select
End If
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige