Excel Help

Discussion in 'Trading Software' started by USAtrader, Jul 11, 2006.

  1. Thank you. I just downloaded the program, and it looks quite useful for a number of applications.

     
    #11     Jul 11, 2006
  2. Well, I don't know about Bernoulli, but I'll be the chump.

    Took about 25m after dinner. So use at your own peril. :p

    Code:
    
    Option Explicit
    Private Const MACNAME As String = "Data Searcher"
    Private Const DATA_NOT_FOUND As Integer = -1
    
    Public Sub DataSearcher()
        Dim strFindThis As String
        Dim strFindInCol As String
        Dim col As Range
    
        Dim lngRowFound As Long
        Dim strMsg As String
    
        Dim lngLastRow As Long
        Dim strSearchRange As String
    
        On Error Resume Next
    
        'Get search criteria from user
        strFindThis = InputBox("Please enter the DATA to search for...", MACNAME)
    
        'eliminate trailing and leading spaces.
        strFindThis = Trim$(strFindThis)
    
        'catches user cancel too.
        If Len(strFindThis) = 0 Then GoTo NOT_VALID
    
        'Get column where criteria supposedly lives... same sequence as above
        strFindInCol = InputBox("Please enter the COLUMN(letter) to search in...", MACNAME)
        strFindInCol = Trim$(strFindInCol)
        If Len(strFindInCol) = 0 Then GoTo NOT_VALID
    
        'simple validation of column letter.
        If IsNumeric(strFindInCol) Then GoTo NOT_VALID
    
        'pet trick... try to create a range object with the col supplied by user.
        'if error occurs, column is not valid. Very nifty since there is no built-in
        'that converts column letter to column number.
        Set col = ActiveSheet.Range(strFindInCol & "1")
        If Err.Number <> 0 Then GoTo NOT_VALID
    
        'armed with a column, find the last *used* cell in that column.
        'this will be used for...
        '1) the range to search
        '2) if needed, which ROW to use for additions
        lngLastRow = col.SpecialCells(xlCellTypeLastCell).Row
    
        'make a *string* range argument ie B1:B789
        strSearchRange = strFindInCol & "1:" & strFindInCol & CStr(lngLastRow)
    
        'the search. Beware the hardcoded "Activesheet"
        'If activesheet is not a worksheet (ie chartsheet, macrosheet etc) this WILL fail!
        lngRowFound = SimpleSearch(strFindThis, ActiveSheet, strSearchRange)
    
        'process the result of the search
        If lngRowFound = DATA_NOT_FOUND Then
            strMsg = UCase$(strFindThis) & " was not found." & vbNewLine & vbNewLine
            strMsg = strMsg & "Do you want to add " & UCase$(strFindThis) & " to the end of the list?"
    
            Select Case MsgBox(strMsg, vbQuestion + vbYesNo, MACNAME)
                Case vbYes
                    'add the item to last used row+1 of the chosen column
                    ActiveSheet.Range(strFindInCol & lngLastRow).Offset(1).Value = UCase$(strFindThis)
                Case Else
            End Select
        Else
            strMsg = UCase$(strFindThis) & " exists in Row " & CStr(lngRowFound) & "." & vbNewLine & vbNewLine
            MsgBox strMsg, vbExclamation, MACNAME
        End If
    
    
    
    EXIT_PROC:
        Set col = Nothing
        Exit Sub
    
    NOT_VALID:
        strMsg = "Invalid or no input." & vbNewLine & vbNewLine
        strMsg = strMsg & "Data: " & strFindThis & vbNewLine
        strMsg = strMsg & "Column: " & strFindInCol
        MsgBox strMsg, vbExclamation, MACNAME
        GoTo EXIT_PROC
    
    End Sub
    
    
    Public Function SimpleSearch(ByVal strSearchValue As String, ws As Worksheet, strRng As String) As Long
    
        Dim x As Variant
    
        On Error Resume Next
    
        'NOTE: 9/2000 ... Per NG microsoft.public.excel.worksheetfunctions...
        '                 Match is not a member of WorsheetFunction as docs say.
        '                 Furthermore, when used in VBA, variant return must be used.
        '                 Apparantly there is an error with the #NA error Match returns to VBA
        x = Application.Match(strSearchValue, ws.Range(strRng), 0)
        If IsError(x) Then
            SimpleSearch = DATA_NOT_FOUND
        Else
            SimpleSearch = x
        End If
    
    End Function
    
     
    #12     Jul 11, 2006
  3. bump.

    osorico, whoa, thanks! Now I'll just have to figure out how to put that whole thing together (wasn't really planning on using vba since I've no knowledge of it).
     
    #13     Jul 12, 2006
  4. Hi USA;

    steps are simple. This is 1 way to do it...

    1) Open XL. Open YOUR workbook. Press ALT-F11 to open VBA environment.

    2) Copy code from previous post.

    3) Save copied code to a file. Name the file anything you want, but use a .BAS file extension.

    4) Back in VBA environment, highlight your workbook, right click, and choose IMPORT. Obviously you want to import the .BAS file you created in step 3 above.

    5) Save. Done. Close VBA environment.

    To run the code, from the appropriate sheet in YOUR workbook press ALT-F8 (or Tools/Macros/Macros). Highlight the DataSearcher macro and RUN.

    Kudos (or not) appreciated. :)

    Osorico
     
    #14     Jul 12, 2006
  5. skyasa

    skyasa

    I am not sure if you are still looking to get this working...

    Here is the Excel with formula.

    Just enter symbol in first cell (colored in Yellow) and double click anywhere on the sheet.

    Hope it helps.

    Press ALT+F11 to see the code.
     
    #15     Jul 12, 2006
  6. Osoricy & Skyasa

    Thank you very much for your help. The end result is exactly what I was looking for. I certainly didn't expect someone to write out coding in vb for it, but certainly is appreciated!

    Kudos and appreciation to you both for the time.

    USA
     
    #16     Jul 12, 2006
  7. skyasa

    skyasa

    Hey no problem USATrader... It was very simple for me and thought might help.
     
    #17     Jul 12, 2006
  8. It did. Thanks.
     
    #18     Jul 12, 2006
  9. cc2trade

    cc2trade

    nice helpful info from each of you. did it and it works.

    thanks!
     
    #19     Jul 12, 2006
  10. tt1452

    tt1452

    Does anyone have an excel sheet that records your futures trades both short and long with the commission deduction?

    I looked for one a while ago but never found anything.

    Thanks,
    tt

    I'm not asking for free coding. If someone already has something like this I would be grateful to use it.
     
    #20     Jul 12, 2006