PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : پرسش: رکورد ماکرو بدون حالت r1c1



a.dal65
2018/09/15, 11:15
با سلام

دوستان من وقتی ماکرو رکورد میکنم ، آدرس فرمول ها رو با فرمت 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 براتون میاره :



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
2018/09/15, 12:07
با سلام

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


Sub test()

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

End Sub

a.dal65
2018/09/15, 13:24
خدمت شما فیلم :

rahi_feri
2018/09/18, 12:56
سلام
چرا کپی نمیکنید فرمول جای فرمول ایجاد شده فقط یه کوچولو تغییرات لازمه!
ولی جواب کامل تر اینکه نه این حالت برای بازه هایی که می نویسیم به همین صورته و نمیشه تغییرش داد تا جایی که میدونم!
ولی می تونید از یه سری توابع آماده استفاده کنید و رنج ها رو تغییر بدید به اون استاندارد ستون سطری و راه دیگه اینکه از پنجره Immediate Window برای سلول مورد نظر ActiveCell.formula رو بنویسید و فرمول رو دریافت کنید و دوباره کپی دیگه!

a.dal65
2018/10/09, 09:25
سلام من الان پاسختونو دیدم ممنون میشم اون تعییر کوچولو رو بگید چطور هستش .
من توی سایت های خارجی پیدا کردم که در حالت رکورد فقط با فرمت r1c1 ضبط میکنه و راهی نداره