+ Reply to Thread
Results 1 to 4 of 4

lock combination of cells

  1. #1
    nobbyknownowt
    Guest

    lock combination of cells


    Hopefully my last question for this spreadsheet!!

    I have a spreadsheet that calculates the effect of weight on a balance
    wherever the weight is placed.
    I now want to be able to place some weights where I want them rather
    than have the spreadsheet calculate all the options for me.
    To explain say there are 4 weights a,b,c,d and 4 positions 1,2,3,4
    I can calculate all the permutations for the effect of these weights in
    all positions and return the optimum balance for me BUT i want weight
    "a" to be in position 1.(assuming position 1 address is a2) and return
    the optimum balance with this given condition.
    I guess for a function I can use =if(a2=1,a2*ref arm,a2*999999)
    a2*999999 would return an unfavourable result andtherefore not be
    selected as the optimum.
    My question is how can i create the input form for the user to
    stipulate which weight should be where so it is user friendly?
    cheers
    Nobby


    --
    nobbyknownowt

  2. #2
    Ken Johnson
    Guest

    Re: lock combination of cells

    Hi Nobbyknownowt,
    I try to avoid userforms if I can get away with it. If you feel the
    same way you could use the following series of application.inputboxes
    with the input data type restricted to range.
    This way is very user friendly because he/she is confronted with one
    question at a time; also, they don't have to type in a cell address,
    they can input the position simply by clicking on the appropriate cell.
    It's also developer friendly, user forms take longer to develop.
    The only disadvantage is that the user has to do a bit more mouse
    clicking, so if RSI is a problem read no further ;-)

    Public Sub weight_positions()
    Dim rgW1 As Range 'weight a's cell position
    Dim rgW2 As Range 'weight b's cell position
    Dim rgW3 As Range 'weight c's cell position
    Dim rgW4 As Range 'weight d's cell position
    Dim Wa As Single 'I have used 10 g
    Dim Wb As Single 'I have used 15 g
    Dim Wc As Single 'I have used 25 g
    Dim Wd As Single 'I have used 50 g
    Wa = 10: Wb = 15: Wc = 25: Wd = 50
    Set rgW1 = Application.InputBox(prompt:= _
    "Where should the " & Wa & "g weight be?" _
    & Chr(10) & "(Click Cell)", _
    Type:=8)
    Set rgW2 = Application.InputBox(prompt:= _
    "Where should the " & Wb & "g weight be?" _
    & Chr(10) & "(Click Cell)", _
    Type:=8)
    Set rgW3 = Application.InputBox(prompt:= _
    "Where should the " & Wc & "g weight be?" _
    & Chr(10) & "(Click Cell)", _
    Type:=8)
    Set rgW4 = Application.InputBox(prompt:= _
    "Where should the " & Wd & "g weight be?" _
    & Chr(10) & "(Click Cell)", _
    Type:=8)
    MsgBox "a at " & rgW1.Address(False, False) & Chr(10) _
    & "b at " & rgW2.Address(False, False) & Chr(10) _
    & "c at " & rgW3.Address(False, False) & Chr(10) _
    & "d at " & rgW4.Address(False, False) & Chr(10)
    End Sub

    The msgbox on the last line is just to show you that the code works by
    showing the selected cell addresses. Just replace that with your code.

    If you also want the user to input the weight values you could include
    Wa = Application.InputBox(prompt:="Weight a grams=?", Type:=1)
    Wb = Application.InputBox(prompt:="Weight b grams=?", Type:=1)
    Wc = Application.InputBox(prompt:="Weight c grams=?", Type:=1)
    Wd = Application.InputBox(prompt:="Weight d grams=?", Type:=1)

    either all together so that all the weights are first entered, or
    position each one before its corresponding cell range input.

    Ken Johnson

    PS your spreadsheet sounds interesting. If you could send me a copy
    when you've finished it would be appreciated. I teach high school
    science so it could be useful.


  3. #3
    nobbyknownowt
    Guest

    Re: lock combination of cells


    Hi Ken
    Thanks for the reply and sorry for not replying sooner, I posted two
    questions together and only the other one comes up when I use the
    search facility so this message takes longer to find.
    I understand where you are coming from here and will certainly
    experiment with it but I dont think it would be suitable for my
    purpose. (The spreadsheet is a balance program for an aircraft). I only
    need to lock a couple of cell positions for say something that
    specifically must be at the front of the aircraft or something at the
    back and so on.
    I want the user to be able to input a list of up to 20 weights they
    have in any order in a list, be able to specify if anything should be
    loaded in a specific place, then they activate the macro. The macro
    then calculates the effect of every weight in every position on the
    aircraft and reurns the optimum loading peramiters. This data then
    transfers to a seperate spreadsheet that produces (I hope) the flight
    paperwork. The only way the program will be used is if it is simple to
    operate.
    Not a problem to send you a copy once I have completed it (although I
    been working at it on and off for a few months now, just when you think
    you are there another problem crops up!!)

    cheers
    Nobby


    --
    nobbyknownowt

  4. #4
    Ken Johnson
    Guest

    Re: lock combination of cells

    Hi Nobby,
    Thanks for the feedback.
    How will the user be inputting the data, directly into cells on the
    sheet or are you wanting to set up a userform?
    If inputs are on the sheet you could have one column devoted to the
    weight and the next column for the position. You could use data
    validation to make a dropdown list of all the possible positions
    including an "anywhere" option. Then change your macro so that it works
    out the optimum positions for all the "anywhere" weights with the other
    weights in their fixed positions.
    Or (you'll more than likely laugh at this one) there could be an
    outline drawing of the plane (no fill) on the sheet with the cells
    corresponding to possible weight positions indicated somehow eg border
    or fill color. These cells could also be unlocked so that with all
    other cells locked and the sheet protected they are the only cells the
    user can edit. (If your excel version is not too old the protection
    dialog also offers the choice of restricting cell selection to those
    unlocked cells, otherwise you have to edit the worksheet's properties
    in the VBA editor).
    The user could then type the various weights into these unlocked cells
    inside the plane diagram and could indicate a fixed position with bold
    font. Your optimising macro then has to test the font style (Bold or
    Regular) using something like...

    If ActiveSheet.Cells(i, j).Font.Bold = True Then
    'This weight has fixed position
    Else: 'This weight can be moved to other positions
    End If

    (The SpecialCells method would probably be easier to code than nested
    loops, I've just forgotten the details)

    To make it as easy as possible for the user to control the Bold/Regular
    font style the sheet could have a BeforeDoubleClick event sub (or
    BeforeRightClick) in its code module...

    Private Sub Worksheet_BeforeDoubleClick _
    (ByVal Target As Range, Cancel As Boolean)
    Target.Font.Bold = Not Target.Font.Bold
    End Sub

    Or...

    Private Sub Worksheet_BeforeRightClick _
    (ByVal Target As Range, Cancel As Boolean)
    Cancel = True 'stops the usual popup from appearing
    Target.Font.Bold = Not Target.Font.Bold
    End Sub

    This way, every time the user double clicks a cell (or right clicks,
    depending on which one is used) its Bold/Regular style changes.

    I don't work with userforms often enough to be able to offer any
    suggestions for that type of solution. Also, more detailed information
    about your project would be needed before such a solution could be
    attempted.

    Hope you get it working the way you want.
    Looking forward to receiving a copy when you're ready.

    Ken Johnson


+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1