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

Formen via VBA mit Zellbezug formatieren

Formen via VBA mit Zellbezug formatieren
26.01.2018 18:12:44
Sp1n0z4
Hallo zusammen,
ich möchte eine Form via Zellbezug formatieren.
Ziel soll sein, eine Weltkarte automatisiert mit Kreisen zu füllen, je nach Ausgangspunkt.
Mir fehlt eigentlich nur der Code, wie ich dem Code sage, dass er immer mit einer bestimmten Zelle arbeiten soll.
Bspw.
A1 Deutschland = X EUR Umsatz = Größe 10
A...
A...
A...
A100 Russland = X EUR Umsatz = Größe 20
Die Shapes würde ich schon selbst auf die richtige Stelle schieben. Lediglich die Größe soll angepasst werden.
Geht das?
Lieben Gruß

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Weltkarte
27.01.2018 03:56:32
Rainer
Hallo Spinoza,
Schau mal hier:
https://www.herber.de/bbs/user/119314.xlsx
Anleitung: Für jedes Land erstellst du einen neuen Kreis (oder jedes andere "Shape") und bennenst ihn so, wie es in Spalte A eingetragen wird. Farbe usw. kannst du frei wählen.
Die Weltkarte hat den Namen "WorldMap". Wenn du die Grafik austauschst, dann musst du die neue Grafik auch so benennen. Die Schwierigkeit ist, eine zylindrische Projektion mit aequidistanten Längen und Breiten zu finden, die auch noch exact -180 ... 180° abbildet. Ich dachte es sollte eine "Mercator" Karte sein, habe aber keine passende gefunden. Wenn die Karte nicht 100% passt, dann kannst du die Kooridinaten modifizieren. Deutschland liegt dann nicht bei 50N und 10E, Australien nicht bei 25S und 130E.
Dann erstellst du ein VBA-Modul mit folgendem Code:

Sub Koordinaten()
Dim sht As Worksheet
Dim LastRow As Long
Set sht = ActiveSheet
Map_X = 800    'Size of zylindrical projection world map
Map_Y = 400    'Size of zylindrical projection world map
Map_Left = 0    'Position in Excel Sheet of zylindrical projection world map
Map_Top = 60     'Position in Excel Sheet of zylindrical projection world map
With sht.Shapes.Range(Array("WorldMap"))
.LockAspectRatio = msoFalse
.Width = Map_X
.Height = Map_Y
.Left = Map_Left
.Top = Map_Top
End With
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
For i = 1 To LastRow - 1
MyShape = sht.Range("A" & i + 1)
Size = sht.Range("B" & i + 1)
Latitude = sht.Range("C" & i + 1)       '-90 ... +90 deg
Longitude = sht.Range("D" & i + 1)      '-180 ... + 180 deg
X = Map_Left + Longitude / 180 * Map_X / 2 + Map_X / 2
Y = Map_Top + Latitude / 90 * -1 * Map_Y / 2 + Map_Y / 2     '(-1) because "Top Orientation"
With sht.Shapes.Range(Array(MyShape))
.Width = Size
.Height = Size
.Left = X
.Top = Y
End With
Next i
End Sub
Viel Spaß damit!
Rainer
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige