?
Solved

VBA simple formatting qstn

Posted on 2016-11-07
4
Medium Priority
?
77 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 33

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 33

Accepted Solution

by:
Subodh Tiwari (Neeraj) earned 2000 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 34

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

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article describes how you can use Custom Document Properties to store settings and other information in your workbook so that they will be available the next time you open the workbook.
Windows Explorer let you handle zip folders nearly as any other folder: Copy, move, change, and delete, etc. In VBA you can also handle normal files and folders, but zip folders takes a little more - and that you'll find here.
This Micro Tutorial will demonstrate in Microsoft Excel how to add style and sexy appeal to horizontal bar charts.
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

864 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