Solved

How to make this function loop throght column A in a excel spread sheet

Posted on 2011-09-12
8
295 Views
Last Modified: 2012-05-12
Hello everyone ,
I trying to call this function inside a loop but I cannot make it works, basically what I 'd like to do is call this function for every cell in the selected range. I have attached the code please have look.
May anyone help me please?
Thanks in advance
Public Function GetFileProperty(myFile As String, myType As String) As String

    'This creates an instance of the MS Scripting Runtime FileSystemObject class
    Set oFS = CreateObject("Scripting.FileSystemObject")

    Select Case UCase(Trim(myFile))
        Case "CREATED"
            GetFileProperty = oFS.GetFile(myFile).DateCreated
        Case "MODIFIED"
            GetFileProperty = oFS.GetFile(myFile).DateLastModified
        Case "ACCESSED"
            GetFileProperty = oFS.GetFile(myFile).DateLastAccessed
        Case "SIZE"
            GetFileProperty = oFS.GetFile(myFile).Size
        Case Else
            GetFileProperty = "txt"
    End Select
End Function



 

Public Sub SperiamoLoop()

    Dim MyCell As Variant, Rng As Range
    Set Rng = Sheets("Sheet1").Range("A2:A4") '''''sets the range to use
    For Each MyCell In Rng ''''checks each cell in range
        If MyCell <> "" Then '''''will only do something if the cell is not blank
            Call GetFileProperty(myFile, myType) '''Put your code here
        Else '''''if cell is equal to blank
            Exit Function ''''then quit macro
        End If
    Next
End Sub

Open in new window

0
Comment
Question by:nassio1985
  • 3
  • 2
  • 2
  • +1
8 Comments
 
LVL 4

Expert Comment

by:GeoffHarper
ID: 36521987
First off, I see that it will not loop through all the cells in range if any are blank; it will stop at the first blank one.  I.e. you need to do away with the ELSE.
If MyCell <> "" Then '''''will only do something if the cell is not blank
            Call GetFileProperty(myFile, myType) '''Put your code here
        End If

Open in new window

0
 
LVL 18

Assisted Solution

by:Cluskitt
Cluskitt earned 350 total points
ID: 36521998
2 things are wrong with your code.
1) In the SperiamoLoop Sub, you have an if. The else clause is Exit Function. This is wrong. The If clause is inside the Sub, not the Function. You have to change it to Exit Sub or (as I think you want to) nothing at all, so it can continue to loop. So, basically, change to exit sub if you want to cancel on the first blank cell, or remove the else/exit lines to just keep looping.
2) A function returns a value. That means that you need to assign it. Your function is defined as string, so you need to either dump it in a string variable, or dump it in a cell. Something like Range(MyCell).OffSet(0,1)=GetFileProperty(myFile, myType)
0
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 36522011
How do the myFile and myType variables get their values?
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:nassio1985
ID: 36522084
TO GrahamSkan:
 myFile and mtType get their values from the spread sheet column A.

TO Cluskitt:
Sorry but let's say that I'm a newbie so could please be more specific, how shall I change the code?

To GeoffHarper:
I know that if one cell in the loop in blanck it will skip it, I have done to put an error check, but the range it's a list made by myself so there will not  any black cells.
0
 
LVL 18

Assisted Solution

by:Cluskitt
Cluskitt earned 350 total points
ID: 36522358
Ok, without knowing how they get their values from column a (seeing as it's two values in one column), try to adapt this into your needs (I will assume data in column A is like-"filename/type":

Public Function GetFileProperty(myFile As String, myType As String) As String
    'This creates an instance of the MS Scripting Runtime FileSystemObject class
    Set oFS = CreateObject("Scripting.FileSystemObject")
    Select Case UCase(Trim(myFile))
        Case "CREATED"
            GetFileProperty = oFS.GetFile(myFile).DateCreated
        Case "MODIFIED"
            GetFileProperty = oFS.GetFile(myFile).DateLastModified
        Case "ACCESSED"
            GetFileProperty = oFS.GetFile(myFile).DateLastAccessed
        Case "SIZE"
            GetFileProperty = oFS.GetFile(myFile).Size
        Case Else
            GetFileProperty = "txt"
    End Select
End Function

Public Sub SperiamoLoop()
    Dim MyCell As Variant, Rng As Range
    Dim myFile, myType As String
    Set Rng = Sheets("Sheet1").Range("A2:A4")
    For Each MyCell In Rng
        If MyCell <> "" Then
            myFile = Left(MyCell, InStr(MyCell, "/") - 1)
            myType = Mid(MyCell, InStr(MyCell, "/") + 1)
            MyCell.Offset(0, 1) = GetFileProperty(myFile, myType)
        End If
    Next
End Sub

Open in new window

0
 

Accepted Solution

by:
nassio1985 earned 0 total points
ID: 36522503
It's giving this error "ByRef argument type mismatch"?
0
 

Author Closing Comment

by:nassio1985
ID: 36553425
thanks a lot
0
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 36522551
myFile is not defined without specifying the type, so is a Variant in SperiamoLoop; while GetFileProperty expects a string.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

When you see single cell contains number and text, and you have to get any date out of it seems like cracking our heads.
Today, the web development industry is booming, and many people consider it to be their vocation. The question you may be asking yourself is – how do I become a web developer?
This Micro Tutorial demonstrates in Microsoft Excel how to consolidate your marketing data by creating an interactive charts using form controls. This creates cool drop-downs for viewers of your chart to choose from.
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …

685 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