Strokescribe en VBA - componentnaam..

Status
Niet open voor verdere reacties.

henryvanbeek

Gebruiker
Lid geworden
10 jan 2007
Berichten
84
Hallo mede forumgebruikers,

Ik heb een vraagje. Sinds kort ben ik gefacsineerd door QR-Codes en voor het werk zijn we bezig om te kijken of
we klepgegevens op kunnen slaan in deze code. Je scant de code en weet gelijk met welke type klep je van doen hebt.

Nu wil ik de volgende code gebruiken

Code:
[I] data = ActiveSheet.Cells(2, 40)
   StrokeScribe1.Text = data
   data = ActiveSheet.Cells(3, 40)
   StrokeScribe2.Text = data
    data = ActiveSheet.Cells(4, 40)
   StrokeScribe3.Text = data
   data = ActiveSheet.Cells(5, 40)
   StrokeScribe4.Text = data
   data = ActiveSheet.Cells(6, 40)
   StrokeScribe5.Text = data
    data = ActiveSheet.Cells(7, 40)
   StrokeScribe6.Text = data[/I]
Elke keer als je op de "update" knop druk, loop ik deze code af en update de QR code's in de cellen. Nu is dit maar een stukje maar het zou moeten gaan tot aan
strokescribe270. En eigenlijk ben ik dan geneigd om een Loop functie te gebruiken alleen hoe verhoog ik telkens de naam van het component?

Groetjes Henry
 
Laatst bewerkt door een moderator:
maak je gebruik van het volgende? zie http://strokescribe.com/en/qr-code.html, hoofdstuk "How to create multiple QR codes in Excel using data form worksheet cells"
een voorbeeldje van jou maakt alles stukken duidelijker
 
Voor mij werkt het voorbeeld niet namelijk het voorbeeld van strokescribe plaatst nieuwe code's in het excelsheet.
Ik wil graag de code's die ik al heb geplaatst aanpassen

QRCODE.zip

Ik heb het bestandje op 4shared gezet omdat deze te groot voor hier was.
 
Code:
Option Explicit

Private Sub CommandButton1_Click()
    Dim objShape As Shape
    Dim lngRow As Long
    
        StrokeScribe1.Alphabet = QRCODE
        
        For Each objShape In Worksheets("Ventiel_overzicht ").Shapes
            If objShape.Type = msoOLEControlObject Then 'is het een plaatje?
                If Left(objShape.Name, Len("StrokeScribe")) = "StrokeScribe" Then 'begint de naam met strokescribe
                    lngRow = CLng(Mid(objShape.Name, Len("StrokeScribe") + 1)) 'vind het volgnummer
                    objShape.Text = CStr(Worksheets("Ventiel_overzicht ").Cells(lngRow, 40).Value)
                End If
            End If
        Next

End Sub
jouw voorbeeldbestand staat op een site waar je een account voor moet hebben (gelukkig had ik dat, meer velen hebben dat niet, en dat reduceert de hulp kans)
je hoeft niet het hele bestand te uploaden een stuk of 5 regels is voldoende om een idee te krijgen
de namen van je plaatjes moeten precies in de pas lopen met de regelnummers (hoe lang hou je dat vol in de praktijk?)
verwijder overal onnodige spaties aan het begin en het eind, zoals in "Ventiel_overzicht "

heb niet kunnen testen, strokescribe niet geinstalleerd daardoor veel foutmeldingen tijdens debuggen
 
Bij het uitvoeren van jouw code


Private Sub CommandButton1_Click()
Dim objShape As Shape
Dim lngRow As Long

StrokeScribe1.Alphabet = QRCODE

For Each objShape In Worksheets("Ventiel_overzicht ").Shapes
If objShape.Type = msoOLEControlObject Then 'is het een plaatje?
If Left(objShape.Name, Len("StrokeScribe")) = "StrokeScribe" Then 'begint de naam met strokescribe
lngRow = CLng(Mid(objShape.Name, Len("StrokeScribe") + 1)) 'vind het volgnummer
objShape.Text = CStr(Worksheets("Ventiel_overzicht ").Cells(lngRow, 40).Value)
End If
End If
Next


End Sub

Na de rode regel krijg ik de foutmelding

Naamloos.png
 
Laatst bewerkt:
werkt de code in bericht#1 wel goed?
dan zou je kunnen proberen om Cstr( en ) op het eind weg te halen
cstr vertaalt een variant-variabele naar een string-variabele, misschien is dat een stap te veel
 
nieuwe code
Code:
Private Sub CommandButton1_Click()
    Dim objShape As Shape
    Dim lngRow As Long
        Application.ScreenUpdating = False
        StrokeScribe1.Alphabet = QRCODE
        For Each objShape In Worksheets("Ventiel_overzicht ").Shapes
            If objShape.Type = msoOLEControlObject Then 'is het een plaatje?
                If Left(objShape.Name, Len("StrokeScribe")) = "StrokeScribe" Then 'begint de naam met strokescribe
                    lngRow = CLng(Mid(objShape.Name, Len("StrokeScribe") + 1)) 'vind het volgnummer
                    objShape.[COLOR="#FF0000"]OLEFormat.Object.Object[/COLOR].Text = CStr(Worksheets("Ventiel_overzicht ").Cells(lngRow + 1, 40).Value)
                End If
            End If
        Next
        Application.ScreenUpdating = True
End Sub
 
nieuwe code werkt.. Maar nu wil ik eigenlijk ook wel snappen wat ik doe..
Zou je het me stapje voor stapje uitleggen.
 
dit is VBA voor een beginner-gevorderde

Code:
Dim objShape As Shape
Dim lngRow As Long
instellen datatype variabelen
Code:
Application.ScreenUpdating = False
voorkom flikkeren scherm
Code:
StrokeScribe1.Alphabet = QRCODE
van fabrikant, zie site fabrikant
Code:
For Each objShape In Worksheets("Ventiel_overzicht ").Shapes
laat elke shape/vorm zien van alle shapes/vormen op het werkblad
Code:
If objShape.Type = msoOLEControlObject Then 'is het een plaatje?
is het een plaatje en geen knop o.i.d.
Code:
If Left(objShape.Name, Len("StrokeScribe")) = "StrokeScribe" Then 'begint de naam met strokescribe
begint de naam van het plaatje met strokescribe i.p.v. logo o.i.d.
Code:
lngRow = CLng(Mid(objShape.Name, Len("StrokeScribe") + 1)) 'vind het volgnummer
pak het einde van de naam van het plaatje (volgnummer)
Code:
objShape.[COLOR="#FF0000"]OLEFormat.Object.Object[/COLOR].Text = CStr(Worksheets("Ventiel_overzicht ").Cells(lngRow + 1, 40).Value)
de eigenschappen
Code:
OLEFormat.Object.Object
zijn in overeenstemming met de activex-module die je geinstalleerd hebt, zie site fabrikant
Code:
CStr(Worksheets("Ventiel_overzicht ").Cells(lngRow + 1, 40).Value
haalt de waarde uit cel(rij,kolom) van werkblad ventiel... en converteer met cstr netjes naar een tekenreeks/string
Code:
End If
bij elke if hoort een end if
Code:
End If
bij elke if hoort een end if
Code:
Next
bij elke for hoort een next
Code:
Application.ScreenUpdating = True
voorkom flikkeren scherm

het meeste leer je door in de Visual basic for applications editor op het woord te gaan staan en dan op F1/help de drukken
aangezien het fabrikant-specifieke code is moet je ook zoeken op de site van de fabrikant, zoek dan naar VBA
 
Laatst bewerkt:
Hey Alphamax,

Bedankt ik vat hem, stukjes begrijp ik ook wel maar om op de juiste manier de eindjes aan elkaar te knopen is lastig. Ik heb leren
programmeren in Delphi en dat is toch net anders en toch veelal van het zelfde. En ook daar zal ik mij geen gevorderde in noemen.

Groetjes Henry van Beek
 
gewoon beginnen met een klein bestandje wat je voor je hobby of werk zou kunnen gebruiken
iets dat je op de automatische piloot doet zodat je wat meer aandacht kan besteden aan het "uitzoeken" van de code
voor hulp kan je hier terecht, of http://www.worksheet.nl/forumexcel/ (meer op excel gericht) of op http://www.office.webforums.nl/ (kleiner office forum)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan