Új hozzászólás Aktív témák

  • Fferi50

    őstag

    válasz istvankeresz #50013 üzenetére

    Szia!
    Inkább ezt próbáld ki, mert a másik nem igazán jó:
    Sub akarmi()
    Dim answer As Integer, wsFound As Boolean
    Dim wbSearch As Workbook, wsSearch As Worksheet
    wsfound = True
    On Error Resume Next
    Set wsSearch = Sheets(Textbox11.Value)
    If Err = 0 Then
    'ha van már ilyen munkalap, akkor feltesszük a kérdést
    answer = MsgBox("Ilyen nevű munkatárs már rögzítve! Biztos, hogy folytatod a rögzítést?", vbQuestion + vbYesNo + vbDefaultButton2, "Munkatárs rögzítése")
    If answer = vbYes Then wsSearch.Copy after:=Sheets("Havi_TEMPLATE"): wsFound = True
    Else
    Err = 0
    Sheets("Szemely_TEMPLATE").Copy after:=Sheets("Havi_TEMPLATE")
    ActiveSheet.Name = Textbox11.Value
    End If
    On Error GoTo 0
    If wsFound Then
    With ActiveSheet
    .Range("A2") = Textbox11.Value & " " & ComboBox7.Value
    .Range("B2") = TextBox12.Value
    .Range("C2") = TextBox13.Value
    .Range("D2") = TextBox14.Value
    End With
    MsgBox "Munkatárs sikeresen rögzitve! Kérlek zárd be és nyisd meg újra a programot!"
    End If
    Textbox11.Value = ""
    ComboBox7.Value = ""
    TextBox12.Value = ""
    TextBox13.Value = ""
    TextBox14.Value = ""
    'Sheets(xx).Activate az alapmunkalap aktíválása, ha szükséges.
    End Sub

    Egy kis magyarázat hozzá:
    Nem kell végigpörgetni a munkalapokat, mivel a vba hibakezeléssel megállapítható, ha van már ilyen munkalap => a Set után ha nincs hiba, akkor van már. Amennyiben ugyanolyan nevű új személy van, akkor ezt a munkalapot másoljuk, aminek az lesz az eredménye, hogy az Excel automatikusan ad egy sorszámot a névhez! ezzel nekünk nem kell foglalkozni.
    Ha nincs, akkor másoljuk a Templatet.
    Mivel a másolt munkalap lesz az aktív, utána beírhatjuk a szükséges adatokat az új munkalapra.
    Remélem sikerülni fog.
    Üdv.

Új hozzászólás Aktív témák