با عرض سلام. بنده دو تا مشکل دارم و به شدت نیاز به راهنمایی دارم. میخوام توی یک سلول تابعی بنویسم که مقداری رو بدست بیاره و توی سلول دیگه ای که هیچ تابعی نباید داخلش نوشته بشه ارجاع بده. مثلا در سلول a1 مقداری رو محاسبه کنه و در b1 که هیچ تابعی نداره نتیجه رو بیاره. دوم اینکه میخوام علاوه بر اینکه کاربرگها قفل داشته باشن(برای این قسمت مشکلی ندارم)، کل فایل اکسل هم برای باز شدن نیاز به قفل شدن داشته باشه
قفل کردن فایل اکسل
Collapse
X
-
سلام،
تابع در a1 نوشته مي شود و نتيجه در آن به دست مي آيد، اگر مي خواهيد در b1 نتيجه درج گردد، بايد در آن بنويسيد: A1= اگر اين را هم نخواهيد بنويسيد و b1 خالي خالي باشد و فقط مقدار نتيجه در آن درج گردد چنين چيزي امکان ندارد مگر با کد نويسي بوسيله vba که البته دنگ و فنگ مخصوص به خود را دارد.
براي رمز گذاري روي فايل بايد يک save as از آن بگيريد و در همان پنجره save as گزينه tools را پيدا کرده و مثلث کنارش را کليک کرده و گزينه general option را انتخاب کنيد.
ضمنا" لطفا" براي سوالات خود نام مناسب انتخاب کنيد به نحوي که با خواندن تيتر سوال تا اندازه اي بتوان کليت آن را فهميد و در ضمن سوالاتتان را در تالارهاي مناسب ايجاد کنيد. (قسمت "مشکلات کاربري" مخصوص مشکلات در مورد کار در سايت و انجمن است)[SIGPIC][/SIGPIC] -
سلام،
تابع در a1 نوشته مي شود و نتيجه در آن به دست مي آيد، اگر مي خواهيد در b1 نتيجه درج گردد، بايد در آن بنويسيد: A1= اگر اين را هم نخواهيد بنويسيد و b1 خالي خالي باشد و فقط مقدار نتيجه در آن درج گردد چنين چيزي امکان ندارد مگر با کد نويسي بوسيله vba که البته دنگ و فنگ مخصوص به خود را دارد.
براي رمز گذاري روي فايل بايد يک save as از آن بگيريد و در همان پنجره save as گزينه tools را پيدا کرده و مثلث کنارش را کليک کرده و گزينه general option را انتخاب کنيد.
ضمنا" لطفا" براي سوالات خود نام مناسب انتخاب کنيد به نحوي که با خواندن تيتر سوال تا اندازه اي بتوان کليت آن را فهميد و در ضمن سوالاتتان را در تالارهاي مناسب ايجاد کنيد. (قسمت "مشکلات کاربري" مخصوص مشکلات در مورد کار در سايت و انجمن است)کامنت
-
-
در بعضی فایل ها دیدم که قسمتی برای کلیک کردن وجود داره که باعث میشه اطلاعات انتقال پیدا کنه. میتونید بگید از چه توابعی استفاده شده و چطوریه؟ یک نمونه براتون میذارم نگاه کنیدhttp://uploadboy.me/df0f3wwyvv4l/گزارش توليد.xlsm
کامنت
-
در فایل پیوست در صورت تغییر در سلولهای ستونA مقدار آن در ستون B درج میگردد
کدهای ذیل را در قسمت کدنویسی شیت مورد نظر وارد کنید
کد PHP:Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A:A")) Is Nothing Then
Target.Offset(0, 1).Value = Target.Value
End If
End Sub
فایل های پیوست شدهکامنت
-
در فایل پیوست در صورت تغییر در سلولهای ستونA مقدار آن در ستون B درج میگردد
کدهای ذیل را در قسمت کدنویسی شیت مورد نظر وارد کنید
کد PHP:Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A:A")) Is Nothing Then
Target.Offset(0, 1).Value = Target.Value
End If
End Sub
کامنت
-
در فایل پیوست در صورت تغییر در سلولهای ستونA مقدار آن در ستون B درج میگردد
کدهای ذیل را در قسمت کدنویسی شیت مورد نظر وارد کنید
کد PHP:Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A:A")) Is Nothing Then
Target.Offset(0, 1).Value = Target.Value
End If
End Sub
کامنت
-
دوست عزیز کد رو بصورت زیر تغییر دهید: (در صورتیکه سلولهای مورد نظرتون غیر A1 و B1 باشند در کد زیر متناظر آنها را جایگزین کنید)کد PHP:Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Range("B1") = Range("A1")
Application.EnableEvents = True
End Sub
البته با توجه به خواسته ای که بیان کرده اید به راحتی با نوشتن فرمول زیر در سلول B1 به هدفتون برسید، اما اگر به هر دلیلی نمیخواین درون سلول B1 فرمول و یا تابعی وجود داشته باشد از کد فوق استفاده کنید.
کد PHP:=A1
Last edited by abootorab; 2015/12/05, 01:42.کامنت
-
در فایل پیوست در صورت تغییر در سلولهای ستونA مقدار آن در ستون B درج میگردد
کدهای ذیل را در قسمت کدنویسی شیت مورد نظر وارد کنید
کد PHP:Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A:A")) Is Nothing Then
Target.Offset(0, 1).Value = Target.Value
End If
End Sub
مثلا A1 رو توی B1 بنویسه. اگر B1 نوشته داشت توی E1بنویسه و اگر E1 هم نوشته داشت بره توی H1 بنویسه و این روند تا مثلا ZZ1 ادامه داشته باشه. یعنی اینکه هر بار توی چندتا سلول جلوتر بنویسه
راجع به سوال قبلی هم اینکه چطور پویا کنمش؟؟ راه حلی هست؟ ممنون از راهنماییاتونکامنت
-
اگر هم بایستی هر بار چند سطر جلوتر بنویسد کدها را مطابق نیاز خود اضافه و اصلاح کنید
کد PHP:Sub Worksheet_Change(ByVal Target As Range)
'============ÈÑÇí ÓÊæä A====='
If Not Intersect(Target, Me.Range("A:A")) Is Nothing Then
Application.EnableEvents = False
Target.Offset(0, 1).Value = Target.Value
Application.EnableEvents = True
End If
'=======================ÈÑÇí ÓÊæä C======='
If Not Intersect(Target, Me.Range("C:C")) Is Nothing Then
Application.EnableEvents = False
Target.Offset(0, 2).Value = Target.Value
Application.EnableEvents = True
End If
'=======================ÈÑÇí ÓÊæä F====='
If Not Intersect(Target, Me.Range("F:F")) Is Nothing Then
Application.EnableEvents = False
Target.Offset(0, 3).Value = Target.Value
Application.EnableEvents = True
End If
End Sub
فایل های پیوست شدهکامنت
-
اگر هم بایستی هر بار چند سطر جلوتر بنویسد کدها را مطابق نیاز خود اضافه و اصلاح کنید
کد PHP:sub worksheet_change(byval target as range)
'============èñçí óêæä a====='
if not intersect(target, me.range("a:a")) is nothing then
application.enableevents = false
target.offset(0, 1).value = target.value
application.enableevents = true
end if
'=======================èñçí óêæä c======='
if not intersect(target, me.range("c:c")) is nothing then
application.enableevents = false
target.offset(0, 2).value = target.value
application.enableevents = true
end if
'=======================èñçí óêæä f====='
if not intersect(target, me.range("f:f")) is nothing then
application.enableevents = false
target.offset(0, 3).value = target.value
application.enableevents = true
end if
end sub
کامنت
-
با سلام
از کد ذیل استفاده کنید
کد PHP:Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A:A")) Is Nothing Then
I=target.row
K = ActiveSheet.Cells(I, Columns.Count).End(xlToLeft).Column
Target.Offset(0, K).Value = Target.Value
End If
End Sub
فایل های پیوست شدهLast edited by iranweld; 2015/12/15, 07:29.کامنت
-
خیلی خیلی ممنون. فقط دو تا ایراد بزرگ در استفاده ازش وجود داره. اول اینکه من میخوام مثلا اگر در a1 رو نوشتم در b1 نوشته بشه و اگر b1 نوشته داشت داخل c1 نوشته بشه (مثل همون چیزی که قبلا گفتم). فقط میخوام این موضوع مثلا تا e1 محدود باشه و زمانی که توی f1 نوشتم همون روند قبلی برای سلولهای بعدی اجرا بشه. یعنی از a تا f یک مجموعه باشه و از f تا مثلا n یک مجموعه باشه. و اما مشکل دوم اینکه این روش اصلا پویا نیست. مثلا من میخوام a1 رو مساوی s9 قرار بدم و هر زمان که توی s9 نوشتم توی a1 با همون روابط ساده اکسل نوشته باشه. اما زمانی که از این توابط استفاده میشه دیگه این کدنویسی شما عمل نمیکنه. اگر این دو مورد رو راهنمایی بفرمایید ممنونتون می شمکامنت
کامنت