Functie Procedure + "AutoFill"

NoordMartin

Nieuwe gebruiker
Lid geworden
9 jan 2024
Berichten
4
Goedenavond,

Ik ben enigszins bekend met het gebruik van Sub Procedures en probeer mij het gebruik van Function Procedures eigen te maken.
Hoewel het mij na veel pogingen gelukt is om een Function te specificeren loop ik tegen het probleem aan dat ik deze uitsluitend via
<Menu>/<Formules>/<Door gebruiker gedefineerd> kan gebruiken. En dan nog alleen per cel.
Ik ben echter op zoek naar een code die de Function automatisch voor een bereik doorvoert.

Ik gebruik hiervoor de volgende code:
Sub TEST_1_Function_Col_B()

Dim rw As Long

With ThisWorkbook
With Worksheets("Blad1")
For rw = 3 To 12
Cells(rw, 3) = MyFunction15B
Next rw
End With
End With

End Sub
-------------------------------------------------------------------------------------------

Function MyFunction15B(rw As String) As String

MyFunction15B = Right(rw, 1)

End Function
-------------------------------------------------------------------------------------------

Het gewenste automatisch doorvoeren gebeurd echter niet.

Wellicht is een verdere toelichting op z'n plaats.
De Functie Procedure wordt gebruikt in een werkblad wat opgeroepen kan worden door een gebruiker.
Dit werkblad maakt onderdeel uit van werkmap :) en wordt deels "gevoed" met gegevens uit andere werkbladen.
Na het oproepen van dit bewuste werkblad kan de gebruiker de gewenste gegevens invullen waaronder het type verpakking. Hier MAP R1, R2 etc.
In het werkblad worden op basis van deze invoer verdere detailberekeningen uitgevoerd.

Zover ik kan nagaan is het niet mogelijk om een Event-procedure te maken wanneer een werkblad, nog, niet bestaat.
Vandaar mijn keuze voor bovenstaande oplossing.
Mocht het wel mogelijk zijn om een Event-procedure te creëren voor een nog niet bestaand werkblad wordt informatie dienaangaande ook gewaardeerd.

Voorlopig blijft mijn primaire vraag welke code het mogelijk maakt om de Function-procedure automatisch door te voeren .

Bij voorbaat mijn dank en met hartelijke groeten

Martin
 

Bijlagen

  • HelpMij_Vraag_1.xlsm
    15,2 KB · Weergaven: 3
Ik ben niet zeker en niet getest maar mogelijk is dit de oplossing

Function MyFunction15B(rw As Long) As String

MyFunction15B = Right(Cells(rw,1).text),1)

End Function
 
CSS:
Sub M_snb()
  [B3:B12]=[row(1:10)]
end sub
 
Beste Bram en snb,

Het antwoord van snb blijkt een eerste oplossing te bevatten (niet geheel onverwacht :)).
Om de gewenste waarden in de kolom "E" te krijgen wordt de volledige code:
-------------------------------------------------------------------------------------------
Sub TEST_1_Function_Col_E()

Dim rw As Long

With ThisWorkbook
With Worksheets("Helpmij_Vraag")
Range("E3").Activate
For rw = 3 To 12
[E3:E12] = [row(1:10)]
Next rw
End With
End With

End Sub
-------------------------------------------------------------------------------------------
Ga nu eerst testen in het "echte" werkboek of ik verder kan met de uitkomsten van deze code.

Voorlopig dank voor de genomen moeite

Martin
 
@NoordMartin

Kun je svp VBA code tussen code tags zetten ?

Deze macro is voldoende als sheet "Helpmij_Vraag" aktief is:

CSS:
Sub TEST_1_Function_Col_E()
     [E3:E12] = [row(1:10)]
End Sub
 
Beste SNB,

Gedaan. Overige regels verwijderd.
Werkt (ook) :).

Inmiddels ook getest in het "echte" werkboek en ook daar werkt deze regel :).
____________________________________________________________________________________________________________________________________________________________
Maar zoals gezegd in de initiële vraag is het de bedoeling dat de uitkomsten worden berekend wanneer de gebruiker de gewenste gegevens invult waaronder het type verpakking. Hier MAP R1, R2 etc.

In het werkblad worden op basis van deze invoer verdere detailberekeningen uitgevoerd.

Zover ik kan nagaan is het niet mogelijk om een Event-procedure te maken wanneer een werkblad, nog, niet bestaat.
Vandaar mijn keuze voor de oplossing met behulp van een Function-procedure.
Mocht het wel mogelijk zijn om een Event-procedure te creëren voor een nog niet bestaand werkblad wordt informatie dienaangaande ook gewaardeerd.
____________________________________________________________________________________________________________________________________________________________

Mocht deze "aanvullende vraag" geplaatst dienen te worden in een nieuw bericht hoor ik dat graag.

met hartelijke groeten

Martin
 
Haal eerst alle samengevoegde cellen weg.

Zet dan in de macromodule van 'thisworkbook':

CSS:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
   If Target.Address = "$A$1" Then Sh.[B3:B12] = [row(1:10)]
End Sub

Ga naar cel A1 en kijk war er gebeurt.
Maak een nieuw werkblad en ga naar cel A1.
 
Laatst bewerkt:
Beste SNB,

Dank voor, wederom, de snelle reactie.
Ofschoon het niet een pasklare oplossing was voor mijn vraag vormde het wel een uitgangspunt om een pasklare oplossing te vinden.

Nogmaals dank voor de moeite

met hartelijke groeten

Martin
 
Het gaat hier om suggesties waarmee je verder kunt werken, niet om onbetaalde oplossingen.
 
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan