• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

2 Formules samenvoegen

Status
Niet open voor verdere reacties.

Vangans

Gebruiker
Lid geworden
28 feb 2007
Berichten
50
Ik vroeg mij af of ik deze 2 formules kan samenvoegen.

Ik heb nu 2 knoppen met elk volgende formule die ik aan 1 knop zou willen hangen.

Nu vraag ik me af of dit kan.

Code 1

Code:
Sub dubbel_raam_vleugel_hoogte()
'
' dubbel_raam_vleugel_hoogte Macro
' De macro is opgenomen op 16/03/2007 door Mati.
'  Dim c As Range, i As Long, form As String, naam As String, brho As String
    For Each c In Selection
        form = c.offset(-3).Formula
        If form <> "" Then
            i = 1
        
            Do While IsNumeric(Mid(form, Len(form) - 1 - i, 1))
                i = i + 1
            Loop
            
            If InStr(form, "hoogte") > 0 Then
                brho = "Vollehoogte"
            End If
            
            naam = Mid(form, Len(form) - i - Len(brho), Len(brho) + i)
            
            c.Formula = Replace(form, naam, "(" & naam & "-83)")
        End If
    Next c
 
End Sub

Code 2

Code:
Sub Dubbel_raam()

    Dim c As Range, i As Long, form As String, naam As String, brho As String
    For Each c In Selection
        form = c.offset(-3).Formula
        If form <> "" Then
            i = 1
        
            Do While IsNumeric(Mid(form, Len(form) - 1 - i, 1))
                i = i + 1
            Loop
            
            If InStr(form, "hoogte") > 0 Then
                brho = "Vollehoogte"
            ElseIf InStr(form, "breedte") > 0 Then
                brho = "Vollebreedte"
            End If
            
            naam = Mid(form, Len(form) - i - Len(brho), Len(brho) + i)
            
            c.Formula = Replace(form, naam, "(" & naam & "-83)/2+15")
        End If
    Next c
End Sub

Mvg :)
 
Sub dubbel_raam_vleugel_hoogte()

Dubbel_Raam

End Sub

Je kunt een sub in een sub starten door de naam van de sub op te nemen als code.
 
Ah juist, dan zal ik enkel mijn offset van de 2de formule moeten aanpassen.

Ik post de oplossing wel, als ik ze gevonden heb. :)
 
Die 2 bovenste moet je samenkrijgen ?

Kun je de formule niet op mekaar laten volgen.

Je offset
C.formule

opnieuw

je offset aangepast
C.formule

Even proberen anders ;)

Evitje
 
Laatst bewerkt:
Wel Evitje, ikh eb dit al eens geprob.

Nu nog eens maar dat doet hij nog steeds niet.

volgens mij ligt het probleem bij mijn offset.

Voor het eerste deel neem ik de cel van 3 plaatsen erboven

Code:
   form = c.Offset(-3).Formula

Voor de 2de code neem ik deze formule

Code:
   form = c.Offset(-3, -1).Formula

Dan neem ik steeds mijn active cell nog he? Maar ik moet de cel hebben naast mijn activeCell maar hoe ik dit doe is me opnieuw een raadseltje :rolleyes:
 
Bekijk de code voor je plaatjes invoer eens?
Hierin gaan we voor iedere cel een srtapje opzij.

Offset(row, colum)
ActiveCell.Offset(1,1) = 1 naar beneden en 1 naar recht vanaf je activecell
ActiveCell.Offset(,1) = alleen 1 naar rechts (kan ook Offset(0,1) maar das weer langer :)
ActiveCell.Offset(1) = alleen 1 naar beneden

of

Code:
Sub Kozijnen()
     dubbel_raam_vleugel_hoogte
     Dubbel_raam
End Sub

Dan hoef je niks aan je macro's aan te passen (is wel een stuk langzamer dan alles in 1 code proberen te plaatsen.

Post anders eens een vb file waarmee we aan de slag kunnen :).
 
Laatst bewerkt:
Demeter ik moet dus van de Activecell 1 kolom naar rechts opschuiven, die formule uit de cel kopieren en dan die formule uit die cel offsetten 3rijen lager + er een formule op uitvoeren.

Kan ik die 2 offsetten in 1 bewerking doen, neen toch ? :)

Mvg
 
Wat dacht je van zoiets:
Code:
ActiveCell.Offset(3, 1) = [COLOR="Red"]ActiveCell.Offset(, 1) + 1[/COLOR]

In het rode gedeelte kan jij je formule plaatsen welke gebruikt maakt van de data uit de activecell + 1
 
Ik ben niet echt mee vrees ik.

Ik moet op mijn eerste formule (zoals in de 1ste post) ActiveCell.Offset(-3) toepassen.

En dan in het begin van mijn 2de formule ActiveCell.Offset(-3) = ActiveCell.Offset(, 1) + 1 toepassen?

Ik moet op beide cellen een andere formule toepassen ... (Zie bovenaan), dat gaat hij nu toch niet doen.

Mvg
 
Demeter ik moet dus van de Activecell 1 kolom naar rechts opschuiven, die formule uit de cel kopieren en dan die formule uit die cel offsetten 3rijen lager + er een formule op uitvoeren.

Was even een voorbeeld hoe je in Activecell + offset een waarde vanuit de Activecell + andere offset kan plaatsen.

Misschien kijk ik er vanavond nog naar.
 
Is dit geen uitkomst:
Code:
Sub Twee_in_Een()
Dim c As Range, i As Long, form As String, naam As String, brho As String

    For Each c In Selection
        form = c.Offset(-3).Formula
        If form <> "" Then
            i = 1
        
            Do While IsNumeric(Mid(form, Len(form) - 1 - i, 1))
                i = i + 1
            Loop
            
            If InStr(form, "hoogte") > 0 Then
                brho = "Vollehoogte"
                naam = Mid(form, Len(form) - i - Len(brho), Len(brho) + i)
                c.Formula = Replace(form, naam, "(" & naam & "-83)")
            ElseIf InStr(form, "breedte") > 0 Then
                brho = "Vollebreedte"
                naam = Mid(form, Len(form) - i - Len(brho), Len(brho) + i)
                c.Formula = Replace(form, naam, "(" & naam & "-83)/2+15")
            End If
        End If
    Next
End Sub

Aangezien brho = "Vollehoogte" in alle twee voorkomt en je de brho voor je if niet vuld met iets.
 
Perfect Ferenc, dat moest ik hebben. Met de offset ben ik ook mee!

Opnieuw nog eens hartelijk dank :cool:

Mvg
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan