رکورد ماکرو بدون حالت r1c1

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

    • 2011/04/29
    • 384
    • 67.00

    پرسش رکورد ماکرو بدون حالت r1c1

    با سلام

    دوستان من وقتی ماکرو رکورد میکنم ، آدرس فرمول ها رو با فرمت R1C1 رکورد میکنه .
    مثلا به این صورت :
    کد:
        ActiveCell.FormulaR1C1 = "=IF(RC[1]=""بله"",""yesss"",""noooo"")"



    که دوتا مشکل با این حالت دارم :

    1- گنگ شدن فرمول ها برام

    2- اگه فرمولم طولانی باشه اونو در دو خط میاره و از قسمتی که دو خطی میشه چند کاراکتر رو حذف میکنه !!!!!

    مثال:

    کد:
    =IF(AND(G14="بله",G13="بله",G12="بله",G11="بله",G10="بله",G9="بله"),H13-E14,IF(AND(G14="بله",G13="بله",G15="بله",G11="بله",G10="بله"),H13-E14,IF(AND(G14="بله",G13="بله",G12="بله",G11="بله"),H13-E14,IF(AND(G14="بله",G13="بله",G12="بله"),H13-E14,IF(AND(G13="بله",G14="بله"),H13-E14,IF(G14="بله",H13-E14,C14-E14))))))
    اگه فرمول بالا رو توی یه سلول بریزید و ماکرو رو رکورد بزنید و روی این سلول کلیلک کنید ، بصورت پایین در قالب R1c1 براتون میاره :


    کد PHP:
    ActiveCell.FormulaR1C1 _
            
    "=IF(AND(R[-3]C=""بله"",R[-4]C=""بله"",R[-5]C=""بله"",R[-6]C=""بله"",R[-7]C=""بله"",R[-8]C=""بله""),R[-4]C[1]-R[-3]C[-2],IF(AND(R[-3]C=""بله"",R[-4]C=""بله"",R[-2]C=""بله"",R[-6]C=""بله"",R[-7]C=""بله""),R[-4]C[1]-R[-3]C[-2],IF(AND(R[-3]C=""بله"",R[-4]C=""بله"",R[-5]C=""بله"",R[-6]C=""بله""),R[-4]C[1]-R[-3]C[-2],IF(AND(R[-3]C=""بله"",R[-4]C=""بله"",R[-5]C=""بله""),R[" _
            
    "R[-3]C[-2],IF(AND(R[-4]C=""بله"",R[-3]C=""بله""),R[-4]C[1]-R[-3]C[-2],IF(R[-3]C=""بله"",R[-4]C[1]-R[-3]C[-2],R[-3]C[-4]-R[-3]C[-2]))))))" 
    حالا اگه ماکرو بالا رو استفاده کنید باید فرمول اولی رو براتون برگردونه . که میبینید خطا میگیره ! (چون قسمتیشو حذف کرده)







    راهی هست وقتی رکورد میکنم ادرس فرمول ها رو به صورت عادی رکورد کنه ؟؟؟؟


    (البته من خودم بعد از رکورد r1c1 رو حذف میکنم و اگه توی فرمول حرف فارسی نباشه درست کار میکنه در غیر این صورت خطا میگیره و باید حتما ازفرمت r1c1 استفاده کنم .)

    کد:
          ActiveCell.Formula = "=K14*K16"

    این کد رو هم پیدا کردم ولی کاری باهش نتونستم انجام بدم :

    application.ReferenceStyle=xlA1
    application.ReferenceStyle=r1c1
    در ضمن r1c1 از توی منو اکسل تیک نخورده هستش .
  • iranweld

    • 2015/03/29
    • 3341

    #2
    با سلام

    اگر فرمول را در سلول A1 کپی کنیم و ماکرو را ضبط کنیم بدین صورت میگردد


    کد PHP:
    Sub test()

    Range("A1").Select
        Selection
    .AutoFill Destination:=Range("A1:A200"), Type:=xlFillDefault
        
    End Sub 

    کامنت

    • a.dal65

      • 2011/04/29
      • 384
      • 67.00

      #3
      خدمت شما فیلم :
      فایل های پیوست شده

      کامنت

      • rahi_feri

        • 2014/08/08
        • 524
        • 94.67

        #4
        سلام
        چرا کپی نمیکنید فرمول جای فرمول ایجاد شده فقط یه کوچولو تغییرات لازمه!
        ولی جواب کامل تر اینکه نه این حالت برای بازه هایی که می نویسیم به همین صورته و نمیشه تغییرش داد تا جایی که میدونم!
        ولی می تونید از یه سری توابع آماده استفاده کنید و رنج ها رو تغییر بدید به اون استاندارد ستون سطری و راه دیگه اینکه از پنجره Immediate Window برای سلول مورد نظر ActiveCell.formula رو بنویسید و فرمول رو دریافت کنید و دوباره کپی دیگه!
        Last edited by rahi_feri; 2018/09/18, 14:07.
        [B][SIZE=1]بخش امضاء :
        [/SIZE][/B][LEFT]
        [CODE]
        Sub Macro()
        ActiveCell = "IY" & Right(Application.Name, 5)
        With ActiveCell.Characters(Start:=2, Length:=1).Font
        .Name = "Webdings"
        .Color = 255
        End With
        End Sub
        [/CODE]
        [/LEFT]

        کامنت

        • a.dal65

          • 2011/04/29
          • 384
          • 67.00

          #5
          سلام من الان پاسختونو دیدم ممنون میشم اون تعییر کوچولو رو بگید چطور هستش .
          من توی سایت های خارجی پیدا کردم که در حالت رکورد فقط با فرمت r1c1 ضبط میکنه و راهی نداره

          کامنت

          چند لحظه..