Toon posts:

[EXCEL/VBA] Tekst in range vervangen door afbeelding

Pagina: 1
Acties:

  • Frituurman
  • Registratie: Februari 2008
  • Laatst online: 17:24
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


  • m-vw
  • Registratie: Mei 2013
  • Laatst online: 27-01 20:25

m-vw

GEZOCHT: De Kluts

If..... then

Garmin FR245M + HRM-RUN


  • Frituurman
  • Registratie: Februari 2008
  • Laatst online: 17:24
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


  • heuveltje
  • Registratie: Februari 2000
  • Laatst online: 13:06

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 Pentium 233MMX, 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


  • m-vw
  • Registratie: Mei 2013
  • Laatst online: 27-01 20:25

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


  • Frituurman
  • Registratie: Februari 2008
  • Laatst online: 17:24
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


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee