[Excel] ما الفرق بين .text و .value و .value2؟


Answers

ما عدا أول إجابة تشكل بثشبع ، ما عدا معلومات MSDN لما يلي:

.Value
.Value2
.Text

يمكنك تحليل هذه الجداول من أجل فهم أفضل للاختلافات بين الخصائص التي تم تحليلها.

Question

أنا لا أطلب المساعدة في أي نص ، لكن سؤالي هو للتوضيح. في الآونة الأخيرة ، كنت أفعل الكثير من البرمجة النصية لـ VB في برنامج Excel ، لذا فأنا أشير بالفعل إلى Excel في هذا السؤال. ما الفرق بين .text و .value و .value2؟ مثل متى يجب استخدام target.text و target.value و target.value2؟ لم أقم أبدًا باستخدام خيار value2 ، لكنني لا أزال أرغب في معرفة ما يتم استخدامه.

في بعض الأحيان إذا كنت تستخدم. text يعطيني خطأ ، ولست بحاجة إلى استخدام. قيمة عندما أقوم فقط بفحص أو التعامل مع النص داخل الخلية. ثم في بعض الأحيان عندما أعتقد أنني يجب أن استخدم .value أحصل على خطأ وأحتاج إلى استخدام. عادة ما تقبل إما أو بدون مشكلة ، لكنها في بعض الأحيان تحدث فرقا. أعلم أنه يجب أن يكون هناك بعض المنطق في هذا الأمر ، لكنني لا أستطيع أن أجده.

لقد اكتشفت أيضًا أنه إذا تركتها فقط كهدف بدون تحديد .text أو .value فسوف تعمل في البداية ، لكن شيء ما يفعله شخص ما سيؤدي في النهاية إلى الخطأ في البرنامج النصي ، لذا من الأفضل دائمًا استخدام شيء. . أعتقد أن ما أسأله هو أن أحدهم يستطيع أن يعطيني نوعًا من المبادئ التوجيهية ، والقاعدة الأساسية ، وكيفية استخدام كل واحد بشكل صحيح وعندما يحتاج إلى استخدامه.

شكرا لتفسير الرجال. أنا أفهم ذلك بشكل أفضل. كلاهما تفسيرات جيدة. في ما يلي مثال صغير على بعض الشفرات التي تعمل. اعتقدت أنه يجب أن يكون target.text ، لكنه سيكون خطأ لذلك عندما استخدمت target.value أنه يعمل.

If LCase(Target.Value) = LCase("HLO") And Target.Column = 15 Then
    Target.Value = "Higher Level Outage"
End If

ما زلت مرتبكًا بعض الشيء لأنه عندما أفكر في القيمة أو القيمة 2 ، خاصة بعد إجاباتك التي قدمتها ، أعتقد أنه يجب استخدامها فقط للأرقام. ومع ذلك ، في المثال الخاص بي ، أتحدث عن النص بدقة ، وهو ما يشير إليه النص البرمجي (النص في الخلايا ، أكثر من الأرقام).




فيما يتعلق بالاتفاقيات في C #. لنفترض أنك تقرأ خلية تحتوي على تاريخ ، على سبيل المثال 2014-10-22.

عند استخدام:

.Text ، ستحصل على التمثيل المنسق للتاريخ ، كما هو موضح في المصنف الذي يظهر على الشاشة:
2014-10-22 . هذا النوع من الممتلكات هو دائما string ولكن قد لا يؤدي دائما إلى نتيجة مرضية.

.Value ، يحاول المحول البرمجي تحويل التاريخ إلى كائن DateTime : {2014-10-22 00:00:00} غالبًا ما يكون مفيدًا فقط عند قراءة التواريخ.

.Value2 ، يعطيك القيمة الحقيقية الكامنة للخلية. في حالة التواريخ ، هو تسلسل تاريخ: 41934 . يمكن أن يكون لهذه الخاصية نوع مختلف اعتمادًا على محتويات الخلية. بالنسبة للتسلسلات على الرغم من التاريخ ، فإن النوع double .

بحيث يمكنك استرداد قيمة خلية وتخزينها إما dynamic أو var أو object لكن لاحظ أن القيمة ستحتوي دائمًا على نوع من أنواع الفطور التي يجب عليك التصرف وفقًا لها.

dynamic x = ws.get_Range("A1").Value2;
object  y = ws.get_Range("A1").Value2;
var     z = ws.get_Range("A1").Value2;
double  d = ws.get_Range("A1").Value2;      // Value of a serial is always a double