View Full Version : [SLEEPER:] Makes bold a chosen word in a cell
makiwara
03-08-2018, 01:57 PM
The sheet's name is: animals
A B
1. lion The lions are beatufil animals.
2. dog Dogland is the home of the animals.
I need a VBA code which examines the words in column "A" and notes the first 2 characters of the word and then if a word in column "B" starts with that 2 characters then the code makes the whole word bold in column B.
Thank you for your time and help, it means to me a lot, if you try to help me!
Have a very nice day! https://www.mrexcel.com/forum/images/smilies/icon_smile.gif
What should happen if
3. baby Babalouie is the king of baboons.
Tom Jones
03-09-2018, 02:37 AM
What should happen if
3. baby Babalouie is the king of baboons.
or
dog do ... ... door
MINCUS1308
03-12-2018, 12:06 PM
Lion
The lions are beatufil animals.
Dog
Dogland is the home of the animals.
Sub ThisIsDumb()
Set Rng = Columns(1)
For Each aCell In Rng.Cells
If aCell.Value = "" Then Exit Sub
MyString = UCase(Left(Cells(aCell.Row, 1).Value, 2))
MySentence = UCase(Cells(aCell.Row, 2).Value)
LocationStart = InStr(1, CStr(MySentence), CStr(MyString))
If LocationStart > 0 Then
i = LocationStart
Do Until Mid(MySentence, i, 1) = " "
i = i + 1
Loop
LocationEnd = i - LocationStart
With Cells(aCell.Row, 2).Characters(Start:=LocationStart, Length:=LocationEnd).Font
.FontStyle = "Bold"
End With
Else
Cells(aCell.Row, 3).Value = "String Not Found"
End If
Next aCell
End Sub
MINCUS1308
03-13-2018, 10:37 AM
Lion
The lions are beatufil animals.
Dog
Dogland is the home of the animals.
Baby
Babalouie is the king of baboons.
Dog
do … … door
Sub ThisIsDumber()
Sub DumberYet()
StringCol = 1
SentenceCol = 2
StrLen = 2
Set Rng = Columns(StringCol)
For Each aCell In Rng.Cells
If aCell.Value = "" Then Exit Sub
StrCellValue = aCell.Value
MyStr = UCase(Left(StrCellValue, StrLen))
SenCellValue = Cells(aCell.Row, SentenceCol).Value
MySen = UCase(SenCellValue)
S_Loc = 1
Do While (InStr(S_Loc, MySen, MyStr) <> 0 And S_Loc <= Len(MySen))
I = InStr(S_Loc, MySen, MyStr)
MyStart = I
Do Until (Mid(MySen, I, 1) = " " Or I > Len(MySen) Or Mid(MySen, I, 1) = ".")
I = I + 1
Loop
W_Length = I - MyStart
Cells(aCell.Row, SentenceCol).Characters(Start:=MyStart, Length:=W_Length).Font.FontStyle = "Bold"
S_Loc = W_Length + S_Loc
Loop
Here:
Next aCell
end sub
MINCUS1308
03-14-2018, 08:09 AM
Baby
BABAlouie is the king of BAboons.
dog
DO … … DOor
Lion
The LIons are beatufil animals.
Dog
DOgland is the home of the animals.
Sub DumberYet()
StrCol = 1
StrLen = 2
SentCol = 2
'LOOP THOUGH COLUMN 1 VALUES UNTIL BLANK
Set Rng = Columns(StrCol)
For Each aCell In Rng.Cells
If aCell.Value = "" Then Exit Sub
'UCASE ALL INSTANCES OF STRING IN SENTENCE
S_Loc = 1
Do
StrValue = Left(aCell.Value, StrLen)
SentValue = Cells(aCell.Row, SentCol).Value
I = InStr(S_Loc, UCase(SentValue), UCase(StrValue))
If I <> 0 Then
If I = 1 Then
Cells(aCell.Row, SentCol).Value = Left(UCase(SentValue), StrLen) & Right(SentValue, Len(SentValue) - I - 1)
Else
Cells(aCell.Row, SentCol).Value = Left(SentValue, I - 1) & Mid(UCase(SentValue), I, StrLen) & Right(SentValue, Len(SentValue) - I - 1)
End If
End If
S_Loc = I + StrLen
Loop Until I = 0
'BOLD ALL WORDS CONTAINING INSTANCES OF STRING
S_Loc = 1
Do
StrValue = Left(aCell.Value, StrLen)
SentValue = Cells(aCell.Row, SentCol).Value
I = InStr(S_Loc, UCase(SentValue), UCase(StrValue))
If I <> 0 Then
W_Start = I
Do Until (Mid(SentValue, I, 1) = " " Or Mid(SentValue, I, 1) = "." Or I >= Len(SentValue))
I = I + 1
Loop
W_Len = I - W_Start
Cells(aCell.Row, SentCol).Characters(Start:=W_Start, Length:=W_Len).Font.FontStyle = "Bold"
End If
S_Loc = I
Loop Until I = 0
Next aCell
End Sub
MINCUS1308
03-14-2018, 08:16 AM
:anyone:
J FelixBosco
03-21-2018, 04:57 PM
Hi makiwara,
Please try the below code.
Sub Bold_er()
Dim i As Long
Dim s As Variant
Dim pos As Long 'store position
Dim sarray() As String 'part of string
Dim position As Collection 'positions
Dim Length As Collection ' word lengths
i = 1
Set position = New Collection
Set Length = New Collection
While ActiveSheet.Cells(i, 1).Value <> ""
With ActiveSheet
sarray = Split(.Cells(i, 2).Value, " ")
pos = 1
For Each s In sarray
If LCase(CStr(s)) Like LCase(Left(.Cells(i, 1), 2)) & "*" Then
position.Add pos
Length.Add Len(s)
End If
pos = pos + Len(s) + 1
Next
While position.Count <> 0
With .Cells(i, 2).Characters(position(1), Length(1)).Font
.FontStyle = "Bold"
End With
position.Remove (1)
Length.Remove (1)
Wend
Erase sarray
i = i + 1
End With
Wend
End Sub
Output of above code:
21884
p45cal
05-20-2018, 11:58 AM
seems to have been solved at https://www.mrexcel.com/forum/excel-questions/1046738-can-you-help-me-i-need-vba-code-makes-bold-chosen-word-cell.html
makiwara, you need to read http://www.excelguru.ca/content.php?184
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.