[EXCEL/VBA] Tekst in range vervangen door afbeelding

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Frituurman
  • Registratie: Februari 2008
  • Laatst online: 13:25
Hallo allemaal,

Hier weer eens een vraag van de n00b bij uitstek op het gebied van VBA: ikke! :)

Momenteel ben ik bezig met een formulier die uiteindelijk een rapportage gaat uitpoepen. Dat werkt tot nu toe prima, maar ik ben bezig om het net wat mooier te krijgen. Een van de dingen die ik daarom wil doen is in kolom A de cellen die een specifieke waarde bevatten, een afbeelding te plaatsen. Die afbeelding wil ik 'iets' buiten de betreffende de cel laten uitsteken (aan de bovenkant).

Ik ben al een tijdje bezig geweest en ik heb een script die deels kan wat ik wil:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub KomtDatPlaatje()
Dim ws As Worksheet, cell As Range
Set ws = ThisWorkbook.Sheets("Rapportage")

Dim fPath, fDir As String

fDir = "C:\Specifieke\Map\Met\Afbeeldingen\"  'de DIR met de afbeeldingen
For Each cell In ws.[A1:A150] 'de range van cellen waar het moet gaan gebeuren
    fPath = fDir & cell.Value
    With ws.Pictures.Insert(fPath)
        With .ShapeRange
            .Width = 23
            .Height = 23
        End With
        .PrintObject = True
        .Top = cell.Top
        .Left = cell.Left
        
    End With

Next
End Sub


Deze code kijkt naar de waarde van de betreffende cel en kijkt of er een corresponderend plaatje is bij de naam. In Kolom A komen naast de specifieke waarden voor plaatjesnamen (bijvoorbeeld Afbeelding1.png en Afbeelding2.png) echter ook lege cellen voor en cellen met complete teksten.
  1. Ik wil nu graag bewerkstelligen dat de code alleen een afbeelding plaatst in de cellen met waarde Afbeelding1.png en Afbeelding2.png en dus cellen met andere inhoud of lege cellen overslaat!
  2. Ik wil dat de afbeelding niet uiterst links en top wordt weergegeven, maar met een kleine inspringing vanaf links en de afbeelding moet een beetje (pixelwerk) uit de cel 'steken'.
Zou iemand me kunnen helpen?

EDIT: Het gaat me vooral om punt 1 :)

"Het probleem van quotes op internet is dat ze vaak niet kloppen of in elk geval niet herleidbaar zijn" - Vincent van Gogh


Acties:
  • 0 Henk 'm!

  • m-vw
  • Registratie: Mei 2013
  • Laatst online: 21:29

m-vw

GEZOCHT: De Kluts

If..... then

Garmin FR245M + HRM-RUN


Acties:
  • 0 Henk 'm!

  • Frituurman
  • Registratie: Februari 2008
  • Laatst online: 13:25
Bedankt voor deze toevoeging. Ik heb daarmee gestoeid, maar ik krijg het niet voor elkaar en ik krijg tal van compileerfouten. Ik heb niet eens een idee wáár ik dit neer moet zetten. :( Zoals gezegd, ik ben een n00b op dit gebied. Het leek me verstandiger om de werkende code neer te zetten met een wens (die ik zelf niet voor elkaar krijg).

"Het probleem van quotes op internet is dat ze vaak niet kloppen of in elk geval niet herleidbaar zijn" - Vincent van Gogh


Acties:
  • 0 Henk 'm!

  • heuveltje
  • Registratie: Februari 2000
  • Laatst online: 18:04

heuveltje

KoelkastFilosoof

Grappig, nooit geweten dat je rechtstreeks afbeeldingen kan invoeren, weer wat geleerd :)


https://www.excel-easy.com/vba/if-then-statement.html

je wilt iets van if cell.value = "plaajte" then .. doen
Dit doe je op het eerste punt nadat je de cel bepaald hebt,

Heuveltjes CPU geschiedenis door de jaren heen : AMD 486dx4 100, Cyrix PR166+, Intel P233MMX, Intel Celeron 366Mhz, AMD K6-450, AMD duron 600, AMD Thunderbird 1200mhz, AMD Athlon 64 x2 5600, AMD Phenom X3 720, Intel i5 4460, AMD Ryzen 5 3600 5800x3d


Acties:
  • 0 Henk 'm!

  • m-vw
  • Registratie: Mei 2013
  • Laatst online: 21:29

m-vw

GEZOCHT: De Kluts

Je huidige macro kijkt niet wat er in een cel staat, maar zet gewoon voor iedere waarde een plaatje.

Afhankelijk van de aantal varianten kan je werken met:
Visual Basic:
1
2
3
4
5
If cell.value="Afbeelding1" or cell.value="Afbeelding2" then

Code

End If

Garmin FR245M + HRM-RUN


Acties:
  • 0 Henk 'm!

  • Frituurman
  • Registratie: Februari 2008
  • Laatst online: 13:25
m-vw schreef op woensdag 17 oktober 2018 @ 12:08:
Je huidige macro kijkt niet wat er in een cel staat, maar zet gewoon voor iedere waarde een plaatje.

Afhankelijk van de aantal varianten kan je werken met:
Visual Basic:
1
2
3
4
5
If cell.value="Afbeelding1" or cell.value="Afbeelding2" then

Code

End If
Ha! Geweldig! Het was dus inderdaad de plek in de code. Inmiddels heb ik het werkend gekregen met jouw toevoeging:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub KomtDatPlaatje()
Dim ws As Worksheet, cell As Range
Set ws = ThisWorkbook.Sheets("Rapportage")

Dim fPath, fDir As String

fDir = "C:\Specifieke\Map\Met\Afbeeldingen\"  'de DIR met de afbeeldingen
For Each cell In ws.[A1:A150] 'de range van cellen waar het moet gaan gebeuren
If cell.Value = "Afbeelding1.png" Or cell.Value = "Afbeelding2.png" Then
    fPath = fDir & cell.Value
    With ws.Pictures.Insert(fPath)
        With .ShapeRange
            .Width = 23
            .Height = 23
        End With
        .PrintObject = True
        .Top = cell.Top
        .Left = cell.Left
        
    End With
    End If
Next
End Sub
heuveltje schreef op woensdag 17 oktober 2018 @ 12:06:
Grappig, nooit geweten dat je rechtstreeks afbeeldingen kan invoeren, weer wat geleerd :)


https://www.excel-easy.com/vba/if-then-statement.html

je wilt iets van if cell.value = "plaajte" then .. doen
Dit doe je op het eerste punt nadat je de cel bepaald hebt,
Ik wist het ook niet, totdat ik er naar ging zoeken :)

[ Voor 16% gewijzigd door Frituurman op 17-10-2018 12:53 ]

"Het probleem van quotes op internet is dat ze vaak niet kloppen of in elk geval niet herleidbaar zijn" - Vincent van Gogh

Pagina: 1