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

مشكلة عدم ظهور استبدال القيم والتعليقات


إذهب إلى أفضل إجابة Solved by محمد هشام.,

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

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

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

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

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

شكرا لكم 

بحث.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