VBA السيناريو مشروط تنسيق نص محدد في سلسلة الخلية

StackOverflow https://stackoverflow.com//questions/22060605

  •  23-12-2019
  •  | 
  •  

سؤال

أنا جديدة على التفوق و محاولة كتابة VBA السيناريو مشروط شكل بعض الخلايا.

لدي عمود كل خلية على حدة يبدو مثل هذا.

اسم المشروع:اسم واحد
آو:اسم اثنين
بو:اسم ثلاثة
CO:اسم أربعة
هل:اسم خمسة

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

آو:اسم اثنين
بو:اسم ثلاثة

ما كنت بحاجة إلى القيام به هو تنسيق من ذلك أن اسم المشروع: AO: بو: CO:, والقيام:كل الغامق بينما اسم واحد هو الغامق, المائل و الملونة.لا أستطيع أن أقول كيف لإضافة اللون هنا ولكن سوف ننظر بشيء من هذا القبيل.

اسم المشروع: اسم واحد (مع اللون)
آو: اسم اثنين
بو: اسم ثلاثة
CO: اسم أربعة
هل: اسم خمسة

أنا أتساءل عما إذا كان هناك طريقة لإنشاء VBA النصي للقيام بذلك تلقائيا ؟ بلدي الحل الأيام القليلة الماضية تم بشكل فردي تحديد النص في كل خلية وتطبيق التنسيق هناك ، وقد الجحيم!

Excel الإصدار:2010

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

المحلول

التعديل

هذا الزوج من الوظائف الفرعية سيتم القيام بهذه المهمة.التنسيق يمكن تطبيقها على نطاق من الخلايا في آن واحد.

' Make a keyboard shortcut for this macro:
Sub FormatActiveCells()
    Dim c As Range
    For Each c In Selection.Cells
        FormatCell c
    Next
End Sub

' This subroutine does the work
Sub FormatCell(c As Range)
    Dim pos1 As Integer, pos2 As Integer
    ' Determine if line 1 is project name
    pos1 = InStr(1, c.Text, "Project Name:")
    If pos1 > 0 Then
        ' Make "Project Name:" bold
        c.Characters(pos1, Len("Project Name:")).Font.FontStyle = "Bold"
        ' Advance past colon character
        pos1 = pos1 + Len("Project Name:")
        ' Find end-of-line character
        pos2 = InStr(pos1, c.Text, Chr(10))
        ' Make text between "Project Name:" and end-line italicized and colored
        c.Characters(pos1, pos2 - pos1).Font.FontStyle = "Bold Italic"
        c.Characters(pos1, pos2 - pos1).Font.Color = RGB(0, 0, 255)
        ' Point both positions to one character past end-of-line
        pos2 = pos2 + 1
        pos1 = pos2
    Else
        ' Point both positions to first character
        pos1 = 1
        pos2 = 1
    End If

    ' Format additional lines
    Do
        ' Find colon character
        pos2 = InStr(pos1, c.Text, ":")
        ' If not found, we're done
        If pos2 = 0 Then Exit Do
        ' Make text from start of line to colon bold
        c.Characters(Start:=pos1, Length:=pos2 - pos1).Font.FontStyle = "Bold"
        ' Find end-of-line
        pos2 = InStr(pos2 + 1, c.Text, Chr(10))
        ' If not found, we're done
        If pos2 = 0 Then Exit Do
        ' Point both positions to one character past end-of-line
        pos2 = pos2 + 1
        pos1 = pos2
        DoEvents
    Loop
End Sub
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top