Small amendment to shape manipulation in Excel

The attached workbook contains a worksheet called Map that contains values in cells F1 to AN1, and F3 to AN3 and these cells are linked to cells in a worksheet called Adjustable Weighting Table.

A change in the value of the cell in Map, changes the all values in each column in the Adjustable Weighting Table.
In the Adjustable Weighting Table, the values in D5 to D179  are linked to the values in A5 to A179 - i.e. D5 is linked to A5.
And the value in D5 is linked to the size of the circle in Map on the map that has the same ID as the number in cell A5..

When a value in Map F1 to AB1 is changed, the size of the circles on the map also change.
This is also meant to occur for a change in value in cells AC1 to AN1, and F3 to AN3, but something is not working.

I would like a change in any value in AC1 to AN1, and F3 to AN3 to change the size of the circles ion the map.
E-Example-workbook.xlsm
gregfthompsonAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

gregfthompsonAuthor Commented:
I found one error in the script. change 7 to 5 for start line. But I still cannot work out how to get all cells on Map worksheet to link.
0
Ejgil HedegaardCommented:
Change the macro in the worksheet module for sheet Map to

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F1:AN1", "F3:AN3")) Is Nothing And Target.Count = 1 Then
        Application.EnableEvents = False
            UpdateMap_click
        Application.EnableEvents = True
    End If
End Sub

Open in new window


Then a change in one cell in F1:AN1 or F3:AN3 will trigger the update macro to run.
0
Martin LissOlder than dirtCommented:
Ejgil got here first but change his line 2 to
If Not Intersect(Target, Range("F1:AI1", "F3:AI3")) Is Nothing And Target.Count = 1 Then
0
HTML5 and CSS3 Fundamentals

Build a website from the ground up by first learning the fundamentals of HTML5 and CSS3, the two popular programming languages used to present content online. HTML deals with fonts, colors, graphics, and hyperlinks, while CSS describes how HTML elements are to be displayed.

Ejgil HedegaardCommented:
The requirement was to column AN.
Guess it is going to be expanded.
0
gregfthompsonAuthor Commented:
Thanks to both.
Can you provide the full script. I can't work out where to include the change.
0
Martin LissOlder than dirtCommented:
In the code for the Map sheet you'll find this.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F1:AB1")) Is Nothing And Target.Count = 1 Then
        Application.EnableEvents = False
            UpdateMap_click
        Application.EnableEvents = True
    End If
End Sub

Open in new window


Replace it with Ejgil's code with or without my modification.
0
gregfthompsonAuthor Commented:
Thanks Martin, but in the module, this is the entire code:

Sub UpdateMap_click()
Dim myShp As String
Dim i As Long
Dim lngLastDataRow As Long
Dim lngDataRows As Long
Const FIRST_DATE_ROW = 5
Const DEFAULT_SIZE = 0.04
Dim wsAdjust As Worksheet
Dim wsMap As Worksheet

Application.ScreenUpdating = False
On Error GoTo UpdateMap_click_Error
Set wsAdjust = Worksheets("Adjustable Weighting Table")
Set wsMap = Worksheets("Map")
lngLastDataRow = wsAdjust.Range("A1048576").End(xlUp).Row
lngDataRows = lngLastDataRow - FIRST_DATE_ROW + 1

For i = FIRST_DATE_ROW To lngLastDataRow
    myShp = wsAdjust.Cells(i, "A").Value
    wsMap.Shapes(myShp).Height = DEFAULT_SIZE * wsAdjust.Cells(i, "D").Value
    wsMap.Shapes(myShp).Width = Sheets("Map").Shapes(myShp).Height
Next i
' From here down is the rest of the error handling code
On Error GoTo 0
Exit Sub

UpdateMap_click_Error:
    Application.EnableEvents = True
    If Err.Number = -2147024809 Then
        MsgBox "A shape with the name " & myShp & " is missing. Processing stopped.", _
        vbOKOnly + vbExclamation, "Missing shape"
        Debug.Print "Missing " & myShp
    Else
        MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure " _
        & "UpdateMap_click of Module UpdateMapMacro"
    End If
End Sub
0
Martin LissOlder than dirtCommented:
See the above but here's an updated workbook.
28960761.xlsm
0
Martin LissOlder than dirtCommented:
Thanks Martin, but in the module, this is the entire code:
No. That's the Module1 code. The other code is in the Map sheet code.
0
Martin LissOlder than dirtCommented:
.............
Here's a picture
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
gregfthompsonAuthor Commented:
Thank you both.
Brilliant job.
0
Martin LissOlder than dirtCommented:
You're welcome and I'm glad I was able to help.

In my profile you'll find links to some articles I've written that may interest you.

Marty - Microsoft MVP 2009 to 2016
              Experts Exchange MVE 2015
              Experts Exchange Top Expert Visual Basic Classic 2012 to 2015
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Excel

From novice to tech pro — start learning today.