الأحد، ديسمبر 18 2022
  2 الردود
  4.7 ألف زيارة
0
الأصوات
فك
لقد قمت بنسخ VBA لنسخ البيانات من الخلية إلى نفس الصف في عمود مختلف وقمت بتغييره حتى أتمكن من تغيير خلية في العمود F وحفظ القيمة في العمود E ، ولكن عندما أحاول ذلك ، لا يحدث شيء. هل يمكن لأحد أن يخبرني بما أفعله خطأ؟ أود أيضًا وضع طابع تاريخ في العمود G عندما أقوم بإجراء التغيير.

كنت آمل أيضًا أن أكون قادرًا على فعل الشيء نفسه عندما أقوم بتغيير خلية في العمود I لحفظها في العمود H وطابع التاريخ الذي يتغير في العمود J.

سيكون موضع تقدير أي مساعدة.


خافت xRg كمدى
خافت xChangeRg كنطاق
خافت xDependRg كنطاق
Dim xDic كـ قاموس جديد
ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
أنا خافت وطويلة
خافت xCell كمجموعة
خافت xDCell كمدى
خافت xHeader كسلسلة
خافت xCommText كسلسلة
على خطأ استئناف التالي
Application.ScreenUpdating = خطأ
Application.EnableEvents = خطأ
xHeader = "القيمة السابقة:"
س = xDic
بالنسبة إلى I = 0 إلى UBound (xDic.Keys)
تعيين xCell = النطاق (xDic.Keys (I))
تعيين xDCell = خلايا (xCell.Row ، 5)
xDCell.Value = ""
xDCell.Value = xDic.Items (I)
التالى
Application.EnableEvents = صحيح
Application.ScreenUpdating = ترو
نهاية الفرعية
تغيير ورقة العمل الفرعية الخاصة (الهدف حسب القيمة كنطاق)
خافت أنا ، J طالما
خافت xRgArea كمدى
عند حدوث خطأ ، انتقل إلى Label1
إذا كان Target.Count> 1 ، فاخرج من Sub
Application.EnableEvents = خطأ
قم بتعيين xDependRg = Target.Dependents
إذا كان xDependRg لا شيء ، فانتقل إلى Label1
إذا لم يكن xDependRg لا شيء إذن
تعيين xDependRg = Intersect (xDependRg، Range ("F: F"))
إنهاء حالة
التسمية 1:
تعيين xRg = تقاطع (الهدف ، النطاق ("F: F"))
إذا (ليس xRg لا شيء) و (ليس xDependRg لا شيء) إذن
اضبط xChangeRg = Union (xRg، xDependRg)
ElseIf (xRg لا شيء) و (ليس xDependRg لا شيء) إذن
قم بتعيين xChangeRg = xDependRg
ElseIf (ليس xRg لا شيء) و (xDependRg لا شيء) إذن
قم بتعيين xChangeRg = xRg
آخر
Application.EnableEvents = صحيح
خروج الفرعية
إنهاء حالة
xDic.RemoveAll
بالنسبة إلى I = 1 إلى xChangeRg.Areas.Count
قم بتعيين xRgArea = xChangeRg.Areas (I)
لـ J = 1 إلى xRgArea.Count
xDic.Add xRgArea (J). Address، xRgArea (J) .Formula
التالى
التالى
تعيين xChangeRg = لا شيء
تعيين xRg = لا شيء
قم بتعيين xDependRg = لا شيء
Application.EnableEvents = صحيح
نهاية الفرعية
منذ 1 العام
·
#3309
0
الأصوات
فك
قم

VBA يعمل! الرجاء مراجعة التعليمات البرمجية أدناه. أحتاج فقط إلى المساعدة في تعديلها بحيث عندما أقوم بتغيير خلية في العمود الأول ، فإنها تحفظ القيمة في العمود H.


خافت xRg كمدى
خافت xChangeRg كنطاق
خافت xDependRg كنطاق
Dim xDic كـ قاموس جديد
ورقة عمل فرعية خاصة تغيير (هدف ByVal كنطاق)
أنا خافت وطويلة
خافت xCell كمجموعة
خافت xDCell كمدى
خافت xHeader كسلسلة
خافت xCommText كسلسلة
على خطأ استئناف التالي
Application.ScreenUpdating = خطأ
Application.EnableEvents = خطأ
xHeader = "القيمة السابقة:"
س = xDic
بالنسبة إلى I = 0 إلى UBound (xDic.Keys)
تعيين xCell = النطاق (xDic.Keys (I))
تعيين xDCell = خلايا (xCell.Row ، 5)
xDCell.Value = ""
xDCell.Value = xDic.Items (I)
التالى

إذا كان Target.Column = 6 ثم
Application.EnableEvents = خطأ
الخلايا (الهدف ، الصف ، 7). القيمة = التاريخ
Application.EnableEvents = صحيح
إنهاء حالة

إذا كان Target.Column = 9 ثم
Application.EnableEvents = خطأ
الخلايا (الهدف ، الصف ، 10). القيمة = التاريخ
Application.EnableEvents = صحيح
إنهاء حالة
Application.EnableEvents = صحيح
نهاية الفرعية
تغيير ورقة العمل الفرعية الخاصة (الهدف حسب القيمة كنطاق)
خافت أنا ، J طالما
خافت xRgArea كمدى
عند حدوث خطأ ، انتقل إلى Label1
إذا كان Target.Count> 1 ، فاخرج من Sub
Application.EnableEvents = خطأ
قم بتعيين xDependRg = Target.Dependents
إذا كان xDependRg لا شيء ، فانتقل إلى Label1
إذا لم يكن xDependRg لا شيء إذن
تعيين xDependRg = Intersect (xDependRg، Range ("F: F"))
إنهاء حالة
التسمية 1:
تعيين xRg = تقاطع (الهدف ، النطاق ("F: F"))
إذا (ليس xRg لا شيء) و (ليس xDependRg لا شيء) إذن
اضبط xChangeRg = Union (xRg، xDependRg)
ElseIf (xRg لا شيء) و (ليس xDependRg لا شيء) إذن
قم بتعيين xChangeRg = xDependRg
ElseIf (ليس xRg لا شيء) و (xDependRg لا شيء) إذن
قم بتعيين xChangeRg = xRg
آخر
Application.EnableEvents = صحيح
خروج الفرعية
إنهاء حالة
xDic.RemoveAll
بالنسبة إلى I = 1 إلى xChangeRg.Areas.Count
قم بتعيين xRgArea = xChangeRg.Areas (I)
لـ J = 1 إلى xRgArea.Count
xDic.Add xRgArea (J). Address، xRgArea (J) .Formula
التالى
التالى
تعيين xChangeRg = لا شيء
تعيين xRg = لا شيء
قم بتعيين xDependRg = لا شيء

Application.EnableEvents = صحيح
نهاية الفرعية
منذ 1 العام
·
#3310
0
الأصوات
فك
فقط للتوضيح ، سيكون هذا بالإضافة إلى ما تفعله بالفعل. أريد أن أكون قادرًا على تتبع التغييرات التي تم إجراؤها في كل من العمود F والعمود الأول. آسف للارتباك.
  • الصفحة:
  • 1
لا توجد ردود لهذا المنصب حتى الآن.