PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : اولين سوال من(حذف قابليت cut در محدوده خاصي از سلولها)



samadi1973
2012/04/02, 21:46
با سلام خدمت همه دوستان و اساتيد لطفا راهنمايي كنيد.
با vba ميشه فقط درمحدوده خاصي از سلول هاي شيت (نه همه شيت) قابليت cut و paste رو حذف كرد؟ (قابليت copy رو لازم دارم )
بيشتر اينو براي اين لازم دارم كه cut سلول باعث خطاي refrence
نشه.
ممنون

Javid Mokhtari
2012/04/02, 23:07
با سلام.
خب این کار رو از طریق قفل کردن سلول هم می توانید انجام دهید.
کد VBهم... :
Range("A1:A10").Locked = True
ActiveSheet.Protect

samadi1973
2012/04/03, 00:24
ممنون از راهنماييتون ولي قفل كردن قابليت copy , cut , past و وارد كردن اطلاعات روميگيره هدف من صرفا حذف قابليت cutهست و نه بيشتر

Private Sub Workbook_Activate()
Application.CutCopyMode = False

End Sub
مشابه اين دستور روميخوام ولي صرفا براي cut
امكان داره؟

daghyad
2012/04/03, 14:25
سلام شما میخواهید که کار برنتونه تعدادی از سلولها را cut یا delete کنه را هش اینه که روی رویداد changeیک شیت اینکد را تایپ کنید:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NoChgRg As Range
Dim chg As Range
Set NoChgRg = [a1:f74,j9:j74,n9:u25]
Set chg = Application.Intersect(Target, NoChgRg)
If Not chg Is Nothing Then
Application.EnableEvents = False
MsgBox "نمي توانيد حذف کنيد سلول محافظت شده است"
Application.Undo
Application.EnableEvents = True
End If
Set chg = Nothing
End Sub


و کافی ست محدوده ای را که میخوای محافظت کنید را بالا انتخاب کنید

samadi1973
2012/04/03, 18:06
ممنون از زحمتتون من صرفا قصدم حذف قابليت cut هست و قصدم حذف قابليت هاي كپي يا جلوگيري از وارد كردن اطلاعات نيست.قابليت كپي و وارد كردن رو لازم دارم.

daghyad
2012/04/03, 18:33
سلام این کار قابلیت کات کردن محدوده ای را که شما تعریف می کنید را از بین می برد تنها در همون محوده و حتی کپی کردن و پیست کردن هم امکان پذیره شما کد را امتحان کنیدو محدوده را توی کد تغییر بدید [hr]

Set NoChgRg = [a1:f74,j9:j74,n9:u25]
محدوده را در این قسمت از برنامه تغییر بده

samadi1973
2012/04/04, 19:18
سلولهي رنجي كه شما در فرمول تعيين كردين كامل سلول ها رو قفل ميكنه فقط قابليت select ميده البته اطلاعات ميشه وارد كرد يا paste رو استفاده كرد اما بعد از ظاهر شدن پيغام 'نمي توانيد حذف کنيد سلول محافظت شده است'اگر ok رو بزيم يا پنجره رو ببنديم اطلاعات از بين ميره.
Set NoChgRg
no chang rang(رنج كاملا بدون تغيير)
بازم ممنون

shamsololama
2012/04/05, 12:40
با سلام خدمت همه دوستان و اساتيد لطفا راهنمايي كنيد.
با vba ميشه فقط درمحدوده خاصي از سلول هاي شيت (نه همه شيت) قابليت cut و paste رو حذف كرد؟ (قابليت copy رو لازم دارم )
بيشتر اينو براي اين لازم دارم كه cut سلول باعث خطاي refrence
نشه.
ممنون




با درود فراوان

برای این کاری که شما مد نظرتون هست کفایت میکنه که فقط Cut رو حذف کنیم چون وقتی کات حذف شه پیست هم نخواهد داشت ولی اگر پیست رو بصورت کلی حذف کنی برای زمان کپی کردن با مشکل بر خواهی خورد

برای حذف کات در فایل نمونه من کات از تو راست کلیک و از کلید ترکیبی کنترل و ایکس رو حذف کردم و فقط برای محدوده سلهای که با رنگ زرد مشخص شده در نظر گرفته شده است

امیدوارم همان چیزی که مد نظر شماست بوده باشه


کد:
Sub EnableControl(Id As Integer, Enabled As Boolean)
Dim CB As CommandBar
Dim C As CommandBarControl
For Each CB In Application.CommandBars
Set C = CB.FindControl(Id:=Id, recursive:=True)
If Not C Is Nothing Then C.Enabled = Enabled
Next
End Sub



Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Column = 1 Or Target.Address = Range("c1").Address Or Target.Address = Range("e5").Address Then
EnableControl 21, False ' cut
Application.OnKey "^x", ""
Else
EnableControl 21, True ' cut
Application.OnKey "^x"
End If
End Sub



فایل نمونه:
[attachment=538]

samadi1973
2012/04/05, 19:42
عالي بود ارشام خان ممنون
ميشه كاري كرد كه هنگامي كه drag &drop رو انجام ميديم "صرفا "قابليت" move" رو هم گرفت؟
از اين كه بدون چشمداشت كمك ميكنيد ممنونتم .
منتظر ميمونم

shamsololama
2012/04/06, 08:40
عالي بود ارشام خان ممنون
ميشه كاري كرد كه هنگامي كه drag &drop رو انجام ميديم "صرفا "قابليت" move" رو هم گرفت؟
از اين كه بدون چشمداشت كمك ميكنيد ممنونتم .
منتظر ميمونم



با درود فراوان

اگر منظرو شما اینه که با موس هم نشه درگ کرد و همان کار کات رو انجام داد کافیه به کد قبل یک آیتم دیگر اضاف کنیم
Application.CellDragAndDrop = False


که کد به این صورت نوشته میشه

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Column = 1 Or Target.Address = Range("c1").Address Or Target.Address = Range("e5").Address Then
EnableControl 22, False ' cut
Application.OnKey "^x", ""
Application.CellDragAndDrop = False

Else
EnableControl 21, True ' cut
Application.OnKey "^x"
Application.CellDragAndDrop = True

End If
End Sub


فایل نمونه:
[attachment=540]

samadi1973
2012/04/06, 11:46
مشكلمو حل كردين خيلي خيلي ممنونم
ضمنا استاد اگه براتون امكان پذيره در مورد سفارشي كردن menu bar با vba كه در ادرس ذيل
قرار دادين نيزفايل نمونه رو هم محبت بفرماييد
فرمول هاي فول اسكرين و حذف كلي جواب داد ولي فرمول هاي حذف موردي در اكسل 2010 من اجرا نشد.
http://forum.exceliran.com/showthread.php?tid=290
با تشكر فراوان

daghyad
2012/04/09, 17:46
سلام ممنون از اقای شمس العلما ی عزیز که زحمت کشیدند و فایل ها را هم گذاشتند اما فقط یه سوال هست و اون این که ما cut کردن را در همون فایل می تونیم از منو home انجام بدیم و با زدن اینتر پیست هم میشه این را باید چکار کرد ممنون[hr]
سلام این هم یک کد که تو کل ورک بوک قابلیت کان را حذف می کنه اما باز هم این مشکا هست که از منوی home میشه اون را کپی و کات کرد
http://parsaspace.com/files/2430954884/?c=1182