Εμφάνιση ενός μόνο μηνύματος
  #8  
Παλιά 02-06-11, 23:14
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Γεια σου Δημήτρη!
Μετονόμασε το φύλλο "ΠΡΟΣΦΟΡΑ" σε "OfferTemplate" και απόκρυψε το.

Κατόπιν στο φύλλο "ΥΠΟΛΟΓΙΣΜΟΣ ΠΡΟΣΦΟΡΑΣ" αντιστοίχησε την ρουτίνα "NewOffer" στον παρακάτω κώδικα σε ένα κουμπί:

Κώδικας:
Option Explicit
Const ilegalChars = ":\/?*[]"

Sub NewOffer()
    Dim rng As Range, Wks As Worksheet, NewWks As Worksheet, _
        xPos As Integer, OfferName As String, SheetName As String
    Application.ScreenUpdating = False
    OfferName = VBA.InputBox("Δώσε Eπωνυμία", "Νέα προσφορά...")
    If StrPtr(OfferName) = 0 Then Exit Sub
    SheetName = CleanName(OfferName)
    xPos = NewSheetPosition(NewName:=SheetName)
    Set Wks = ActiveSheet
    Wks.Range("A:E").AutoFilter Field:=3, Criteria1:=">0", _
                                Operator:=xlAnd

    With ThisWorkbook.Worksheets("OfferTemplate")
        .Visible = xlSheetVisible
        .Copy After:=Sheets(xPos)
        .Visible = xlSheetHidden
    End With
    Set NewWks = ActiveSheet
    Set rng = Wks.AutoFilter.Range.Offset(1)
    rng.Copy
    With NewWks
        .Name = SheetName
        .Range("B1") = OfferName
        .Range("A5").PasteSpecial xlPasteValues
        .Range("A5").Select
    End With
    Wks.AutoFilterMode = False
    Application.CutCopyMode = False

End Sub

Function NewSheetPosition(NewName As String) As Integer
    Dim sh As Object, i As Integer
    For Each sh In ThisWorkbook.Sheets
        If sh.Name = NewName Then
            Application.DisplayAlerts = False
            sh.Delete
            Application.DisplayAlerts = True
        Else
            If sh.Visible Then i = i + 1
        End If
    Next
    NewSheetPosition = i
End Function

Function CleanName(strName As String) As String
    Dim i As Integer, tmpName As String
    tmpName = strName
    For i = 1 To Len(ilegalChars)
        tmpName = Replace(tmpName, Mid(ilegalChars, i, 1), "_")
    Next
    CleanName = tmpName
End Function
Καλή συνέχεια!

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 03-06-11 στις 09:42.
Απάντηση με παράθεση