View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
stefan onken stefan onken is offline
external usenet poster
 
Posts: 33
Default Macro not running anymore

hi Andreas,
maybe you´re searching the output.csv in the wrong directory?
If you use file/open to open a file in Excel and start the macro,
output.csv will be saved in the directory of file/open-dialog and not
in the directory of the file with the macro. therefore add a path to
your macro, eg
ListCombos Range("A1:A5"), 3, thisworkbook.path & "\Output.csv"

bye
stefan

On 22 Mai, 16:29, Andreas wrote:
Hi,

I use the following macro and it used to run fine - until yesterday.
Then, I had to manually stop it (using the windows task manager). Now,
t's not working anymore. Well, it seems as if it's still working, but
the output file is not created.

Any ideas about the problem? Thanks,

Andreas

Sub test()
* * ListCombos *Range("A1:A5"), 3, "Output.csv"
End Sub

Sub ListCombos(r As Range, ByVal m As Long, sFile As String)
* * *' lists the combinations of r choose m to file sFile
* * *' r is a single-column or single-row range
* * Dim *ai() * *As Long
* * Dim i * * * As Long
* * Dim n * * * As Long
* * Dim sOut * *As String

* * Dim iFF * * As Integer

* * If r Is Nothing Then Exit Sub
* * If r.Rows.Count < 1 And r.Columns.Count < 1 Then Exit Sub

* * n = r.Count
* * If m < 1 Then Exit Sub
* * If m n Then m = n

* * iFF = FreeFile
* * Open sFile For Output As #iFF

* * Redim ai(1 To m)

* * ai(1) = 0
* * For i = 2 To m
* * * * ai(i) = i
* * Next i

* * Do
* * * * For i = 1 To m - 1
* * * * * * If ai(i) + 1 < ai(i + 1) Then
* * * * * * * * ai(i) = ai(i) + 1
* * * * * * * * Exit For
* * * * * * Else
* * * * * * * * ai(i) = i
* * * * * * End If
* * * * Next i
* * * * If i = m Then
* * * * * * If ai(m) < n Then
* * * * * * * * ai(m) = ai(m) + 1
* * * * * * Else
* * * * * * * * Exit Do
* * * * * * End If
* * * * End If

* * * * *' catenate and write to file
* * * * sOut = vbNullString
* * * * For i = 1 To m
* * * * * * sOut = sOut & r(ai(i)).Text & ","
* * * * Next i
* * * * Write #iFF, Left(sOut, Len(sOut) - 1)
* * *Loop

* * Close #iFF
End Sub