-->

How to extend a formula in VBA past 1 line of code

2019-06-14 05:34发布

问题:

So I do not have too much experience with programming and almost non with VBA. My main issue is that the formula in my code extends past 1 line and when I include an underscore, space and then start a new line, I receive an error.

I have attached a pic of the code, there is probably unnecessary lines of code because I recorded a macro to get the code.

More information on what I am trying to do:

I have a list contained in a cell using "data validation" and based on the selection from that list, the cell below will output a certain list.

The information for these lists are stored on other worksheets in the workbook.

I was able to develop an IF statement in the "data validation" list source box that worked for several inputs. However I have 84 possibilities and i could not fit all the individual if statements in the list source box. Therefore I decided to try and manually input the formula using VBA by recording a macro of the several input "data validation" if statement.

Here is the code:

Sub HelpSetUp()
     With Selection.Validation
         .Delete
         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
         xlBetween, Formula1:= _
         "=if($B$2='fuel columns'!$A$1,agriculturalbiproduct,if($B$2='fuel      columns'!$B$1,agriculturalresidue,if($B$2='fuel columns'!$C$1,agriculturalwaste,Nofuel)))"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub 

回答1:

When you have a long bit of text to squeeze in, you need to break it up into chunks using "&" and _.

Like this

dim aString as string

aString = "four score and seven years ago our fathers " & _ 
    "set forth on this continent a new nation, " & _
    "conceived in liberty and dedicated to the " & _
    "proposition that all men are created equal."

Be sure to leave a space between the & and the _.

SMW