قم بتغيير تنسيق التاريخ بعد تحميله في مربع نص UserForm

StackOverflow https://stackoverflow.com//questions/22071452

  •  23-12-2019
  •  | 
  •  

سؤال

لدي نموذج مستخدم مع مربع نص.عند تهيئة مربع النص، يتم ملؤه بالتاريخ الفعلي.ما أريد فعله هو ملئه بتنسيق تاريخ مخصص = DD-MM-YYYY

لقد كتبت الكود أدناه وكان هناك خطأ ما ولكن ليس لدي أي فكرة عما هو الخطأ.يحتوي الرمز على msgbox قبل إدراج القيمة، MsgBox يظهر التاريخ بتنسيق مخصص ولكن عندما يتم تمريره إلى textbox.value انها مثل M/DD/YYY.

Dim year As Long, year_control As Date

year = Format(Date, "yyyy")
year_control = Format(Date, "dd-mm-yyyy")

MsgBox (year_control)

textbox.Value = year_control

(...)

If year_control < "01-04-" & year Then
    Me.Controls("rok1").Value = True
Else
    Me.Controls("rok2").Value = True
End If
هل كانت مفيدة؟

المحلول

لا يمكنك "تنسيق" متغير التاريخ:

year_control As Date
year_control = Format(Date, "dd-mm-yyyy")

الكود أعلاه لا يفعل شيئًا لأن متغير التاريخ يقوم ببساطة بإخفاء تاريخ، وبشكل أكثر تحديدًا، يقوم VBA بتخزين متغيرات التاريخ كأرقام الفاصلة العائمة IEEE 64 بت (8 بايت) التي تمثل تواريخ تتراوح من 1 يناير 100 إلى 31 ديسمبر 9999 وأوقات من 0 :00:00 إلى 23:59:59.

بغض النظر عما تفعله بهذا المتغير، فإنه سيعرض دائمًا التواريخ وفقًا لتنسيق التاريخ القصير الذي يتعرف عليه جهاز الكمبيوتر الخاص بك.يتم عرض الأوقات وفقًا لتنسيق الوقت (إما 12 ساعة أو 24 ساعة) الذي يتعرف عليه جهاز الكمبيوتر الخاص بك.

لذلك بينما يمكنك تغيير القيمة الداخلية التي يحتفظ بها Date متغير لا يمكنك تخزين تنسيقه داخل نفس المتغير.

ومع ذلك، يمكنك عرضه بالطريقة التي تريدها داخل متغير السلسلة.لذا، إذا استخدمت:

Dim year As Long, year_control As Date
Dim strYear_control As string


year = Format(Date, "yyyy")
year_control = Format(Date, "dd-mm-yyyy")
strYear_control = Format(year_control , "dd-mm-yyyy")
MsgBox (strYear_control)

textbox.Value = strYear_control

ينبغي أن تعمل كما كنت تتوقع.كما Format() ستُرجع الدالة متغيرًا (سلسلة) يحتوي على تعبير منسق وفقًا للتعليمات الموجودة في تعبير التنسيق.

كملاحظة جانبية قد ترغب أيضًا في استخدامها

Format$(year_control , "dd-mm-yyyy")

لأنه سيكون أسرع بكثير، ويمكنك أيضًا استخدامه FormatDateTime لتنسيق تاريخك بطرق مختلفة أخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top