Solved

VBA to determine column letter of currently selected cell

Posted on 2014-03-19
6
546 Views
Last Modified: 2014-03-21
Dear Experts:

this nice macro, courtesy by rorya from EE, inserts graphics into Column D, linking them. The network paths for all these graphics (hyperlinks) are all located in Column C.

This great macro works just fine.

Could somebody help me tweak this code with the following requirements:

Line 15: The column letter should not be hard coded (that was my initial requirement) but dynamic, i.e. line 15 should be based on the column of the currently selected cell, ie. the column letter is to be dynamic.

Help is much appreciated. Thank you very much in advance.

Regards, Andreas

Sub InsertPictures_Linked_To_File()

' by rorya from EE

   Dim C                           As Range
   Dim Image                       As Picture
   
 If MsgBox("Would you like to add pictures to the active worksheet, linking them?" & vbCrLf & vbCrLf & _
 "There must be network paths as hyperlinks to draw the picture from!", vbQuestion + vbYesNo, "Insert Pictures into Column D") = vbNo Then
        Exit Sub
        End If

  On Error Resume Next
   
   For Each C In Range(Range("C2"), Range("C" & Rows.Count).End(xlUp))
      C.Offset(0, 1).Activate
            Set Image = ActiveSheet.Pictures.Insert(C.Value2) 'linktofile:=msoFalse
      With Image
         If .Height > Application.CentimetersToPoints(4) Then _
                  .ShapeRange.ScaleHeight Application.CentimetersToPoints(4) / .Height, msoCTrue
                  .TopLeftCell.RowHeight = Image.Height + 10

         If .Height > .Width Then
            With .ShapeRange
               .Rotation = 90
               .IncrementLeft .Height / 2 - .Width / 2
               .IncrementTop .Width / 2 - .Height / 2 + 5
            End With
        .TopLeftCell.RowHeight = Image.Width + 10
        Else: .ShapeRange.IncrementTop (5)
         End If
      End With
   Next
End Sub

Open in new window

0
Comment
Question by:AndreasHermle
6 Comments
 
LVL 81

Accepted Solution

by:
zorvek (Kevin Jones) earned 500 total points
ID: 39939059
Change:

   For Each C In Range(Range("C2"), Range("C" & Rows.Count).End(xlUp))

To:

   For Each C In Range(ActiveCell.EntireColumn.Rows(2), ActiveCell.EntireColumn.Rows(Rows.Count).End(xlUp))

Kevin
0
 

Author Comment

by:AndreasHermle
ID: 39939164
Hi Kevin,

thank you very much for your quick help. I will give it a try and let you know.

Regards, andreas
0
 
LVL 85

Expert Comment

by:Rory Archibald
ID: 39939270
Purely for information (no points, please) you can also use Cells:

For Each C In Range(Cells(2, Activecell.Column), Cells(Rows.Count, Activecell.Column).End(xlUp))

Open in new window

0
What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 
LVL 4

Expert Comment

by:senthilkumarsb
ID: 39939461
You can use named range for this.

for ex:- Create a named range for "C2" as MyCell

to get
value - ThisWorkbook.Names("MyCell").RefersToRange.Value
column - ThisWorkbook.Names("MyCell").RefersToRange.Column
row - ThisWorkbook.Names("MyCell").RefersToRange.Row

to get value
num = SheetName.Cells(i, Nms("MyCell").RefersToRange.Column).Value

to assign value
SheetName.Cells(i, Nms("MyCell").RefersToRange.Column).Value = 10
0
 

Author Closing Comment

by:AndreasHermle
ID: 39939605
Works great, exactly what I was looking for. Thank you very much.

Rory, thank you to you as well, I really appreciate it.

Regards, Andreas
0
 

Author Comment

by:AndreasHermle
ID: 39944644
To: senthilkumarsb

Hi, thank you very much for your great support. I will give it a try and then let you know.

Regards, Andreas
0

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

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…
This code takes an Excel list of URL’s and adds a header titled “URL List”. It then searches through all URL’s in column “A”, looking for duplicates. When a duplicate is found, it is moved to the top of the list. The duplicate URL’s are then highlig…
Viewers will learn the basics of slicers and timelines for both PivotTables and standard Excel tables in Excel 2013.
The view will learn how to download and install SIMTOOLS and FORMLIST into Excel, how to use SIMTOOLS to generate a Monte Carlo simulation of 30 sales calls, and how to calculate the conditional probability based on the results of the Monte Carlo …

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

19 Experts available now in Live!

Get 1:1 Help Now