nssj قام بنشر يناير 2, 2023 قام بنشر يناير 2, 2023 الإخوة الكرام .. السلام عليكم أنا بحاجة لكود يقوم بنسخ نص معين من سجلات محددة ليضع ما تم نسخة في آخر السجل السابق * والسجلات التي هي مجال القص هي التي يكون فيها الحقل (cut_thes) يساوي: نعم * وكنت في البداية أريد قص النص من أوله إلى آخر أول فقرة، ونجحت في ذلك Me.nass.SelStart = 0 Me.Nass.SelLength = InStr([Nass], Chr(13)) - 1 DoCmd.RunCommand acCmdCut وعلى هذا الأساس فالكود كان يعمل بشكل جيد وبدون مشاكل لكن ظهر لي أن الأفضل قص النص من أوله إلى ما قبل أول فقرة تبدأ برقم فإن لم يكن هناك فقرة تبدأ برقم فيتم قص النص كله وهذه لم أعرف كيف أنفذها يعني في هذه الصورة المطلوب قص السطرين ونقلهما ، وليس قص السطر الأول فقط وقد أضفت حقلا للنص المطلوب الحصول عليه وضعته يدويا للتوضيح أرجو أن أكون قد أوضحت المطلوب .. والكود المرفق سيوضح المطلوب أكثر .. ينقصني فيه جزئية تحديد النص المطلوب: من أول الحقل إلى ما قبل أول فقرة تبدأ برقم Cut_Paste.rar
nssj قام بنشر يناير 4, 2023 الكاتب قام بنشر يناير 4, 2023 للرفع .. وليس بالضرورة الاطلاع أو التعديل على الكود كله .. أنا تنقصني في 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))) ولكن كانت تخرج هذه الرسالة
Moosak قام بنشر يناير 4, 2023 قام بنشر يناير 4, 2023 وعليكم السلام ورحمة الله وبركاته 🙂 بالذكاء الاصطناعي .. ولم أجربه بعد 😅 وظيفة الكود فقط التركيز على المربع النص المطلوب ثم تحديد النص من أول الفقرة وحتى أول فقرة تبدأ برقم .. ( حسب الوصف الذي أعطيته إياه ) جربه وأخبرنا بالنتيجة 🙂 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
nssj قام بنشر يناير 4, 2023 الكاتب قام بنشر يناير 4, 2023 جزاك الله خيرا أخي الكريم .. كما ذكرتُ في الموضوع السابق: الذكاء الصناعي صعب علي 😂 .. لم أعرف كيف أشغل هذا الكود 🤔 جربت أن أشغله لوحده في زر خاص .. ولم يحدث شيء ومع أن هذا الكود يختلف كليا عن الكود الذي استخدمته ، جربت أن أدخله ضمن الكود بتاعي عبر (Call SelectText) والنتيجة نفسها
Moosak قام بنشر يناير 4, 2023 قام بنشر يناير 4, 2023 بالفعل كان لا يعمل وبحاجة إلى تعديلات بسيطة 😁 وهذا هو الكود المعدل : 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 وضعته على زر .. وكتبت اسم مربع النص في أول الكود وهذه هي النتيجة : 🙂
Moosak قام بنشر يناير 4, 2023 قام بنشر يناير 4, 2023 وإذا أحببت أن تجعله كروتين منفصل لتناديه في وسط أكوادك السابقة حولته لك هكذا : 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) فيقوم بعملية التحديد 🙂
nssj قام بنشر يناير 4, 2023 الكاتب قام بنشر يناير 4, 2023 أولاً: بتحربة التحديد فقط فليس كل مرة يقوم بتحديد النص المطلوب .. فأحيانا لا يحدد شيئا مع وجود المعطيات المطلوبة، في الملف المرفق لا يحدد شيئا في رقم (2) ورقم (4) ثانيا: عند تجربتي له في كود القص واللصق كان يقص نصا آخر من صفحة أخرى والمطلوب أن يقص من الصفحة التي هو فيها فقط .. وربما تنتهي هذه المشكلة إذا عولجت المشكلة الأولى ثالثا: مجال العمل هو حقل (nass) أما (nass2) فهو لبيان النص المطلوب الحصول عليه وضعته يدويا على عجل لذاك حصل فيه خطأ في الحديث الثاني 🙂
Moosak قام بنشر يناير 4, 2023 قام بنشر يناير 4, 2023 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.