Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

put a double in a fixed width txt file

Posted on 2004-09-24
8
Medium Priority
?
176 Views
Last Modified: 2010-05-02
I have to put 3 double in a fixed width txt file.  How much characters I must specify in the width of a double ?
0
Comment
Question by:weeb0
  • 2
  • 2
5 Comments
 
LVL 86

Expert Comment

by:Mike Tomlinson
ID: 12142703
Use the format function to display the double with the number of digits you want:

Private Sub Command1_Click()
    Dim myDouble As Double
    myDouble = 1 / 3
    Debug.Print myDouble
    Debug.Print Format(myDouble, "0000.0000")
End Sub
0
 
LVL 16

Expert Comment

by:jimbobmcgee
ID: 12143007
A double is usually 16 characters long...
0
 
LVL 16

Expert Comment

by:jimbobmcgee
ID: 12143091
...however, if  it is less than 1, you may need an extra character to store the 0 and if it is a negative number, another extra character to store the -.  

I would use 18 characters in a fixed width file, read it as a string and then use CDbl to format as a double...

Don't forget to error handle, when writing, to account for rational decimals, such as 0.25.  Convert to string (with CStr) and then add however many spaces to make 18 chars...
0
 
LVL 1

Author Comment

by:weeb0
ID: 12143575
is there an easy way to format the fixed width ???

I would like to have trailing spaces for a total of 30 characters in 1st field, the second one is a date... so, I know how to deal with it ...
the the 2 last are double with 2 decimals.

thank you
0
 
LVL 86

Accepted Solution

by:
Mike Tomlinson earned 80 total points
ID: 12143972
Here is one way to pad your string with trailing spaces:

Private Sub Command1_Click()
    Dim dblValue As Double
    Dim strValue As String
   
    dblValue = 1 / 3
    strValue = Format(dblValue, "#,##0.00") ' or however you decide to format it...
    strValue = trailingPad(strValue, 30)
    Debug.Print strValue
End Sub

Private Function trailingPad(ByVal strInput As String, ByVal padLength As Integer)
    Dim i As Integer
    Dim spacesNeeded As Integer
    Dim strLength As Integer
    Dim spaces As String
   
    strLength = Len(strLength)
    If strLength > padLength Then
        trailingPad = Left(strInput, padLength)
    Else
        spacesNeeded = padLength - strLength
        spaces = Space(spacesNeeded)
        trailingPad = strInput & spaces
    End If
End Function
0

Featured Post

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!

Question has a verified solution.

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

Introduction In a recent article (http://www.experts-exchange.com/A_7811-A-Better-Concatenate-Function.html) for the Excel community, I showed an improved version of the Excel Concatenate() function.  While writing that article I realized that no o…
When trying to find the cause of a problem in VBA or VB6 it's often valuable to know what procedures were executed prior to the error. You can use the Call Stack for that but it is often inadequate because it may show procedures you aren't intereste…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…
Suggested Courses
Course of the Month11 days, 12 hours left to enroll

564 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