سؤال

أنا بحاجة إلى استبدال السلاسل ولكن حتى الآن تمكنت من استبدال الكلمات فقط.رمز يمر عمود الوصف و هو من المفترض أن تحل محل كل تسلسل من القائمة.والفكرة هي أن استخدام الاختصارات(قيم جديدة) بدلا من الكلمات كاملة (القيم القديمة).

في كل مرة هناك المجاورة (أي الفضاء) كلمة,حرف إلخ ، فشل التعليمات البرمجية.ما هو الخطأ ؟ شكرا لك!!!

Sub ReplaceWords_BUT_Need_ToReplaceStrings()

    Application.ScreenUpdating = False

    'This macro works with separated words only. Eliminate hyphens etc before applying this macro.

    Dim r As Range, A As Range
    Dim s1 As Worksheet, s2 As Worksheet, LastRow As Integer, v As String, j As Integer,      
    oldv As String, newv As String

    LastRow = Cells(Rows.count, "A").End(xlUp).row

    Set s1 = Sheets("JE_data")
    Set s2 = Sheets("ListToReplace")
    Set A = s1.Range("J:J").Cells.SpecialCells(xlCellTypeConstants)
    For Each r In A
        v = r.Value

        For j = 2 To LastRow

            oldv = s2.Cells(j, 1).text
            newv = s2.Cells(j, 2).text

'استبدال وظيفة كما كنت قد استخدمت هي قضية حساسة.'هل أنت متأكد من أن كل ما تبذلونه من الفاتورة الكلمات تبدأ مع رأس المال الرسالة ؟ 'إذا لم يكن ثم استخدام v = Replace(v, oldv, newv, 1, -1, vbTextCompare) وظيفة بدلا من ذلك.موافق.

        v = Replace(v, oldv, newv, 1, -1, vbTextCompare)    
        'v = Replace(v, oldv, newv)

        Next j
        r.Value = Trim(v)

    Next r

    Application.ScreenUpdating = True

End Sub

على سبيل المثال:

ListToReplace

Left column (old)     Right column (new)
----------------------------------------
Invoice               inv 
Salary                sy 
Credit                cr 

JE_data

cr Note
cr note 
INV/2712/14RF/0229/14 
Invoice 1078 10 
TECHNOQ01SI 2014 03288

(محرر ملاحظة: أنا لا أعرف إذا كان المثال هو الصحيح لأنه كتب في التعليقات)

Credit تم استبدال مع cr و Invoice وكان من المتوقع أن يتم استبدال inv ولكنه لم يكن

هل كانت مفيدة؟

المحلول

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

v = Replace(v, oldv, newv, 1, -1, vbTextCompare)

وظيفة بدلا من ذلك.

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