Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1412to1416
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

Sheet erstellen

Sheet erstellen
05.03.2015 11:25:30
Christoph
Guten Tag Zusammen
Ich habe ein riesiges Problem, welches für euch wahrscheinlich eine einfache Aufgabe ist. ;-)
Gerne möchte ich, dass wenn im Blatt 3 in der Zelle G4 ein Wert steht, ein neues Sheet erstellt wird, und diesem den Namen der Zelle A4 gibt. In dem neuen Sheet soll ein Liniendiagramm, mit den Werten aus dem Blatt 3 Zelle C4:M4 erstellt werden und mit dem Diagrammnamen A4 vom Blatt 3. Die Grösse des Diagramms sollte 12.8 cm hoch und 20.8 cm breit sein.
Das selbe soll mit passieren wenn in der Zelle G6 ein Wert vorhanden ist, usw.
Ist dies überhaupt möglich? Ich freue mich auf ein Makro von euch. ☺
Freundliche Grüsse Christoph

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

Betreff
Datum
Anwender
Anzeige
AW: Sheet erstellen
05.03.2015 15:32:35
UweD
Hallo
so?
Sub NeuesBlatt()
Dim TB1, TB2, i&
Dim NeuBlatt$
Set TB1 = Sheets("Blatt3")
With TB1
For i = 4 To 8 Step 2
NeuBlatt = .Cells(i, 1) '1=A
If TabellenblattVorhanden(NeuBlatt) Then
MsgBox "Blatt '" & NeuBlatt & "' existiert schon"
GoTo Weiter
End If
If .Cells(i, 7)  "" Then '7=G
If NeuBlatt  "" Then
Sheets.Add After:=Sheets(Sheets.Count)
Set TB2 = ActiveSheet
TB2.Name = NeuBlatt
TB2.Shapes.AddChart.Name = NeuBlatt
With TB2.ChartObjects(NeuBlatt)
.Chart.SetSourceData Source:=Range(TB1.Name & "!$C$" & i & ":$M$" & i)
.Chart.ChartType = xlLine
.Chart.ChartTitle.Text = NeuBlatt
.Left = 20
.Top = 20
.Width = 72 / 2.54 * 20.8 ' ggf anpassen
.Height = 72 / 2.54 * 12.8 ' anpassen
End With
Else
MsgBox "Kein Blattname in 'A" & i & "' vorhanden"
End If
Else
MsgBox "Keine Daten in 'G" & i & "' vorhanden."
End If
Weiter:
Next
End With
End Sub
Function TabellenblattVorhanden(ByVal vName As String) As Boolean
Dim sheetSuche As Worksheet
TabellenblattVorhanden = False
For Each sheetSuche In Worksheets
If UCase(sheetSuche.Name) = UCase(vName) Then
TabellenblattVorhanden = True
Exit Function
End If
Next sheetSuche
End Function
Gruß UweD
Rückmeldung wäre nett

Anzeige
AW: Sheet erstellen
06.03.2015 11:25:36
Christoph
Hallo UweD
Du bist einfach genial. Besten Dank für dein Makro. Ich werde deine Hilfe sicherlich wieder einmal benötigen. :-) Kann man dich auch direkt per Mail erreichen? Besten Dank und einen schönen, sonnigen Tag. Grüsse Christoph

AW: Sheet erstellen
05.03.2015 15:32:40
Michael
Hallo Christoph!
... ein Problem habe ich, bei Deiner Beschreibung:
wenn im Blatt 3 in der Zelle G4 ein Wert steht
mit den Werten aus dem Blatt 3 Zelle C4:M4
Das verstehe ich nicht ganz; denn der Zellwert, der das Makro auslösen soll, soll gleichzeitig Teil der Diagrammdaten sein?
Habe Dir das jetzt einmal testweise anders umgesetzt; das folgende Makro muss in den Codeteil des 3. Tabellenblattes (!), von wo aus es ja aufgerufen werden soll - Achtung, hier gilt immer das jeweils 3. Tabellenblatt, d.h. verschobene Tabellenblätter wirken sich aus. Das Makro
- löst aus, wenn in G1 ein Wert eingetragen wird (der nicht leer ist) und
- erstellt ein neues Arbeitsblatt mit Namen aus A4 vom 3. Tabellenblatt und
- fügt ein Liniendiagramm (ohne Legende, optional) mit Daten aus C4:M4 vom 3. Tabellenblatt und
- erstellt den Diagrammtitel (oberhalb) mit dem Wert aus A4 vom 3. Tabellenblatt
Wenn weitere Zellen das Makro auslösen sollen (zB G6, wie von Dir angegeben) muss man dann noch erweitern, aber dazu ist mir noch o.a. Problematik unklar. Diagrammgröße habe ich jetzt noch außen vor gelassen - das ist nicht einfach in cm anzugeben...
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target
Case Is = Worksheets(3).Range("G1") 'Zelle die Diagrammerstellung auslöst
If Target.Value  "" Then 'Zellwert darf nicht leer sein
ActiveWorkbook.Sheets.Add after:=ActiveWorkbook.Sheets(Sheets.Count)
With ActiveSheet
.Name = Worksheets(3).Range("A4") 'Blattname aus Zelle A4 vom 3. Blatt
.Shapes.AddChart.Select
End With
With ActiveChart
.ChartType = xlLine
.SetSourceData Source:=Worksheets(3).Range("C4:M4") 'Werte aus C4:M4 vom 3.  _
Blatt
.SetElement (msoElementChartTitleAboveChart)
.ChartTitle.Caption = Worksheets(3).Range("A4") 'Diagrammtitel aus A4 vom 3. _
Blatt
.Legend.Delete 'Legende entfernen, optional
End With
End If
Case Else
End Select
End Sub

Gib Bescheid!
LG
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige