Solved

VBA loop wipe 2 columns

Posted on 2011-09-15
9
428 Views
Last Modified: 2012-05-12
Hello everyone,
thanks to some of you I finally have my macro working, but I still have an issue when I run it it wipe out all the contents from B2,B3 and C2, C3 D2, D3 E2, E3, anyone knows why?
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")

    If oFS.FileExists(myFile) Then
        Select Case UCase(Trim(myType))
            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
    Else
        GetFileProperty = "File does not exist"
    End If
End Function

Public Sub SperiamoLoop()
    Dim MyCell As Variant, Rng As Range
    Dim myFile As String, myType As String
    Set Rng = Sheets("Sheet1").Range("A2:A4")
    For Each MyCell In Rng
        myFile = MyCell.Value
        If myFile <> "" Then
            For i = 1 To 4
                myType = Sheets("Sheet1").Range("A1").Offset(0, i)
                MyCell.Offset(0, i) = GetFileProperty(myFile, myType)
            Next
        End If
    Next
End Sub

Open in new window

z1.jpg
0
Comment
Question by:nassio1985
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 2
9 Comments
 
LVL 14

Expert Comment

by:Farzad Akbarnejad
ID: 36545536
Hello,
Make sure you correctly copy formula into cells.
Select B1 then copy it to B2, B3. If you click on B2 you must see your formula referenced to B2 and so on...

-FA
0
 

Author Comment

by:nassio1985
ID: 36545611
I've done this but every time I make the loop run it wipe the cell as you see in the screen shot.
0
 
LVL 14

Expert Comment

by:Farzad Akbarnejad
ID: 36545757
Hello,
Select B1. Then Drag its right-down corner to B2, B3

or

Use Edit > Fill > Down command from menu.

-FA
0
Optimize your web performance

What's in the eBook?
- Full list of reasons for poor performance
- Ultimate measures to speed things up
- Primary web monitoring types
- KPIs you should be monitoring in order to increase your ROI

 
LVL 37

Assisted Solution

by:TommySzalapski
TommySzalapski earned 500 total points
ID: 36545861
It didn't wipe the columns, it's just running the else every time again and you commented it out.

For your code to work as written, the first row MUST match your cases.
Make row 1:
Filename CREATED MODIFIED ACCESSED SIZE
Then DO NOT change it and the code will work.
0
 
LVL 37

Assisted Solution

by:TommySzalapski
TommySzalapski earned 500 total points
ID: 36545901
If you want the columns named differently or arranged differently, then just make sure the column name matches the name in the CASE line.

If you want that data in different columns, then change this line
 For i = 1 To 4
If you change it to
 For i = 3 To 6
then it will use columns D:G instead of B:E
0
 

Author Comment

by:nassio1985
ID: 36546087
How could e running the else if like you said I commented it out, by the way I tried without comment and as you can see from the screen shot that's what I get, the first row does match my case as you said and I did it even before. How could I avoid the else to run again and again?
without-comments.jpg
0
 
LVL 37

Assisted Solution

by:TommySzalapski
TommySzalapski earned 500 total points
ID: 36546189
No, the text in the first row must exactly match the text in the cases. So B1 must contain the text CREATE spelled exactly the way that it is spelled in the case.
0
 

Author Comment

by:nassio1985
ID: 36546263
Hum... If I well understood this is what I sould put inside the B1 =GetFileProperty(A1,"CREATED"), if so it's not working....
0
 
LVL 37

Accepted Solution

by:
TommySzalapski earned 500 total points
ID: 36546726
No. In B1 just put CREATED
That's it. Just the text.
No = or formula or anything.
0

Featured Post

Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

Question has a verified solution.

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

This article describes a serious pitfall that can happen when deleting shapes using VBA.
After seeing numerous questions for Dynamic Data Validation I notice that most have used Visual Basic to solve the problem. This suggestion is purely formula based and can be used in multiple rows.
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

630 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