Procedure korter maken

Status
Niet open voor verdere reacties.

sjonnie1974

Gebruiker
Lid geworden
19 okt 2011
Berichten
177
Hoi ik heb bijgaande procedure geschreven in heel makkelijke taal (voor mij)
Begrijpelijk dat VBA zegt dat deze code te lang is..
Iemand die hem kan korter maken voor mij?

Ifhen Range("shipments!e133") = Label95
If OptionButton679 = True Then Range("shipments!e155") = Label95
If OptionButton680 = True Then Range("shipments!e177") = Label95
If OptionButton674 = True Then Range("shipments!e199") = Label95
If OptionButton684 = True Then Range("shipments!e221") = Label95
If OptionButton685 = True Then Range("shipments!e243") = Label95
If OptionButton686 = True Then Range("shipments!e265") = Label95
If OptionButton683 = True Then Range("shipments!e287") = Label95
If OptionButton687 = True Then Range("shipments!e309") = Label95
If OptionButton681 = True Then Range("shipments!e331") = Label95
If OptionButton688 = True Then Range("shipments!e353") = Label95
If OptionButton682 = True Then Range("shipments!e375") = Label95
If OptionButton691 = True Then Range("shipments!e46") = Label96
If OptionButton692 = True Then Range("shipments!e68") = Label96
If OptionButton693 = True Then Range("shipments!e90") = Label96
If OptionButton689 = True Then Range("shipments!e112") = Label96
 
Laatst bewerkt:
Select case wil wel eens helpen. 730 of meer optionbuttens wil ik wel eens zien op een formulier. Dus een voorbeeldje zie ik graag:d
 
Hoi VenA,

Geen idee wat select case inhoudt....
Een voorbeeld kan ik niet laten zien, maar ga er maar vanuit dat er 736 optionbuttons op 1 formulier passen...
 
Het voorbeeld kan ik niet laten zien omdat die in een excel zit waarin bedrijfsinfo zit...
Er zijn 46 regels waar bij elke regel tussen 16 optionbuttons gekozen moet worden. Elke 16 buttons zijn afgekaderd door een frame.
Na gelang er een optionbutton gekozen wordt, zal er op een bepaalde sheet een waarde worden ingevuld.
 
Als je voor een openbaar forum als helpmij kiest plaats je voorbeeldbestanden zonder gevoelige gegevens.
Wil je dat niet, dan is de keuze voor een openbaar forum niet de juiste.
 
En begin eens met je code tussen CODE tags te plaatsen.... Dit is een belachelijke lange code om in een bericht te zetten. Is toch niet fatsoenlijk te lezen zo?
 
Ik zal mijn best doen toch een voorbeeld te maken, omdat jullie zo aardig zijn hier....
 
leg dan eens uit hoe dat moet, zonder alleen kreten als tussen code tags te melden
 
Wij zijn hartstikke aardig en nog veel behulpzamer. Maar er zijn bepaalde regeltjes waarvan het fijn is als mensen zich er aan houden. Eén van die regels is: zet code tussen CODE tags. Oftewel: zet de tag [/CODE] achter je code, en
Code:
 er voor. Dan ziet het er een stuk leesbaarder uit. Hier krijg je een muisarm van.
Wat je vraag betreft: ik zie weinig logica in de toewijzing van waarden aan je cellen. Wat is daar de structuur achter? Bij de ranges is die wellicht nog wel te achterhalen, maar de labels? Als je zo wisselvallig met labels omgaat, is er niet tegen aan te programmeren. Sowieso is dan de vraag: waarom gebruik je labels? Zet de gewenste informatie in de TAG eigenschap van het optierondje, en het is wél te automatiseren.
 
Hoi ik heb bijgaande procedure geschreven in heel makkelijke taal (voor mij)

Geen idee wat select case inhoudt....

Dat rijmt niet echt met elkaar.

Begin eens zo, dat scheelt al veel tekst:
Code:
    With Sheets("shipments")
        If OptionButton1 Then .Range("E3") = Label10
        If OptionButton2 Then .Range("E25") = Label10
        Enz.
    End With
 
Het wordt denk ik een beetje een lastig verhaal op deze manier. (voor jullie zonder voorbeeld)

Ik had gehoopt dat jullie er verder mee konden komen, maar ik zoek eerst zelf nog wel even naar een andere method om hetzelfde te bereiken.

even stukje code proberen.....

Code:
If OptionButton705 = True Then Range("shipments!e113") = Label97
If OptionButton710 = True Then Range("shipments!e135") = Label97
If OptionButton711 = True Then Range("shipments!e157") = Label97
If OptionButton712 = True Then Range("shipments!e179") = Label97
If OptionButton706 = True Then Range("shipments!e201") = Label97
If OptionButton716 = True Then Range("shipments!e223") = Label97
If OptionButton717 = True Then Range("shipments!e245") = Label97
If OptionButton718 = True Then Range("shipments!e267") = Label97
If OptionButton715 = True Then Range("shipments!e289") = Label97
If OptionButton719 = True Then Range("shipments!e311") = Label97
 
Kijk eens naar wat ik schreef in #11.
We waren bijna tegelijkertijd.
 
Yes Edmoor, dat heft zeer waarschijnlijk al geholpen, code werkt prima, thnx!
 
Als je een logische structuur zou hebben in je code, zou dit volstaan:
Code:
Dim i As Integer, j As Integer, x As Integer
For i = 1 To 730
    j = 10 + (x Mod 16) * 22
    If Me("OptionButton" & i) = True Then
        Cells(j, 5) = Me("OptionButton" & i).Caption
    End If
    x = x + 1
Next i
Maar ja, er zit dus weinig logica in je code. D.w.z. er zit wel enige logica in de volgorde, maar niet consequent. En dus snij je jezelf goed in de vingers.
 
Precies. En dat is dus de reden waarom we graag dat document zouden zien om te bekijken of die logica en correcte volgorde erin aangebracht zou kunnen worden.
 
Laatst bewerkt:
En doe ons een lol, en gooi die 6 meter code uit het eerste bericht weg.... Mijn arm trekt het qua scrollen niet meer :D.
 
Oké, lange tekst is weg... Zelf vind ik het ook vet irritant dat er zo weinig logica in die code zit. Als ik in een. Frame, 16 optionbuttons heb en dit frame wil kopieren, dan loopt de nummering van die optionbuttons niet lekker door, terwijl dat bij de eerste wel zo was.
Dit zorgt ervoor dat doe code die zo door elkaar lijkt te lopen. Hetzelfde is dat hun de label nummers....

Kan ik een groep optionbuttons weer sorteren qua nummering?
 
@Octafish,

Jouw code ziet er veel belovende uit, echter moet hij de label naam overnemen en niet de optionbutton naam.
 
Het is inderdaad een keurig stukje code van OctaFish maar vergt wel een goede inrichting van je document.
Zoals een collega Helpmij-er hier weleens zegt: Structure before coding.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan