Siirsin tämän ylemmäksi

Otin tämän vanhan makron käyttöön ja olen sen saanut toimimaan sen verran hyvin että ainoa vika taitaa olla jos on sama erä eri vuosille niin se korjaa aikaisemman vuoden erän?

Sub Kopioi()
Dim vika As Integer
Dim Haettava As Range
Dim Haettava2 As Range
Dim Hakualue As Range
Dim Löydetty As Range
Dim EkaSolu As String
Sheets("Syöttö").Activate
Set Haettava = Range("M9")
Set Haettava2 = Range("O6")
Sheets("Data").Activate
vika = Range("B65536").End(xlUp).Row

Set Hakualue = Range("B1:B" & vika)
Range("B1").Select
Set Löydetty = Hakualue.Find(What:=Haettava, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False)
If Not Löydetty Is Nothing Then
EkaSolu = Löydetty.Address
If Löydetty.Offset(0, 3) = Haettava2 Then
msg = "Erä on jo olemassa_1! " & "Haluatko tallentaa vanhan päälle!"
response = MsgBox(msg, vbYesNo)
If response = vbYes Then Range(EkaSolu).Offset(0, 1) = Sheets("Syöttö").Range("I9") Else Exit Sub
Range(EkaSolu).Offset(0, 2) = Sheets("Syöttö").Range("D9")
Range(EkaSolu).Offset(0, 4) = Sheets("Syöttö").Range("A13")
Exit Sub
Else
Do
Set Löydetty = Hakualue.FindNext(Löydetty)
If Löydetty.Offset(0, 3) = Haettava2 Then
msg = "Erä on jo olemassa_2! " & "Haluatko tallentaa vanhan päälle!"
response = MsgBox(msg, vbYesNo)
If response = vbYes Then Range(EkaSolu).Offset(0, 1) = Sheets("Syöttö").Range("I9") Else Exit Sub
Range(EkaSolu).Offset(0, 2) = Sheets("Syöttö").Range("D9")
Range(EkaSolu).Offset(0, 4) = Sheets("Syöttö").Range("A13")
Exit Sub
End If
Loop While Not Löydetty Is Nothing And Löydetty.Address EkaSolu
Range("B" & vika 1) = Haettava
Range("B" & vika 1).Offset(0, 3) = Haettava2
Call tallennatiedot(vika)
End If
Else
Range("B" & vika 1) = Haettava
Range("B" & vika 1).Offset(0, 3) = Haettava2
Call tallennatiedot(vika)

End If
End Sub
2291
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat

Tämä viestiketju on tuolla alempana "11032006 kysytty" nimellä mutta ajattelin sen menevän kohta piiloon enkä saa siihen sitten vastausta, joten siirsin sen tähän ylemmäksi.

Makron piti hakea tietoa Syöttö lehdeltä ja tarkistaa että Data lehdellä ei ole vastaavia tietoja Erän ja Vuoden mukaan jos on niin kysyy tallennetaanko päälle , muuten tallentaa tiedot Data lehdelle.

Äänestä
  • (varmaankin jotain virheitä / päälekkäisyyksiä makrossa on?) muuten hyvä mutta jos tiedot on jo olemassa ja vastaa ei korvataanko kysymykseen niin se tulee makrosta pois ja jättää data sivun esille , hyvä mutta se jää data sivun yläreunaan pitäisi saada jäämää siihen kohtaan missä tiedot on?

    Sub erantallennus()
    Dim vika As Integer
    Dim Haettava As Range
    Dim Haettava2 As Range
    Dim Hakualue As Range
    Dim Löydetty As Range
    Dim EkaSolu As String
    Dim TokaSolu As String
    Sheets("Syöttö").Activate
    Set Haettava = Range("M9")
    Set Haettava2 = Range("O6")
    Sheets("Data").Activate
    vika = Range("B65536").End(xlUp).Row

    Set Hakualue = Range("B1:B" & vika)
    Range("B1").Select
    Set Löydetty = Hakualue.Find(What:=Haettava, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False)
    If Not Löydetty Is Nothing Then
    EkaSolu = Löydetty.Address
    If Löydetty.Offset(0, 3) = Haettava2 Then
    msg = "Erä on jo olemassa! " & "Haluatko tallentaa vanhan päälle!"
    response = MsgBox(msg, vbYesNo)
    If response = vbYes Then Range(EkaSolu).Offset(0, 1) = Sheets("Syöttö").Range("I9") Else Exit Sub
    Range(EkaSolu).Offset(0, 1) = Sheets("Syöttö").Range("D9")
    Range(EkaSolu).Offset(0, 2) = Sheets("Syöttö").Range("I9")
    Sheets("Syöttö").Activate
    MsgBox "Muista tallentaa myös koko tiedosto!"
    Exit Sub
    Else
    Do
    Set Löydetty = Hakualue.FindNext(Löydetty)
    If Löydetty.Offset(0, 3) = Haettava2 Then
    TokaSolu = Löydetty.Address
    msg = "Erä on jo olemassa! " & "Haluatko tallentaa vanhan päälle!"
    response = MsgBox(msg, vbYesNo)
    If response = vbYes Then Range(TokaSolu).Offset(0, 1) = Sheets("Syöttö").Range("I9") Else Exit Sub
    Range(TokaSolu).Offset(0, 1) = Sheets("Syöttö").Range("D9")
    Range(TokaSolu).Offset(0, 2) = Sheets("Syöttö").Range("I9")
    Sheets("Syöttö").Activate
    MsgBox "Muista tallentaa myös koko tiedosto!"
    Exit Sub
    End If
    Loop While Not Löydetty Is Nothing And Löydetty.Address EkaSolu
    Range("B" & vika 1) = Haettava
    Range("B" & vika 1).Offset(0, 3) = Haettava2
    Call tallennatiedot(vika)
    MsgBox "Muista tallentaa myös koko tiedosto!"

    End If
    Else
    Range("B" & vika 1) = Haettava
    Range("B" & vika 1).Offset(0, 3) = Haettava2
    Call tallennatiedot(vika)
    MsgBox "Muista tallentaa myös koko tiedosto!"

    End If
    End Sub

    Äänestä

Kommentoi aloitusta


Kyselijä kirjoitti:

Otin tämän vanhan makron käyttöön ja olen sen saanut toimimaan sen verran hyvin että ainoa vika taitaa olla jos on sama erä eri vuosille niin se korjaa aikaisemman vuoden erän?

Sub Kopioi()
Dim vika As Integer
Dim Haettava As Range
Dim Haettava2 As Range
Dim Hakualue As Range
Dim Löydetty As Range
Dim EkaSolu As String
Sheets("Syöttö").Activate
Set Haettava = Range("M9")
Set Haettava2 = Range("O6")
Sheets("Data").Activate
vika = Range("B65536").End(xlUp).Row

Set Hakualue = Range("B1:B" & vika)
Range("B1").Select
Set Löydetty = Hakualue.Find(What:=Haettava, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False)
If Not Löydetty Is Nothing Then
EkaSolu = Löydetty.Address
If Löydetty.Offset(0, 3) = Haettava2 Then
msg = "Erä on jo olemassa_1! " & "Haluatko tallentaa vanhan päälle!"
response = MsgBox(msg, vbYesNo)
If response = vbYes Then Range(EkaSolu).Offset(0, 1) = Sheets("Syöttö").Range("I9") Else Exit Sub
Range(EkaSolu).Offset(0, 2) = Sheets("Syöttö").Range("D9")
Range(EkaSolu).Offset(0, 4) = Sheets("Syöttö").Range("A13")
Exit Sub
Else
Do
Set Löydetty = Hakualue.FindNext(Löydetty)
If Löydetty.Offset(0, 3) = Haettava2 Then
msg = "Erä on jo olemassa_2! " & "Haluatko tallentaa vanhan päälle!"
response = MsgBox(msg, vbYesNo)
If response = vbYes Then Range(EkaSolu).Offset(0, 1) = Sheets("Syöttö").Range("I9") Else Exit Sub
Range(EkaSolu).Offset(0, 2) = Sheets("Syöttö").Range("D9")
Range(EkaSolu).Offset(0, 4) = Sheets("Syöttö").Range("A13")
Exit Sub
End If
Loop While Not Löydetty Is Nothing And Löydetty.Address EkaSolu
Range("B" & vika 1) = Haettava
Range("B" & vika 1).Offset(0, 3) = Haettava2
Call tallennatiedot(vika)
End If
Else
Range("B" & vika 1) = Haettava
Range("B" & vika 1).Offset(0, 3) = Haettava2
Call tallennatiedot(vika)

End If
End Sub

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu