Solved

VBA simple formatting qstn

Posted on 2016-11-07
4
35 Views
Last Modified: 2016-11-08
I have 20 columns on my Sheet1
Columns A-D are filled with Location, Name1, Name2, Cost
the rest of Columns is just data per month.
I already have a Range and VBA to put grid all around my ranged cells.
I need a VBA code to put bolded line everytime Name1 (Column B) changes - so user can see "blocks" of data clearly.
Bolded line on the bottom of the last occurance of Name1
So if there is John Doe, Bill Smith...
After John Doe there will be a horizontal bolded line going all thru Col A thru Z (whatever 20th Col is)
0
Comment
Question by:CABRLU63
  • 2
4 Comments
 
LVL 28

Expert Comment

by:Subodh Tiwari (Neeraj)
ID: 41878118
You may try something like this.....
Sub Formatting()
Dim lr As Long, lc As Long, i As Long
lr = Cells(Rows.Count, 2).End(xlUp).Row
lc = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 2 To lr
    If Cells(i, 2) <> Cells(i + 1, 2) Then
        With Range(Cells(i, 1), Cells(i, lc)).Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlMedium
        End With
    End If
Next i
End Sub

Open in new window

0
 
LVL 28

Accepted Solution

by:
Subodh Tiwari (Neeraj) earned 500 total points
ID: 41878120
Or better to remove the existing bottom lines before running the code in case you run the code after new data added or edited.

Sub Formatting()
Dim lr As Long, lc As Long, i As Long
lr = Cells(Rows.Count, 2).End(xlUp).Row
lc = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 2 To lr
    Range(Cells(i, 1), Cells(i, lc)).Borders(xlEdgeBottom).LineStyle = xlNone
Next i
For i = 2 To lr
    If Cells(i, 2) <> Cells(i + 1, 2) Then
        With Range(Cells(i, 1), Cells(i, lc)).Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlMedium
        End With
    End If
Next i
End Sub

Open in new window

0
 
LVL 31

Expert Comment

by:Rob Henson
ID: 41878514
I realise that this suggestion changes the way you are working but I am going to throw it out there anyway.

Instead of masses of columns, you could use a datagrid format with the following columns:
Location,
Name1,
Name2,
Cost,
Value,
Month.

The value and month columns would replace your multiple columns. Rather than a column for each month there would be one column and in that column you specify the month or even the actual date on which the value has occurred. This would mean that there are multiple lines per Location/Name etc.

With the data in this format you could then use a Pivot Table to summarise the data and the formatting of the Pivot Table can be set so that there is clear delineation between names etc and would adjust each time the Pivot Table is refreshed.
1
 

Author Closing Comment

by:CABRLU63
ID: 41879241
Rob Henson, I can't use Pivots. Not feasible for this project.
0

Featured Post

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

Suggested Solutions

Introduction This Article briefly covers methods of calculating the NPV and IRR variants in Excel as well as the limitations in calculating and interpreting IRR results. Paraphrasing Richard Shockley, author of my favourite finance reference tex…
How to quickly and accurately populate Word documents with Excel data, charts and images (including Automated Bookmark generation) David Miller (dlmille) Synopsis In this article you’ll learn how to use ExcelToWord! to copy data,charts, shapes …
The viewer will learn how to use the =DISCRINV command to create a discrete random variable, use this command to model a set of probabilities and outcomes in a Monte Carlo simulation, and learn how to find the standard deviation of a set of probabil…
This Micro Tutorial will demonstrate how to use a scrolling table in Microsoft Excel using the INDEX function.

759 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now