اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

مساعدة في كود قص نص معين ولصقه في سجل سابق


nssj

الردود الموصى بها

الإخوة الكرام .. السلام عليكم

أنا بحاجة لكود يقوم بنسخ نص معين من سجلات محددة ليضع ما تم نسخة في آخر السجل السابق

* والسجلات التي هي مجال القص هي التي يكون فيها الحقل (cut_thes)  يساوي: نعم

* وكنت في البداية أريد قص النص من أوله إلى آخر أول فقرة، ونجحت في ذلك

Me.nass.SelStart = 0
Me.Nass.SelLength = InStr([Nass], Chr(13)) - 1
DoCmd.RunCommand acCmdCut

وعلى هذا الأساس فالكود كان يعمل بشكل جيد وبدون مشاكل

لكن ظهر لي أن الأفضل قص النص من أوله إلى ما قبل أول فقرة تبدأ برقم

فإن لم يكن هناك فقرة تبدأ برقم فيتم قص النص كله

وهذه لم أعرف كيف أنفذها

يعني في هذه الصورة

 image.png.1c12bff3f4c6be16f7db33c7e422dadc.png

المطلوب قص السطرين ونقلهما ، وليس قص السطر الأول فقط

وقد أضفت حقلا للنص المطلوب الحصول عليه وضعته يدويا للتوضيح

أرجو أن أكون قد أوضحت المطلوب .. والكود المرفق سيوضح المطلوب أكثر .. ينقصني فيه جزئية تحديد النص المطلوب: من أول الحقل إلى ما قبل أول فقرة تبدأ برقم

Cut_Paste.rar

رابط هذا التعليق
شارك

للرفع .. وليس بالضرورة الاطلاع أو التعديل على الكود كله .. أنا تنقصني

في 3‏/1‏/2023 at 00:28, nssj said:

جزئية تحديد النص المطلوب: من أول الحقل إلى ما قبل أول فقرة تبدأ برقم

وأعتقد أني بعدها أستطيع إكمال المهمة بعون الله

وقد حاولت - بالنظر لمشاركات سابقة للإخوة الكرام - أن أقوم بتحديد النص المطلوب بعبارات مثل

Me.nass.SelStart = 0
' المطلوب تحديد من أول النص إلى ما قبل أول فقرة تبدأ برقم
Me.nass.SelLength = InStr([nass], IsNumeric(Left([nass], 1)))
Me.nass.SelLength = InStr([nass], IsNumeric(Left([nass], 1)) - 1)
Me.nass.SelLength = Len(IsNumeric(Left([nass], 1)))
Me.nass.SelLength = InStr(10, [nass], IsNumeric(Left([nass], 1)))

ولكن كانت تخرج هذه الرسالة

image.png.ff7c2e48e09e2e31d83644d522c345da.png

رابط هذا التعليق
شارك

وعليكم السلام ورحمة الله وبركاته 🙂 

بالذكاء الاصطناعي .. ولم أجربه بعد 😅

وظيفة الكود فقط التركيز على المربع النص المطلوب ثم تحديد النص من أول الفقرة وحتى أول فقرة تبدأ برقم .. ( حسب الوصف الذي أعطيته إياه ) 

جربه وأخبرنا بالنتيجة 🙂 

Sub SelectText()
  ' Declare variables
  Dim txt As String
  Dim i As Integer
  Dim start As Integer
  Dim end As Integer
  
  ' Get the text from the text box
  txt = Me.TextBox1.Value
  
  ' Find the start of the first paragraph
  start = 1
  
  ' Find the end of the first paragraph
  end = InStr(start, txt, vbCrLf)
  
  ' Check if a paragraph break was found
  If end > 0 Then
    ' Check if the next character after the paragraph break is a number
    If IsNumeric(Mid(txt, end + 1, 1)) Then
      ' Select the text from the start of the first paragraph to the start of the second paragraph
      Me.TextBox1.SetFocus
      Me.TextBox1.SelStart = start
      Me.TextBox1.SelLength = end - start
    End If
  End If
End Sub

 

رابط هذا التعليق
شارك

جزاك الله خيرا أخي الكريم .. كما ذكرتُ في الموضوع السابق: الذكاء الصناعي صعب علي 😂 ..  لم أعرف كيف أشغل هذا الكود 🤔

جربت أن أشغله لوحده في زر خاص .. ولم يحدث شيء

ومع أن هذا الكود يختلف كليا عن الكود الذي استخدمته ، جربت أن أدخله ضمن الكود بتاعي عبر (Call SelectText) والنتيجة نفسها

رابط هذا التعليق
شارك

بالفعل كان لا يعمل وبحاجة إلى تعديلات بسيطة 😁 وهذا هو الكود المعدل :

Private Sub SelectBtn_Click()
  ' Declare variables
  Dim TxtBoxControl As TextBox
  Dim txt As String
  Dim i As Integer
  Dim start As Integer
  Dim iEnd As Integer
  
  ' Defined The text box
  Set TxtBoxControl = Me.nass2
  
  ' Get the text from the text box
  txt = TxtBoxControl.Value
  
  ' Find the start of the first paragraph
  start = 0
  
  ' Find the end of the first paragraph
  iEnd = InStr(1, txt, vbCrLf)
  'Debug.Print iEnd
  ' Check if a paragraph break was found
  If iEnd > 0 Then
    ' Check if the next character after the paragraph break is a number
    'Debug.Print "(" & Mid(txt, iEnd + 2, 1) & ")"
    If IsNumeric(Mid(txt, iEnd + 2, 1)) Then
      ' Select the text from the start of the first paragraph to the start of the second paragraph
      TxtBoxControl.SetFocus
      TxtBoxControl.SelStart = start
      TxtBoxControl.SelLength = iEnd - start
    End If
  End If
    Set TxtBoxControl = Nothing
End Sub

وضعته على زر .. وكتبت اسم مربع النص في أول الكود وهذه هي النتيجة : 🙂 

image.png.8cae8c4654fb70458a6e37e2927eabad.png

رابط هذا التعليق
شارك

وإذا أحببت أن تجعله كروتين منفصل لتناديه في وسط أكوادك السابقة حولته لك هكذا :

Sub SelectText(ctrlTextBox As TextBox)
  ' Declare variables
  Dim TxtBoxControl As TextBox
  Dim txt As String
  Dim i As Integer
  Dim start As Integer
  Dim iEnd As Integer
  
  ' Defined The text box
  Set TxtBoxControl = ctrlTextBox
  
  ' Get the text from the text box
  txt = TxtBoxControl.Value
  
  ' Find the start of the first paragraph
  start = 0
  
  ' Find the end of the first paragraph
  iEnd = InStr(1, txt, vbCrLf)
  'Debug.Print iEnd
  ' Check if a paragraph break was found
  If iEnd > 0 Then
    ' Check if the next character after the paragraph break is a number
    'Debug.Print "(" & Mid(txt, iEnd + 2, 1) & ")"
    If IsNumeric(Mid(txt, iEnd + 2, 1)) Then
      ' Select the text from the start of the first paragraph to the start of the second paragraph
      TxtBoxControl.SetFocus
      TxtBoxControl.SelStart = start
      TxtBoxControl.SelLength = iEnd - start
    End If
  End If
    Set TxtBoxControl = Nothing
End Sub

 

والآن يمكنك مناداته في كودك هكذا :

Call SelectText(Me.nass2)

فيقوم بعملية التحديد 🙂 

رابط هذا التعليق
شارك

أولاً: بتحربة التحديد فقط فليس كل مرة يقوم بتحديد النص المطلوب .. فأحيانا لا يحدد شيئا مع وجود المعطيات المطلوبة، في الملف المرفق لا يحدد شيئا في رقم (2) ورقم (4)

image.png.f78aac3d25d7b005fe3bad10bf63a588.png

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

ثالثا: مجال العمل هو حقل (nass) أما (nass2) فهو لبيان النص المطلوب الحصول عليه وضعته يدويا على عجل لذاك حصل فيه خطأ في الحديث الثاني 🙂

رابط هذا التعليق
شارك

2 ساعات مضت, nssj said:

فأحيانا لا يحدد شيئا مع وجود المعطيات المطلوبة،

من الصور لاحظت أن هناك فقرتين قبل الفقرة التي تبدأ برقم .. والكود يفحص دائما الفقرة الثانية .. 🙂 

في هذي الحالة الكود يحتاج إلى تعديل ليبحث عن أول فقرة تبدأ برقم .. 

وربما يمكن الاستعانة بالأكواد السابقة لتحقيق ذلك  .. والموجودة في هذا الموضوع :

 

 

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information