Ja, da war noch ein Fehler...
22.06.2017 09:54:52
Michael
Gerhard,
...so sollte der Code auf jeden Fall mal klappen:
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim WsQ As Worksheet: Set WsQ = Wb.Worksheets("Tabelle1")
Dim WsZ As Worksheet: Set WsZ = Wb.Worksheets("Tabelle2")
Dim Dat As Range, Ite As Range, t$, s As Shape
Set Dat = WsQ.Range("A2:A" & WsQ.Cells(WsQ.Rows.Count, 1).End(xlUp).Row)
WsZ.Activate
For Each Ite In Dat
t = Ite.Value & Chr(10) & Chr(10) & Ite.Offset(, 1).Value
With WsZ
Set s = .Shapes.AddShape(msoShapeRectangle, _
.Cells(1, Ite.Value).Left, _
.Cells(1, Ite.Value).Top, _
.Cells(1, Ite.Value).Width, _
.Cells(1, Ite.Value).Height * 5)
s.Select
With Selection
.ShapeRange.TextFrame2.TextRange.Characters.Text = t
.ShapeRange.TextFrame2.TextRange.ParagraphFormat.Alignment = _
msoAlignCenter
.ShapeRange.TextFrame2.TextRange.Characters(1, 1).Font.Bold = msoFalse
.ShapeRange.TextFrame2.TextRange.Characters(1, 1).Font.Bold = msoTrue
.ShapeRange.Fill.ForeColor.RGB = Ite.Offset(, 2).Interior.Color
End With
Set s = .Shapes.AddShape(msoShapeOval, _
.Cells(1, Ite.Value).Left, _
.Cells(1, Ite.Value).Top, _
.Cells(1, Ite.Value).Width, _
.Cells(1, Ite.Value).Height * 5 / 3 * 2)
s.Select
With Selection
.ShapeRange.Fill.Visible = msoFalse
.ShapeRange.Line.Visible = msoTrue
.ShapeRange.Line.Weight = 2.25
.ShapeRange.Line.ForeColor.RGB = vbWhite
End With
End With
Next Ite
End Sub
Wie gesagt, der Rest sind dann Optimierungen.
LG
Michael