Procedure korter maken

Status
Niet open voor verdere reacties.
Bijv.

Optionbutton.tag="135197"

Code:
Private sub Optionbutton710_change()
   sheets("shipments").cells(optionbutton710.tag\1000)=iif(optionbutton710,Me("Label" & optionbutton710.tag mod 1000,"")
End Sub
 
... echter moet hij de label naam overnemen en niet de optionbutton naam.
Een tag is niet de naam van een optionbutton (dat is natuurlijk Name) maar een 'veldje' waar je wat in kwijt kan. (Extra info heet het dan ook in het Nederlands). Zoals ik eerder al aangaf, is je code nogal ongelukkig opgebouwd, omdat je labels terug wilt zien die niet hetzelfde zijn als de naam van de optionbutton. Dat maakt het gestructureerde gebruik onmogelijk. Daarom schreef ik: als je de waarde die je wilt wegschrijven nu in de Tag van de optionbuttons zet, kun je de waarde wél één-op-een overnemen. En wordt je procedure dus onwaarschijnlijk veel makkelijker.
 
Gelukt, ik ben eruit, maar ik heb voor een volgend stukje weer een andere vraag. Ook hier is de code enorm lang, deze zal ik jullie besparen. Maar wie kan deze voor mij in een loop schrijven?

Code:
If Range("c1") = "0" Then
  Range("c:c").EntireColumn.Hidden = True
  End If
  
  If Range("d1") = "0" Then
  Range("d:d").EntireColumn.Hidden = True
  End If
  
  If Range("e1") = "0" Then
  Range("e:e").EntireColumn.Hidden = True
  End If
  
  If Range("f1") = "0" Then
  Range("f:f").EntireColumn.Hidden = True
  End If
  If Range("g1") = "0" Then
  Range("g:g").EntireColumn.Hidden = True
  End If
  
  If Range("h1") = "0" Then
  Range("h:h").EntireColumn.Hidden = True
  End If
  
  If Range("i1") = "0" Then
  Range("i:i").EntireColumn.Hidden = True
  End If
 
Oplossing van de vorige vraag was idd om een juiste structuur aan te houden, daarna heb ik de volgende code erin geknald en deze doet wat ik wil :) Bedankt voor jullie hulp!

Code:
Dim f As Integer, g As Integer
For f = 53 To 98
    g = f + 47
    If Me("label" & f) = "" Then
    Me("frame" & g).Visible = False
    End If
Next f
 
Zoiets?
Code:
For i = 3 To 9
    If Cells(1, i) = 0 Then Columns(i).Hidden = True
Next i
 
Laatst bewerkt:
Staat er een getal of tekst in de cellen waarvan je de kolommen wil verbergen? En zijn deze cellen altijd ingevuld?

Als er getallen instaan en er zijn geen lege cellen dan kan je deze proberen.

Code:
Sub VenA()
For j = 3 To 9
    If Cells(1, j).Value = 0 Then Columns(j).Hidden = True
Next j
End Sub
 
@edmoor, niet afkijken als we nagenoeg gelijktijdig een post plaatsen.:)
 
heren bedankt! Er staat een 0 of niets, ik ga kijken welke het beste werkt, maar voor nu bedankt!

REdelijk makkelijke code uiteindelijk, maar ik zat te prutsen met for j = c to k
 
Als er niets staat dan gaat vba dat ook als 0 zien vandaar de vraag. Lege cellen en t/m kolom k wordt het dan bv

Code:
Sub VenA()
For j = 3 To 11
    If Cells(1, j).Value = 0 And Cells(1, j) <> vbNullString Then Columns(j).Hidden = True
Next j
End Sub

Waarbij het niet duidelijk is wat niets is. Een lege cel of een cel met een formule die "" als resultaat oplevert?
Misschien beter zo

Code:
Sub VenA()
For j = 3 To 9
    If Cells(1, j).Value = 0 And Cells(1, j) <> "" Then Columns(j).Hidden = True
Next j
End Sub
 
Laatst bewerkt:
@edmoor, niet afkijken als we nagenoeg gelijktijdig een post plaatsen.:)

Ik had 'm aangpast en toen ik daana op opslaan klikte stond die van jou er.
We hebben echt hetzelfde gedaan :D
 
Hoe heet dat ook alweer 'twee zielen geen gedachte' ofzo:d Ik blijf het altijd wel bijzonder vinden dat het voor sommigen onmogelijk is om even een voorbeeldje te plaatsen. Nu is "onze" code weer niet correct. :shocked:
 
Het moet dan maar als voorbeeld in de goede richting worden beschouwd ;)
 
waarom niet anderson ?

Code:
For j = 3 To 9
 Columns(j).Hidden =cells(j,1)=""
Next
 
Laatst bewerkt:
Yep. Nog beter.

Voor TS:
Op die manier maak je op een juiste wijze gebruik van True en False.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan