ثبت ساعت در یک سلول باماکرو طوری که دیگه تغییر نکنه

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • shabani.eng

    • 2014/02/26
    • 16

    ثبت ساعت در یک سلول باماکرو طوری که دیگه تغییر نکنه

    سلام

    من میخوام یک ماکرو بنویسم که هر موقع روی یک سلول دلخواه کلیک کردم و ماکرو رو اجرا کردم
    ساعت سیستم در اون سلول ثبت بشه طوری که دیگه تغییر نکنه.
    خودم این راه به ذهنم رسید؛ اما خطا میده
    خط قرمز خطا میده
    کد:
    Sub Macro1()
    '
    ' Macro1 Macro
    '
    Dim a As Range
    [COLOR=#ff0000]ذخیره آدرس همون سلولی که الان انتخاب هست   a = Selection.Select[/COLOR]
          رفتن به سلول ساعت  Range("K13").Select
    کپی    Selection.Copy
          بازگشت به سلولی که داخلش بودیم  Range(a).Select
    کپی کردن ساعت به روش اسپشال (فقط مقدار)    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  
            :=False, Transpose:=False
        Application.CutCopyMode = False
    ست کردن فرمت نمایش ساعت    Selection.NumberFormat = "h:mm"
    End Sub
    "سلول K13 هم حاوی ساعت سیستم هست"
    Last edited by Amir Ghasemiyan; 2014/09/21, 20:33. دلیل: كدها را داخل تگ كد قرار دهيد
  • mokaram
    مدير تالار اکسل و بانک اطلاعاتی

    • 2011/02/06
    • 1805
    • 74.00

    #2
    شما خط آخر ماکروت بگو که اکتیو سل برابر باشه با زمان

    کامنت

    • shabani.eng

      • 2014/02/26
      • 16

      #3
      یعنی چی؟!
      متوجه نشدم

      اگه اکتیو سل برابر باشه با زمان ، پس اون داستان آپدیت شدن در هر بار فراخوانی این ماکرو چی میشه؟!
      با چه تابعی باید گفت برابر باشه با زمان؟! منظورتون همون NOW() هست؟

      ممنون.

      کامنت

      • khakzad

        • 2010/03/17
        • 2034
        • 85.00

        #4
        سلام
        بله همون now()
        وقتی داخل کد باشه و ی باز اجرا بشه مقدار تابع رو نشون میده و خود فرمول رو نشون ننمیده. پس قابل تغییر هم نیست

        کامنت

        • shabani.eng

          • 2014/02/26
          • 16

          #5
          آقا ممنون، نکته تو همون اکتیو سل بود:

          در نهایت این طوری شد:
          کد:
          [LEFT]
          
          
          Sub Macro3()
          '
          ' Macro3 Macro
          '
          ' Keyboard Shortcut: Ctrl+q
          '
          
          
              ActiveCell.FormulaR1C1 = "=NOW()"
              Selection.NumberFormat = "h:mm"
              Selection.Copy
              Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                  :=False, Transpose:=False
          
          End Sub[/LEFT]
          Last edited by Amir Ghasemiyan; 2014/09/21, 20:31.

          کامنت

          • ali.b

            • 2014/01/12
            • 798

            #6
            اگه از توابع شمسی استفاده میکنی این کد رو در قسمت VB اون شیت ذخیره کن .همون کار رو برات انجام میده
            کد:
            Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim c As Range
            For Each c In Range("a3")
            If c <> "" And c.Offset(0, 3) = "" Then
            c.Offset(0, 3) = Time
            c.Offset(0, 2) = J_TODAY()
            Exit Sub
            End If
            Next
            End Sub

            کامنت

            • shabani.eng

              • 2014/02/26
              • 16

              #7
              ممنونم از راهنماییهاتون.:D
              ما میخوایم از این فایل در اداره و روی سیستم سایر همکارا استفاده کنیم .
              اما وقتی این فایل رو روی سیستم های دیگه کپی می کنیم فایلش ماکرو نداره.
              چطوری فایل رو با ماکروش کپی می کنن؟!

              کامنت

              • mokaram
                مدير تالار اکسل و بانک اطلاعاتی

                • 2011/02/06
                • 1805
                • 74.00

                #8
                شما موقع Save as کردن با پسوند های xlsm یا 97-2003 ، Save بفرمایید

                کامنت

                • ali.b

                  • 2014/01/12
                  • 798

                  #9
                  روی سیستم های دیگه با توضحی که دادنی یعنی افیس 2007 یا 2010 هست که باید قسمت ماکرو رو فعال کنید

                  کامنت

                  • shabani.eng

                    • 2014/02/26
                    • 16

                    #10
                    اوه اوه، ممنونم.
                    از فضای علم و دانش و بروبچ فنی که دور بیفتی همینه دیگه!
                    از سال 89 که فارغ التحصیل (مهندسی نرم افزار) شدم تا الان یه کله دنبال سربازی و کار بودم و مدتی هست که مشغولم
                    و الان میبینم که عقب افتادم.
                    من که دو سه ترم برنامه نویسی رو واسه بچه ها حل تمرین میذاشتم...
                    و یه جورایی مرجع آفیس بودیم واسه خودمون...
                    بگذریم...

                    ازتون بابت کمکتون ممنونم.

                    کامنت

                    • mokaram
                      مدير تالار اکسل و بانک اطلاعاتی

                      • 2011/02/06
                      • 1805
                      • 74.00

                      #11
                      دوست عزیز خیلی خوشحال میشیم که از این به بعد از حضور شما بیشتر استفاده کنیم مطمئناً با یه کم تمرین و مماست مجدد بر می گردید به همون دوران این سری برا ما حل تمرین می ذارید ایشالا که بتونیم از دانش شما و امثال شما دوستان حظ و بهره ببریم

                      کامنت

                      • Cyrus.Persia
                        • 2015/04/04
                        • 2

                        #12
                        سلام دوستان عزیز و اساتید محترم
                        سوال من شبیه سوال دوستمون هست منتها میخوام چند سطر پر بشه به شرط اینکه اگه بین دو سلول اختلاف زمانی خاصی افتاد مثلا سلول دوم بعد 15 دقیقه از پر شدن سلول اول پر بشه سلول دوم قفل بشه یا نوشته ای مبنی بر خطا داخل سلول نوشته بشه و به هیچ عنوان نشه سلول دومو ویرایش کرد ممنونم از پاسخ*گویی شما[emoji4]

                        کامنت

                        چند لحظه..