اذهب الي المحتوي
أوفيسنا

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

قام بنشر (معدل)

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

فوجئت عند رغبتي بعمل بحث واستبدال  يظهر فقط بحث واستبدال الصيغ وعدم ظهور بحث واستبدال القيم و التعليقات

عند البحث فقط ( بدون بحث واستبدال )   يظهر امكانية البحث عن القيم والمعادلات و التعليقات 

هل من طريقة لتعود ؟

شكرا لكم 

بحث.pdf

تم تعديل بواسطه عاطف عبد العليم محمد
قام بنشر

وعليكم السلام ورحمة الله وبركاته
أخي الفاضل نعم في الإستبدال لا يمكن ظهور البحث في التعليقات
ويتم التغلب على هذا باضافة كود يوضع فيه كلمة البحث والإستبدال
أو وضع كلمة البحث في خلية والإستبدال في خلية ويقوم باستبدال الكلمة التي في التعليقات
اليك هذا الكود

Sub ReplaceComments()
    Dim cmt As Comment
    Dim wks As Worksheet
    Dim sFind As String
    Dim sReplace As String
    Dim sCmt As String
 
    sFind = Range("A1").Value
    
    sReplace = Range("B1").Value

    For Each wks In ActiveWorkbook.Worksheets
        For Each cmt In wks.Comments
            sCmt = cmt.Text
            If InStr(sCmt, sFind) <> 0 Then
                sCmt = Application.WorksheetFunction. _
                  Substitute(sCmt, sFind, sReplace)
                cmt.Text Text:=sCmt
            End If
        Next
    Next
    Set wks = Nothing
    Set cmt = Nothing
End Sub


البحث في الخلية A1 وكلمة الإستبدال في الخلية B1

قام بنشر (معدل)

شكرا جزيلا  إيهاب عبد الحميد

لتوضيح المشكلة اكثر    اذا بحث عن 3  فلا مشكلة اذا كانت الخلية تحتوي 3 اما اذا كانت تحتوي على =1+2 فيعطي لم يتمكن من العثور عليها

اذا تفضلت  ــ إن تيسر لك تعديل الكود بحيث يظهر امكانية ادخال input box

القيمة التي يبحث عنها  

القيمة المراد استبدالها

نطاق التغيير  بدلا من جعله في كل الصفحة

 

 

 

 

 

تم تعديل بواسطه عاطف عبد العليم محمد
قام بنشر

اخي هل عملية البحث والاستبدال المطلوب جعلها على جميع اوراق المصنف او ورقة معينة 

وما هو النطاق المرغوب الاشتغال عليه 

قام بنشر

أخي الكريم الكود يبحث في التعليقات فقط
اليك بعض التعديل كما فهمت أنا وهذا الكود الآن سيعمل في الورقة النشطة فقط دون المصنف بالكامل

Sub ReplaceComments()
    Dim cmt As Comment
    Dim sFind As String
    Dim sReplace As String
    Dim sCmt As String
    Dim found As Boolean
    
    sFind = InputBox("أدخل الكلمة المراد البحث عنها:")
    sReplace = InputBox("أدخل الكلمة المراد استبدالها:")
    
    found = False
    
    For Each cmt In ActiveSheet.Comments
        sCmt = cmt.Text
        If InStr(sCmt, sFind) <> 0 Then
            sCmt = Application.WorksheetFunction.Replace(sCmt, InStr(sCmt, sFind), Len(sFind), sReplace)
            cmt.Text Text:=sCmt
            found = True
        End If
    Next
    
    If Not found Then
        MsgBox "لم يتمكن من العثور على الكلمة المراد البحث عنها."
    End If
    
    Set cmt = Nothing
End Sub

 

قام بنشر (معدل)

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

بعد ادن الاخ ايهاب عبد الحميد جرب الكود التالي 

Sub Find_and_Replace_values_comments()
Dim Title As Variant, WS As Worksheet: Set WS = Sheets("Sheet1")
    Dim arr(2) As Variant, WSrng As Range, i As Integer, cell As Range
    Title = Array("البحث", "الاستبدال")
    i = 0
    Do
    'قيمة البحث والاستبدال
    arr(i) = InputBox(" أدخل قيمة " & " " & Title(i), Title(i))
        If StrPtr(arr(i)) = 0 Then Exit Sub
        If Len(arr(i)) = 0 Then
            MsgBox "يجب عليك إدخال قيمة" & Title(i), 48, "خطأ"
        Else
            i = i + 1
        End If
    Loop Until i > 1
    On Error Resume Next
 'قم بتعديل النطاق بما يناسبك
Set WSrng = WS.Range("A1:M100")
    WSrng.Replace arr(0), arr(1), xlPart, , False
    For Each cell In WSrng.SpecialCells(xlCellTypeComments)
    cell.Comment.Text Application.Substitute(cell.Comment.Text, arr(0), arr(1))
  Next
End Sub

في حالة الرغبة في البحث والإستبدال على جميع صفحات المصنف فقد تمت إظافة  الكود في الملف المرفق

بالتوفيق...........

 

Find_and_Replace_FormulaVersion.xlsb

تم تعديل بواسطه محمد هشام.
Add search and replace comments
قام بنشر

جزاكما  الله خيرا

محمد هشام.   إيهاب عبد الحميد

واعتذر لكم  ــ سأوضح المطلوب 

ـ لا يهمني البحث في التعليقات

ــ يهمني البحث عن الخانات التي تحتوي على قيم كالآتي =2+5   ( 7 )   ــ  اذا بحث عن 7 فلا تظهر نتيجة 

أذا كانت خلية تحتوي على 7   وخلية أخرى تحتوي على 7 ولكن نتيجة جمع 2+5 مثلا   فعند البحث والاستبدال  يتعامل مع 7 ولا يتعامل مع الخلية التي بها 7 نتيجة جمع 2+5

المطلوب بحث في الورقة النشطة في نطاق محدد

وقد وجدت هذا الكود لتحديد النطاق

Set rng = Application.InputBox("Select a range", "Title Here", Type:=8)

 

قام بنشر

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

  • أفضل إجابة
قام بنشر (معدل)

اعتقد ان الكود الخاص بي يفعل نفس الشيء ينقصه فقط تحديد النطاق المرغوب الاشتغال عليه لعدم دكرك دالك في اول مشاركة 

يمكنك التحقق من الرابط التالي     https://streamable.com/49qe96

تم تعديل الكود ليتناسب مع طلبك الاخير 

Sub Find_and_Replace_values() 
Dim Title As Variant, WS As Worksheet: Set WS = ActiveSheet
    Dim arr(2) As Variant, WSrng As Range, i As Integer, Cpt As Long
    Title = Array("البحث", "الاستبدال")
    i = 0
    Do
    'قيمة البحث والاستبدال
    arr(i) = InputBox(" أدخل قيمة " & " " & Title(i), Title(i))
        If StrPtr(arr(i)) = 0 Then Exit Sub
        If Len(arr(i)) = 0 Then
            MsgBox "يجب عليك إدخال قيمة" & " " & Title(i), 48, "خطأ"
        Else
            i = i + 1
        End If
    Loop Until i > 1
    On Error Resume Next
 ' تحديد النطاق
Set WSrng = Application.InputBox(Prompt:=" تحديد نطاق البحث: ", _
    Title:="البحث والاستبدال", _
    Default:=Selection.Address, Type:=8)
    
    If WSrng Is Nothing Then Exit Sub
    WSrng.Replace arr(0), arr(1), xlPart, , False
    Cpt = WorksheetFunction.CountIf(WSrng, arr(1))
        MsgBox " تم إستبدال " _
        & Cpt & " قيمة" _
         & vbCrLf & vbCrLf _
        & "  " & "من" & " " & arr(0) & " " & "إلى" & " " & arr(1), vbInformation, "information"
  
End Sub

في حالة الرغبة بعدم استبدال الصيغ بصفة عامة والتعامل مع القيم فقط  يمكنك استخدام هدا الخيار 

'''''''''''''''
 ' تحديد النطاق
Set WSrng = Application.InputBox(Prompt:=" تحديد نطاق البحث: ", _
    Title:="البحث والاستبدال", _
    Default:=Selection.Address, Type:=8)
If WSrng Is Nothing Then Exit Sub
For Each c In WSrng
    If Not c.HasFormula And c <> "" Then
    c.Replace arr(0), arr(1), xlPart, , False
    Cpt = WorksheetFunction.CountIf(WSrng, arr(1))
    End If
Next c
 MsgBox " تم إستبدال " _
        & Cpt & " قيمة" _
         & vbCrLf & vbCrLf _
        & "  " & "من" & " " & arr(0) & " " & "إلى" & " " & arr(1), vbInformation, "information"
End Sub

 

 

 

Find_and_Replace_FormulaVersion3.xlsb

تم تعديل بواسطه محمد هشام.
تحديد الورقة النشطة
  • Like 1

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