185 Aufrufe
Gefragt in Tabellenkalkulation von addeguddi Experte (2.5k Punkte)
Bearbeitet von addeguddi
Ich denke, das ich hier keine Antwort erhalte. Da es einige Einträge zu diesem Thema gibt. Doch leider verstehe ich das VBA nicht habe schon Zig mal ausprobiert. Es liegt bestimmt an meinem Alter.

Hallo und einen schönen Tag,

Stehe wieder mal auf dem Schlauch. Kann mir vielleicht jemand helfen?

Hoffe, bringe mein Anliegen verständnisvoll / Formulierung rüber!

Suche eine Eingabeerleichterung. Bei alter Liste muss ich meine Bilder immer kopieren und einfügen.

Möchte nur Bilder mit der Anzahl Spieler anzeigen und in einem bestimmten Tabellenblatt eingefügt werden wenn Spieler dran ist.

In dieser Formel sind die Bilder hinterlegt. In diesem Fall sind es Zwei Bilder und zwei Namen.

Dabei handelt es sich um eine Runde.

Alte Formel: ist mit indirekt erstellt worden wobei ich hier die Bilder bis zu 50 mal kopieren musste..

Neue Formel:

=INDEX(Tabelle2!$B$3:$B$4;Tabelle2!$C$3)

Bis hier hin ist alles OK. Nun mein eigentliches Anliegen:

Diese zwei Spieler spielen mehrere Runden, das bedeutet:

In der Zelle C3 wird die Spielernummer angezeigt wer dran ist und dem Entsprechend das Bild angezeigt. Im obigem Falle, die 1 und die 2. Sowie die 3 oder vier erscheint bleibt das letzte Bild stehen und ändert sich nicht.

Wie kann ich, ohne dass ich die Bilder Zigmal kopieren muss, erreichen das die Bilder sich ändern?

Kann ich irgendwie diese Formel in die Obige mit einbinden und wie??

Diese sagt aus: wer am Spiel ist und den dazugehörigen Namen

Bestimmte Zellen können sich verändern.

=WENNFEHLER(WENN($J$1=1;$K3;WENN($J$1=3;$Q3;WENN($J$1=5;$W3;WENN($J$1=7;$AC3;WENN($J$1=9;$AI3;WENN($J$1=11;$AO3;WENN($J$1=13;$AU3;WENN($J$1=15;$BA3;WENN($J$1=17;$BG3;WENN($J$1=19;$BM3;WENN($J$1=21;$BS3;WENN($J$1=23;$BY3;WENN($J$1=25;$CE3;WENN($J$1=27;$CK3;WENN($J$1=29;$CQ3;WENN($J$1=31;$CW3;WENN($J$1=33;$DC3;WENN($J$1=35;$DI3;WENN($J$1=37;$DO3;WENN($J$1=39;$DU3;WENN($J$1=41;$EA3;WENN($J$1=43;$EG3;WENN($J$1=45;$EM3;WENN($J$1=47;$ES3; WENN($J$1=2;$N$3;WENN($J$1=4;$T$3;WENN($J$1=6;$Z$3;WENN($J$1=8;$AF$3;WENN($J$1=10;$AL$3;WENN($J$1=12;$AR$3;WENN($J$1=14;$AX$3;WENN($J$1=16;$BD$3;WENN($J$1=18;$BJ$3;WENN($J$1=20;$BP$3;WENN($J$1=22;$BV$3;WENN($J$1=24;$CB$3;WENN($J$1=26;$CH$3;WENN($J$1=28;$CN$3;WENN($J$1=30;$CT$3;WENN($J$1=32;$CZ$3;WENN($J$1=34;$DF$3;WENN($J$1=36;$DL$3;WENN($J$1=38;$DR$3;WENN($J$1=40;$DX$3;WENN($J$1=42;$ED$3;WENN($J$1=44;$EJ$3;WENN($J$1=46;$EP$3;WENN($J$1=48;$EV$3))))))))))))))))))))))))))))))))))))))))))))))));"")

Gruß Adde

2 Antworten

+1 Punkt
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Adde,

ich habe mal eine benutzerdefinierte Funktion erstellt, die das Richtige für deine Zwecke sein könnte. Voraussetzung ist, dass die Bilder in einem gemeinsamen Verzeichnis auf der Festplatte liegen.

Füge den folgenden Code in ein Standardmodul deiner Arbeitsmappe ein:

Public Function ZeigeBild(ByVal strBildname As String, Bildhöhe As Long) As String

Dim strDatei As String
Dim Bildbreite As Double
Dim Bildhoehe As Double
Dim meinBild
Dim strZielzelle As String
Dim shpBild As Shape

'Adresse, aus der die Formel aufgerufen wurde
strZielzelle = Application.Caller.Address

'ggf. vorhandenes Bild in Zelle löschen
For Each shpBild In ActiveSheet.Shapes
    If shpBild.TopLeftCell.Address = strZielzelle Then shpBild.Delete
Next

'Pfad in dem die Bilder liegen ggf. anpassen
strDatei = "C:\Test\" & strBildname & ".jpg"

If Dir(strDatei) <> "" Then
  Set meinBild = LoadPicture(strDatei)
  Bildbreite = meinBild.Width
  Bildhoehe = meinBild.Height
  'zur Umrechnung von Zentimetern in Punkte: 1 cm = 28,35 pt
  ActiveSheet.Shapes.AddPicture strDatei, msoFalse, msoTrue, Range(strZielzelle).Left, Range(strZielzelle).Top, Bildhöhe * 28.35 * Bildbreite / Bildhoehe, Bildhöhe * 28.35
  ZeigeBild = "Bild"
 Else
  ZeigeBild = "Bild nicht vorhanden"
End If

End Function


Der Aufruf erfolgt in der Zelle, in der das Bild angezeigt werden soll in der Form:

=ZeigeBild("Bildname",Höhe des Bildes)

In deinem Fall würdest du in der Zelle, in der das Bild erscheinen soll die Formel

=ZeigeBild(C3;2)

Dabei gehe ich davon aus, dass die Bildernamen den Spielernummern entsprechenen. Das Bild wird dann mit einer Höhe von 2 cm skaliert eingefügt. Den Pfad, in dem die Bilder liegen, musst du natürlich auf deine Verhältnisse anpassen. Da die Bilder der Spieler sich ändern, werden in der Zielzelle eventuell vorhandene Bilder gelöscht.

Haben die Bilder andere Namen als die Nummer des Spielers, so kannst du diese ja z.B. über eine SVERWEIS-Formel abfragen. Die Bildnamen werden hier ohne Endung (jpg) angegeben. Hast du ein anderes Format, so ändere das im Code ab. Wenn du die Namen mit Endung hinterlegt hast, so kann man den Code auch einfach so anpassen, dass nur die Namen eingelesen werden.

In dem Fall ändere die Zeile

'Pfad in dem die Bilder liegen ggf. anpassen
strDatei = "C:\Test\" & strBildname & ".jpg"

in

'Pfad in dem die Bilder liegen ggf. anpassen
strDatei = "C:\Test\" & strBildname

Gruß

M.O.

0 Punkte
Beantwortet von addeguddi Experte (2.5k Punkte)
Guten Moregn M.O.

vielen lieben Dank für deine Antwort. Hätte nicht erwartet das jemand antwortet. Werde es es versuchen, denke aber das es klappt.

Gruß Adde
...