VBA استبدال سلاسل متعددة من قائمة منفصلة
سؤال
أنا بحاجة إلى استبدال السلاسل ولكن حتى الآن تمكنت من استبدال الكلمات فقط.رمز يمر عمود الوصف و هو من المفترض أن تحل محل كل تسلسل من القائمة.والفكرة هي أن استخدام الاختصارات(قيم جديدة) بدلا من الكلمات كاملة (القيم القديمة).
في كل مرة هناك المجاورة (أي الفضاء) كلمة,حرف إلخ ، فشل التعليمات البرمجية.ما هو الخطأ ؟ شكرا لك!!!
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)
وظيفة بدلا من ذلك.