Waarde in cel gebruiken om te verwijzen naar tabblad

Status
Niet open voor verdere reacties.

Williewammes

Gebruiker
Lid geworden
12 mei 2020
Berichten
28
Hallo,

Ik heb een code om een rij te kunnen kopiëren en in een tabblad "Historie" te kunnen plakken op de eerstvolgende lege rij.
Ik wil dit graag aanpassen waarbij hij de waarde/tekst in de cel in kolom A gebruikt om te verwijzen naar een tabblad met diezelfde naam. Aldaar moet hij de rij plakken in de eerstvolgende lege rij.

Hieronder de code die ik nu gebruik:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 4 And Target.Row > 1 Then
If MsgBox("Opnieuw berekenen?", vbQuestion + vbYesNo, "Datum volgende controle") = vbYes Then
Target = Target.Offset(, 1)
with Sheets("Historie").Cells(Rows.Count, 1).End(xlUp)
.Offset(1).Resize(, UsedRange.Columns.Count) = Target.Offset(, -3).Resize(, UsedRange.Columns.Count).Value
.offset(1,5) = date
end with
End If
Cancel = True
End If
End Sub

Hopelijk ben ik duidelijk genoeg. Het liefst heb ik een code die onafhankelijk is van de hoeveelheid verschillende opties in kolom A en dus ook van de hoeveelheid tabbladen in het document. Mochten er namelijk meer bijkomen moet de macro het liefst gewoon blijven werken.

Ik verneem graag de reacties.

Groet,

Wiljen
 
Zet de code in je bericht in codetags en plaats een voorbeeld bestand.
 
Klik op de link in mijn handtekening voor uitleg.
 
Dank voor de uitleg. Bij deze opnieuw het bericht:

Hallo,

Ik heb een code om een rij te kunnen kopiëren en in een tabblad "Historie" te kunnen plakken op de eerstvolgende lege rij.
Ik wil dit graag aanpassen waarbij hij de waarde/tekst in de cel in kolom A gebruikt om te verwijzen naar een tabblad met diezelfde naam. Aldaar moet hij de rij plakken in de eerstvolgende lege rij.

Hieronder de code die ik nu gebruik:

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 4 And Target.Row > 1 Then
If MsgBox("Opnieuw berekenen?", vbQuestion + vbYesNo, "Datum volgende controle") = vbYes Then
Target = Target.Offset(, 1)
with Sheets("Historie").Cells(Rows.Count, 1).End(xlUp)
.Offset(1).Resize(, UsedRange.Columns.Count) = Target.Offset(, -3).Resize(, UsedRange.Columns.Count).Value
.offset(1,5) = date
end with
End If
Cancel = True
End If
End Sub

Hopelijk ben ik duidelijk genoeg. Het liefst heb ik een code die onafhankelijk is van de hoeveelheid verschillende opties in kolom A en dus ook van de hoeveelheid tabbladen in het document. Mochten er namelijk meer bijkomen moet de macro het liefst gewoon blijven werken.

Ik verneem graag de reacties.

Groet,

Wiljen
 
Als je in het werkblad met de gegevens geen rijen verwijdert, maar markeert als 'afgehandeld' in een daarvoor bestemde kolom heb je geen apart werkblad met dubbele gegevens nodig.
De filtering van het eerste werkblad op het criterium 'afgehandeld' geeft dan hetzelfde resultaat als wat je nu met moeizame VBA-code in werkbad 'historie' zet.
 
@SNB

Het gaat om periodiek onderhoud waarbij de sheet als volgt moet werken:
  • Zodra de datum voor onderhoud is verlopen wordt de cel rood ter indicatie dat er onderhoud moet worden gepleegd of ingepland.
  • Zodra het onderhoud is uitgevoerd kun je door dubbelklikken op de datumcel het onderhoud loggen in het tabblad van de betreffende machine.
  • De datum in de cel wordt aan de hand van de ingevulde frequentie dan opieuw ingevuld voor het volgende onderhoud.

In het geval van jouw voorstel moet ik elke keer weer opniew een regel in de geplande lijst invoeren, wat we juist niet willen. Daarnaast moet de onderhoudsman gewoon simpel door dubbelklikken het onderhoud kunnen loggen.

Dus het zou mooi zijn als de sheet toch op deze manier kan werken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan