ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
11 visibility
موضوع: آفیس توسط:

لوری می داند که چگونه ویژگی های یک ورک بوک اکسل را مشاهده کند. با این حال، کاری که او می خواهد انجام دهد، مشاهده ویژگی های مشابه نسبت به کاربرگ های فردی است. به عنوان مثال، او نمی پرسد آیا راهی برای مشاهده ویژگی هایی مانند تاریخ ایجاد، تاریخ اصلاح، نویسنده یا "آخرین اصلاح توسط" برای کاربرگ های جداگانه وجود دارد.

متأسفانه، اکسل چنین اطلاعاتی را برای کاربرگ ها پیگیری نمی کند. تنها راه حلی که ما توانسته ایم کشف کنیم این است که رکورد خود را از اطلاعات مربوط به کاربرگ های موجود در ورک بوک ایجاد کنیم. یک راه واضح برای توسعه یک کنترل کننده رویداد Workbook_SheetChange. در زیر نمونه ای از مواردی است که می توانید به شی ThisWorkbook در ویرایشگر ویژوال بیسیک اضافه کنید:

Private Sub Workbook_SheetChange(ByVal ws As Object, ByVal Target As Range)
    Dim s As Worksheet
    Dim J As Integer
    Dim FoundIt As Boolean

    On Error Resume Next
    Set s = Worksheets("Stats")
    On Error GoTo 0
    Application.EnableEvents = False
    If s Is Nothing Then
         Stats worksheet did not exist
        Set s = Worksheets.Add(After:=Worksheets(Worksheets.Count))
        s.Name = "Stats"
        s.Range("A1") = "Worksheet"
        s.Range("B1") = "Creator"
        s.Range("C1") = "Last Modified"
        s.Range("D1") = "Modifed By"
        
        With s.Range("A1:D1")
            .Font.Bold = True
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).Weight = xlThin
        End With

        s.Range("A2") = s.Name
        s.Range("B2") = s.CustomProperties.Creator
        s.Range("C2") = Format(Now, " mm/dd/yyyy  hh:mm am/pm")
        s.Range("D2") = Application.UserName
    End If
    J = 2
    FoundIt = False
    While (s.Cells(J, 1) <> "")
        If s.Cells(J, 1) = ws.Name Then
            FoundIt = True
            s.Cells(J, 3) = Format(Now, " mm/dd/yyyy  hh:mm am/pm")
            s.Cells(J, 4) = Application.UserName
        End If
        J = J + 1
    Wend
    If Not FoundIt Then
         Worksheet name not found
        s.Cells(J, 1) = ws.Name
        s.Cells(J, 2) = ws.CustomProperties.Creator
        s.Cells(J, 3) = Format(Now, " mm/dd/yyyy  hh:mm am/pm")
        s.Cells(J, 4) = Application.UserName
    End If
    ws.Activate
    Application.EnableEvents = True
End Sub

هر زمان که شما تغییری در ورک بوک ایجاد کنید، کنترل کننده رویداد فعال می شود. ابتدا بررسی می کند که آیا یک کاربرگ به نام Stats وجود دارد یا خیر. اگر نه، کاربرگ ایجاد می شود و اطلاعات ابتدایی به آن اضافه می شود. کنترل کننده در کاربرگ آمار نگاه می کند تا تعیین کند آیا داده های موجود در آنجا دارای ردیفی برای کاربرگ هستند که در آن تغییر رخ داده است. اگر نه، یک ردیف اضافه می شود، اما اگر چنین است، اطلاعات موجود در ردیف به روز می شود.

کنترل کننده تنها چهار بخش از اطلاعات را ردیابی می کند - نام کاربرگ، سازنده، تاریخ آخرین تغییر و نام کاربری که تغییر را انجام داده است. (ویژگی Creator یک مقدار عددی مربوط به برنامه ای را نشان می دهد که کاربرگ را ایجاد کرده است. این برای انسان خیلی مفید نیست، و من آن را به عنوان مثالی گویا از نحوه ذخیره اطلاعات اضافه کردم.)

به یاد داشته باشید، این تنها یک راه حل است و باید به دقت در نظر بگیرید که چه نوع اطلاعاتی را می خواهید برای کاربرگ های خود ردیابی کنید. سپس می توانید کد را تغییر دهید تا آن تمایل را منعکس کند.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

172 نفر آنلاین
0 عضو و 172 مهمان در سایت حاضرند
بازدید امروز: 1686
بازدید دیروز: 25459
بازدید کل: 15229203
...