PDA

View Full Version : [SOLVED:] IF statment nested within VBA Code



Scuba
09-05-2023, 02:12 AM
Hello everyone, Noob Scuba here :)

I have only just began to dabble with VBA code and have created the below code, which works perfectly for me, until such time as I introduce some extra IF statements and then it breaks, so I'm looking for some help please, if possible.

I have an excel spreadsheet (its a rate calculator) and I would the existing code below to still run as is but also be able to insert additional if statements under each 'CASE' headings as I need to hide or unhide certain rows depending on what text is inserted into cell C4 of the excel sheet.

I'm using Office 365.

Hopefully some here can help me understand what I'm doing wrong.

Thanks
Richard


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Then
Range("C4").Value = "Please Select Origin..."
End If
Dim changed As Range
Set changed = Intersect(Target, Range("C3"))
If Not changed Is Nothing Then
Select Case Target.Value
Case "Air"
ActiveSheet.Unprotect Password:="dlm"
Range("A10:A19").EntireRow.Hidden = True
Range("A39:A43").EntireRow.Hidden = True
Range("A56:A58").EntireRow.Hidden = True
If ActiveWorkbook.Sheets("Rate Calc").Range("$C$4").Value = ("Warsaw to New York") Then Range("A23").EntireRow.Hidden = True
ActiveSheet.Protect Password:="dlm"
Case "Ocean_Asia_to_EU"
ActiveSheet.Unprotect Password:="dlm"
Range("A8:A15").EntireRow.Hidden = True
If ActiveWorkbook.Sheets("Rate Calc").Range("$C$4").Value = ("Shanghai to Genoa") Then Range("A23").EntireRow.Hidden = True
Range("A57").EntireRow.Hidden = True
Range("A51:A74").EntireRow.Hidden = True
ActiveSheet.Protect Password:="dlm"
Case "Shanghai to Genoa"
ActiveSheet.Unprotect Password:="dlm"
Range("A17:A19").EntireRow.Hidden = True
Range("A8:A9").EntireRow.Hidden = False
Range("A12").EntireRow.Hidden = False
Range("A14").EntireRow.Hidden = True
Range("A15").EntireRow.Hidden = False
Range("A11").EntireRow.Hidden = True
Range("A12").EntireRow.Hidden = True
Range("A13:A15").EntireRow.Hidden = True
Range("C15:D15").ClearContents
Range("C14:D14").ClearContents
Range("D17:D19").ClearContents
Range("C8:D8").ClearContents
Range("C9:D9").ClearContents
ActiveSheet.Protect Password:="dlm"
Case "Overland"
ActiveSheet.Unprotect Password:="dlm"
Range("A8:A9").EntireRow.Hidden = True
Range("A7:A12").EntireRow.Hidden = True
Range("A15").EntireRow.Hidden = True
Range("A14").EntireRow.Hidden = False
Range("A18:A19").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A13:A15").EntireRow.Hidden = True
Range("C11:D11").ClearContents
Range("C12:D12").ClearContents
Range("C13:D13").ClearContents
Range("C14:D14").ClearContents
Range("C15:D15").ClearContents
Range("D17:D19").ClearContents
ActiveSheet.Protect Password:="dlm"
End Select
Range("C3").Select
End If
End Sub

PS i have no idea why emojis are replacing my text, when i edit and change to text, the emojis appear again?

Aussiebear
09-05-2023, 04:24 AM
Welcome to VBAX Richard. It an unfortunate thing within Excel that Smileys invade our text, formula and code. Microsoft have much to answer for in this aspect.

In relation to your code,


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Then
Range("C4").Value = "Please Select Origin..."
End If
Dim changed As Range
Set changed = Intersect(Target, Range("C3"))
If Not changed Is Nothing Then

I'm struggling to understand the logic of your intention here. From your code I can only assume that the sheet is password protected, so how does one select cell C3? If cell C3 is not the target what then was the value of cell C4? This type of code should be something like this

Please note that in VBA, all "If" statements are bound by "If" and "End If". You have a number of "If" statements that have no "End If", which is non logical from a VBA point of view.

Scuba
09-05-2023, 04:52 AM
Hi,
Firstly thank you for you quick answer and second apologies for my rudimentary coding.
I'm still very new to VBA and learning by the day :)

This code works alongside excel, I have 2 drop cells )first one (c3) and 2nd one C4, which is conditional on what has been selected from C3, when the users selects from a drop down cell (C3), I auto automictically insert the value 'Please Select Origin...' into C4, because if I did not do this a lot other cells in excel show 'False' because the formulas can't calculate as the 2nd conditional drop down has not been selected ie cell (C4).
the issue I'm having is everything works fine if don't add in additional IF statements, but the second I do nothing works, this worksheet has evolved now from the original where I could just hide and unhide specific rows base don the value in C3, i now need to add additional criteria to hide extra rows and also Active X check boxes but one step at a time, I would be happy to just be able to hide and unhide specific rows base of a value in C4, I then work on the check boxes afterwards.

I hope I'm making sense, sorry if I'm not, in summary I have a set of criteria that runs when C3 is selected, then under each heading that the user selects from C3 I need to run additional criteria based of cell C4 ie just like a conditional drop works

Aflatoon
09-05-2023, 07:53 AM
Please note that in VBA, all "If" statements are bound by "If" and "End If".

That is not actually true. You can have single line If ... Then ... statements that do not require an End If. So this is perfectly valid syntax:


If ActiveWorkbook.Sheets("Rate Calc").Range("$C$4").Value = ("Shanghai to Genoa") Then Range("A23").EntireRow.Hidden = True
Range("A57").EntireRow.Hidden = True
Range("A51:A74").EntireRow.Hidden = True
ActiveSheet.Protect Password:="dlm"


but the blue part is the only part that is contingent on the If statement. The three lines that follow are only contingent on the original Case statement.

Scuba
09-05-2023, 08:09 AM
Understood, so how do you make so both parts are work together, i.e. the Case statement runs and then the additional If statements within each Case statement run as well.
I only shows you 2 additional IF statements, I have more but just showed 2 because if I can get those 2 to work, I can probably work out how to get the rest working :)

June7
09-05-2023, 08:29 AM
if you mean there were emojis in your posted code, it was probably because you did not initially post code between CODE tags. Aussiebear edited your post to correct this. The forum will substitute certain character sequences for emojis unless you go to Advanced Editor and turn this off. Turn off is only for that edit session. Have to do it every time. Has nothing to do with MS or Excel or VBA. The takeaway here is to post code between CODE tags.

Scuba
09-05-2023, 08:35 AM
Sorry, very new to this forum and full rules etc, I'll learn, my questions were not relating to the way this forum changes my code when copying but how to get my example VBA to work correctly :)

June7
09-05-2023, 08:46 AM
i know that but you still needed to know how to correctly post code and why you got emojis.

Are you saying the two IIf() statements cause failure? What does "failure" mean - error message, wrong result, nothing happens?

Might provide your workbook for analysis. Follow instructions at bottom of my post.

Aflatoon
09-05-2023, 08:59 AM
If all of those lines should be part of the If test, then it does require an End If as it is no longer a single line construction:


If ActiveWorkbook.Sheets("Rate Calc").Range("$C$4").Value = ("Shanghai to Genoa") Then
Range("A23").EntireRow.Hidden = True Range("A57").EntireRow.Hidden = True
Range("A51:A74").EntireRow.Hidden = True
ActiveSheet.Protect Password:="dlm"
End If

Scuba
09-05-2023, 09:03 AM
thanks VBAS Master, I'll try to add in some 'End If's' and see how I get one, I'm about to log off for the day but I'll be back on tomorrow, thanks for all your help everyone :)

Aussiebear
09-05-2023, 01:56 PM
Okay, now that I've had 4 hours of sleep, lets deal with a couple of issues.

Firstly @ June7, Emojis can and often do occur outside of the "forum". One can be constructing a document in word and using sub paragraphs denoted by (a), (b), © etc and the emojis will appear. it is definitely a MS thing, and one they have not fixed.

@Afltoon, After having a second thoughts about your statement, I agree, I was wrong, however as the code is currently presented by Richard, I am inclined to believe that there were a number of conditional statements attached to the "If" occurring on another sheet namely "Rate Calc". On that basis I believe you require an "End If" to enable returning to the Active sheet to continue the Case Select process. I may well be wrong, but that is my reading from the code as presented in Post #1.


If ActiveWorkbook.Sheets("Rate Calc").Range("$C$4").Value = ("Shanghai to Genoa") Then Range("A23").EntireRow.Hidden = True
Range("A57").EntireRow.Hidden = True
Range("A51:A74").EntireRow.Hidden = True


It's unclear to me, whether the ActiveSheet and ActiveWorkbook.Sheets('Rate Calc") are one and the same or different. If they are diferent sheets then this begs the question, on which sheet are we trying to hide the rows A23 and A51:A74?

@ Scuba, As I currently understand your ActiveSheet has two dropdown cells namely C3 and C4. Cell C3 has 4 options namely, "Air", "Ocean_Asia to EU", "Shanghai to Genoa" and "Overland", and you desire certain actions to take place depending on which option has been selected. The relevance of the message in cell C4 is still unclear to me. Is it because you are asking the user to select an option in cell C3 or C4? If its to select an option in cell C3 then a simple Messagebox would suffice.

Lets look at the actions undertaken in the first option of the case select, namely "Air"

I believe you could write this as ;


Case "Air"
ActiveSheet.Unprotect Password:="dlm"
Range ("A10:A19, A39:A43, A56:A58").EntireRow.Hidden = True _
.....
ActiceSheet.Protect.Password:= "dlm"


Now comes the misleading bit. Can you clarify if the Activesheet and ActiveWorkbook.Sheets("Rate Calc") are different or the same sheet? In post #1 you suggested the cell C4 has a value "Please select Origin...". Did you intend for "Warsaw to New York" to be one of the options for the dropdown in cell C4? If it was an option then it messes with lines 2 and 3 of your original code as presented.



If ActiveWorkbook.Sheets("Rate Calc").Range("$C$4").Value = "Warsaw to New York" Then _
Range("A23").EntireRow.Hidden = True



Then we look at the case select option "Ocean_Asia to EU"



Case "Ocean_Asia_to_EU"
ActiveSheet.Unprotect Password:="dlm"
Range("A8:A15").EntireRow.Hidden = True
If ActiveWorkbook.Sheets("Rate Calc").Range("$C$4").Value = ("Shanghai to Genoa") Then Range("A23").EntireRow.Hidden = True
Range("A57").EntireRow.Hidden = True
Range("A51:A74").EntireRow.Hidden = True
ActiveSheet.Protect Password:="dlm"


This gets back to the point raised by Aftloon, as to whether ranges A51:A74 are part of the If statement or part of the conditions of the Case Select option. Also the line "Range("A57").entireRow.Hidden = true" is unnecessary since in the next line you have included it within the range A51:A74 as hidden.

In the next select option "Shanghai to Genoa", you have conflicting objectives.


Case "Shanghai to Genoa"
ActiveSheet.Unprotect Password:="dlm"
Range("A17:A19").EntireRow.Hidden = True
Range("A8:A9").EntireRow.Hidden = False
Range("A12").EntireRow.Hidden = False
Range("A14").EntireRow.Hidden = True
Range("A15").EntireRow.Hidden = False
Range("A11").EntireRow.Hidden = True
Range("A12").EntireRow.Hidden = True
Range("A13:A15").EntireRow.Hidden = True
Range("C15:D15").ClearContents
Range("C14:D14").ClearContents
Range("D17:D19").ClearContents
Range("C8:D8").ClearContents
Range("C9:D9").ClearContents
ActiveSheet.Protect Password:="dlm"


You are both hiding and unhiding certain rows, such as A12 for example. Which do you need it to be hidden or unhidden? Next you are attempting to Clear Contents of Rows that are hidden. What purpose does this serve?

Then we look at the next Select option "Overland"


Case "Overland"
ActiveSheet.Unprotect Password:="dlm"
Range("A8:A9").EntireRow.Hidden = True
Range("A7:A12").EntireRow.Hidden = True
Range("A15").EntireRow.Hidden = True
Range("A14").EntireRow.Hidden = False
Range("A18:A19").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A13:A15").EntireRow.Hidden = True
Range("C11:D11").ClearContents
Range("C12:D12").ClearContents
Range("C13:D13").ClearContents
Range("C14:D14").ClearContents
Range("C15:D15").ClearContents
Range("D17:D19").ClearContents
ActiveSheet.Protect Password:="dlm"


Again you are over complicating things here by suggesting to hide rows which are then included within the next lines grouping to be hidden. Further down you suggest that Row A14 is not hidden but three lines down you surest its part of a group of lines that are hidden. Then again further down in the code you are clearing the contents of rows that are hidden from the User. What is the intent of doing this?

Can you either attach a sample workbook for us to see what you are attempting to complete, or failing that, please write out in plain English the logic flow of what you would like to happen please?

deger
09-05-2023, 11:33 PM
Hello everyone, Noob Scuba here :)

I have only just began to dabble with VBA code and have created the below code, which works perfectly for me, until such time as I introduce some extra IF statements and then it breaks, so I'm looking for some help please, if possible.

I have an excel spreadsheet (its a rate calculator) and I would the existing code below to still run as is but also be able to insert additional if statements under each 'CASE' headings as I need to hide or unhide certain rows depending on what text (https://gbwadownload.pro/gb-whatsapp-download/) is inserted into cell C4 of the excel sheet.

I'm using Office 365.

Hopefully some here can help me understand what I'm doing wrong.

Thanks
Richard


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Then
Range("C4").Value = "Please Select Origin..."
End If
Dim changed As Range
Set changed = Intersect(Target, Range("C3"))
If Not changed Is Nothing Then
Select Case Target.Value
Case "Air"
ActiveSheet.Unprotect Password:="dlm"
Range("A10:A19").EntireRow.Hidden = True
Range("A39:A43").EntireRow.Hidden = True
Range("A56:A58").EntireRow.Hidden = True
If ActiveWorkbook.Sheets("Rate Calc").Range("$C$4").Value = ("Warsaw to New York") Then Range("A23").EntireRow.Hidden = True
ActiveSheet.Protect Password:="dlm"
Case "Ocean_Asia_to_EU"
ActiveSheet.Unprotect Password:="dlm"
Range("A8:A15").EntireRow.Hidden = True
If ActiveWorkbook.Sheets("Rate Calc").Range("$C$4").Value = ("Shanghai to Genoa") Then Range("A23").EntireRow.Hidden = True
Range("A57").EntireRow.Hidden = True
Range("A51:A74").EntireRow.Hidden = True
ActiveSheet.Protect Password:="dlm"
Case "Shanghai to Genoa"
ActiveSheet.Unprotect Password:="dlm"
Range("A17:A19").EntireRow.Hidden = True
Range("A8:A9").EntireRow.Hidden = False
Range("A12").EntireRow.Hidden = False
Range("A14").EntireRow.Hidden = True
Range("A15").EntireRow.Hidden = False
Range("A11").EntireRow.Hidden = True
Range("A12").EntireRow.Hidden = True
Range("A13:A15").EntireRow.Hidden = True
Range("C15:D15").ClearContents
Range("C14:D14").ClearContents
Range("D17:D19").ClearContents
Range("C8:D8").ClearContents
Range("C9:D9").ClearContents
ActiveSheet.Protect Password:="dlm"
Case "Overland"
ActiveSheet.Unprotect Password:="dlm"
Range("A8:A9").EntireRow.Hidden = True
Range("A7:A12").EntireRow.Hidden = True
Range("A15").EntireRow.Hidden = True
Range("A14").EntireRow.Hidden = False
Range("A18:A19").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A13:A15").EntireRow.Hidden = True
Range("C11:D11").ClearContents
Range("C12:D12").ClearContents
Range("C13:D13").ClearContents
Range("C14:D14").ClearContents
Range("C15:D15").ClearContents
Range("D17:D19").ClearContents
ActiveSheet.Protect Password:="dlm"
End Select
Range("C3").Select
End If
End Sub

PS i have no idea why emojis are replacing my text, when i edit and change to text, the emojis appear again?Firstly, there are a few issues in your code:

In the Set changed = Intersect(Target, Range("C3")) line, you're using Range("C3"), but you mentioned you want to check cell C4. You should change that line to Set changed = Intersect(Target, Range("C4")).

In your Select Case Target.Value statements, you are checking ActiveWorkbook.Sheets("Rate Calc").Range("$C$4").Value, which is always checking the value of cell C4 on the "Rate Calc" sheet. If you want to check the value in cell C4 of the current worksheet, you should replace it with Range("C4").Value.

Here's an updated version of your code with these corrections:


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Then
Range("C4").Value = "Please Select Origin..."
End If

Dim changed As Range
Set changed = Intersect(Target, Range("C4"))

If Not changed Is Nothing Then
Select Case Target.Value
Case "Air"
' Your code for hiding/unhiding rows for "Air" goes here
Case "Ocean_Asia_to_EU"
' Your code for hiding/unhiding rows for "Ocean_Asia_to_EU" goes here
Case "Shanghai to Genoa"
' Your code for hiding/unhiding rows for "Shanghai to Genoa" goes here
Case "Overland"
' Your code for hiding/unhiding rows for "Overland" goes here
End Select
End If
End Sub
You can now add additional Case statements under the Select Case structure for other conditions you want to check in cell C4 and adjust the code accordingly for each case.


Please make sure to replace ' Your code for hiding/unhiding rows for ... goes here with your actual code for hiding/unhiding rows based on the condition in cell C4.

Scuba
09-06-2023, 01:54 AM
Hello Aussiebear,

Glad you had some sleep, although 4 hours is not long really lol

I'll do my best to answer all your point as clearly as possible

Confirming there are some IF statements on the rate Calc sheet and that ActiveSheet and ActiveWorkbook.Sheets('Rate Calc") are one and the same, that's just my ham fisted way of trying to get it to work for me, sorry my :banghead: bad.

Cell 3 is my primary drop down list and consists of the below:


Air
Ocean_EU_to_US
Ocean_Asia_to_EU
Overland


Cell C4 is my Secondary drop down and is dependent on what is selected from the primary dropdown (C3)


Air
Warsaw to New York
Warsaw to Los Angeles
Malpensa to New York
Malpensa to Los Angeles
Heathrow to New York
Heathrow to Los Angeles



Ocean_EU_to_US


Genoa to New York


Genoa/La Spezia to Los Angeles


Gdynia to New York


Gdynia to Los Angeles


Hamburg to New York


Hamburg to Los Angeles


FXT/SOU to New York


FXT/SOU to Los Angeles






Ocean_Asia_to_EU
Shanghai to Genoa
Xiamen to Genoa
Shanghai to Gdynia/Gdansk
Xiamen to Gdynia/Gdansk
Shanghai to SOU/FXT
Xiamen to SOU/FXT

Overland
PL to UK
UK to PL



I insert the value '"Please select Origin..' into cell C4 so its a prompt to tell the user to select from that drop down, it also serves another purpose in that, if that is displayed in C4 then my Rate Calc fields are all blank otherwise I get odd data appearing in the main rate calc sheet.



I am bastardising this Rate Calc from another customer of mine and so some of the actual lines that are showing hidden/unhidden/clear etc will be incorrect, this I'm not concerned with as I will clean this up once I understand how to incorporate the Case statements alongside the additional IF statements.

There will be some cross over between what is asked to be hidden and what is asked to be shown, based on what is selected in the primary drop down C3 and then further hidden/reveal requests when the secondary drop list activated.
for example when Air is selected I don't need to show rows 23 to 25 as these are container information that is only used for Ocean movements.

If its easier i can share the actual document, once i work out how to attach it to this forum, i looked at all the icons but couldn't see once for attaching something, only for inserting an image or a video, no documents

Once again thank you for you help and patience :yes

Scuba
09-06-2023, 01:57 AM
Hi Deger,

Thank you for your guidance, I will attempt to try this and will revert if I get any issues.

However when I think about this, I don't think this will work, unless I am misunderstanding something here(which is possible lol).

The Case values are referring to cell C3, whereas the IF statements will be referring the cell C4 so not sure if this change will work as Case Air = cell C3 and IF statements will = Cell C4 so when using Case "Air" wont it fail as we have said 'Set changed = Intersect(Target, Range("C4"))'?


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Then
Range("C4").Value = "Please Select Origin..."
End If
Dim changed As Range
Set changed = Intersect(Target, Range("C4"))
If Not changed Is Nothing Then
Select Case Target.Value
Case "Air"
' Your code for hiding/unhiding rows for "Air" goes here
Case "Ocean_Asia_to_EU"
' Your code for hiding/unhiding rows for "Ocean_Asia_to_EU" goes here
Case "Shanghai to Genoa"
' Your code for hiding/unhiding rows for "Shanghai to Genoa" goes here
Case "Overland"
' Your code for hiding/unhiding rows for "Overland" goes here
End Select
End If
End Sub



Once again thank you and I am so glad I have chanced across this forum, it is really great.

regards

Richard

Aussiebear
09-06-2023, 04:47 AM
Welcome to VBAX Deger, Thank you for your contribution, for it's nice to see new contributors. Just a couple of quick housekeeping hints, we try to wrap any supplied code with code tags. Please refer to the first line in my signature for a hint. Also it's not necessary to fully quote a response when making a post. I know they do it on some of the other forums, but here we take the view that it simply is a waste of whitespace. That aside, please keep up the great work.

Aussiebear
09-06-2023, 04:57 AM
@Scuba, click on Go Advanced, Manage Attachments, choose file, and Upload to attach a workbook. Make a note of the file size limits.

From your indications in post #13, there's probably no need to have Cell C4 reflect any message as its dependant dropdown depending on what has been selected in Cell C3. Other than that follow the advice offered by Deger, and workout clearly what needs to hidden or unhidden. BTW the same housekeeping advice go to you as well, please wrap your code with code tags.

Scuba
09-06-2023, 05:36 AM
Noted and understood, file uploaded :)

Scuba
09-06-2023, 06:00 AM
Stupid noob question, but what and where do I find 'Code Tags'?

georgiboy
09-06-2023, 06:01 AM
How does it do with a few changes below:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False

If Target.Address = "$C$3" Then
Range("C4").Value = "Please Select Origin..."
Application.EnableEvents = True
Exit Sub
ElseIf Target.Address = "$C$4" Then
ActiveSheet.Unprotect Password:="dlm"
Select Case Target.Offset(-1).Value
Case "Air"
Range("A10:A19").EntireRow.Hidden = True
Range("A39:A43").EntireRow.Hidden = True
Range("A56:A58").EntireRow.Hidden = True
If Target.Value = "Warsaw to New York" Then
Range("A23").EntireRow.Hidden = True
End If
Case "Ocean_Asia_to_EU"
Range("A8:A15").EntireRow.Hidden = True
If Target.Value = "Shanghai to Genoa" Then
Range("A23").EntireRow.Hidden = True
Range("A57").EntireRow.Hidden = True
Range("A51:A74").EntireRow.Hidden = True
End If
Case "Shanghai to Genoa"
Range("A17:A19").EntireRow.Hidden = True
Range("A8:A9").EntireRow.Hidden = False
Range("A12").EntireRow.Hidden = False
Range("A14").EntireRow.Hidden = True
Range("A15").EntireRow.Hidden = False
Range("A11").EntireRow.Hidden = True
Range("A12").EntireRow.Hidden = True
Range("A13:A15").EntireRow.Hidden = True
Range("C15:D15").ClearContents
Range("C14:D14").ClearContents
Range("D17:D19").ClearContents
Range("C8:D8").ClearContents
Range("C9:D9").ClearContents
Case "Overland"
Range("A8:A9").EntireRow.Hidden = True
Range("A7:A12").EntireRow.Hidden = True
Range("A15").EntireRow.Hidden = True
Range("A14").EntireRow.Hidden = False
Range("A18:A19").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A13:A15").EntireRow.Hidden = True
Range("C11:D11").ClearContents
Range("C12:D12").ClearContents
Range("C13:D13").ClearContents
Range("C14:D14").ClearContents
Range("C15:D15").ClearContents
Range("C17:D17").ClearContents
Range("C18:D18").ClearContents
Range("C19:D19").ClearContents
End Select
ActiveSheet.Protect Password:="dlm"
Range("C3").Select
End If

Application.EnableEvents = True
End Sub

In the code above the RED parts relate to C3 dropdown, the BLUE parts relate to C4 dropdown

georgiboy
09-06-2023, 06:03 AM
Stupid noob question, but what and where do I find 'Code Tags'?

When you are writing the post, it is the # symbol in the mini ribbon

georgiboy
09-06-2023, 06:08 AM
Just updated post 19

Scuba
09-06-2023, 06:14 AM
Hello,

OK I have substituted your code for mine and inserted the relevant code for hiding/unhiding certain rows, all works fine if left like that, but the minute I add in an 'IF statement', I get the below error, keep in mind I was on Air for cell C3 & 'Warsaw to New York' for cell C4, I didn't get to change the cell C4 to match 'Malpensa to New York' before the error happened, the moment i selected Air in Cell C3 I got the error

Below is the code I was using.


Private Sub Worksheet_Change(ByVal Target As Range)If Target.Address = "$C$3" Then
Range("C4").Value = "Please Select Origin..."
End If
Dim changed As Range
Set changed = Intersect(Target, Range("C4"))
If Not changed Is Nothing Then
Select Case Target.Value
Case "Air"
ctiveSheet.Unprotect Password:="dlm"
ActiveSheet.CheckBox1.Visible = False
ActiveSheet.CheckBox2.Visible = False
ActiveSheet.CheckBox3.Visible = False
ActiveSheet.CheckBox4.Visible = False
ActiveSheet.CheckBox5.Visible = False
ActiveSheet.CheckBox6.Visible = False
Range("A5:A6").EntireRow.Hidden = True
Range("A8:A11").EntireRow.Hidden = False
Range("A12").EntireRow.Hidden = True
Range("A16").EntireRow.Hidden = True
Range("A18:A25").EntireRow.Hidden = True
Range("A13:A14").EntireRow.Hidden = True
Range("A39:A43").EntireRow.Hidden = True
Range("A52:A58").EntireRow.Hidden = True
If Range("C4").Value = "Malpensa to New York" Then
Range("A17:A21").EntireRow.Hidden = True
ActiveSheet.Protect Password:="dlm"
Case "Ocean_EU_to_US"
ActiveSheet.Unprotect Password:="dlm"
ActiveSheet.CheckBox1.Visible = True
ActiveSheet.CheckBox2.Visible = True
ActiveSheet.CheckBox3.Visible = True
ActiveSheet.CheckBox4.Visible = True
ActiveSheet.CheckBox5.Visible = True
ActiveSheet.CheckBox6.Visible = True
Range("A13").EntireRow.Hidden = True
Range("A8:A15").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = False
Range("A57").EntireRow.Hidden = True
Range("A51:A74").EntireRow.Hidden = True
ActiveSheet.Protect Password:="dlm"

Scuba
09-06-2023, 06:16 AM
thank you

georgiboy
09-06-2023, 06:17 AM
Have you tried replacing all of your code with the code from post 19?

NOTE: It will run when C4 has been changed, the reson for this is that you reference C4 being different values in your code - but the beginning of your code changes C4. This means that the value of C4 will always be the same whenever your code fires. I edited your code (post 19) to change the value of C4 only when C3 has been changed, when you then change C4 it will fire the rest of the code.

georgiboy
09-06-2023, 07:03 AM
Here is another way of looking at it, seperating the two parts:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False

If Target.Address = "$C$3" Then
Range("C4") = "Please Select Origin..."
ActiveSheet.Unprotect Password:="dlm"
Select Case Target.Value
Case "Air"
Range("A10:A19").EntireRow.Hidden = True
Range("A39:A43").EntireRow.Hidden = True
Range("A56:A58").EntireRow.Hidden = True
Case "Ocean_Asia_to_EU"
Range("A8:A15").EntireRow.Hidden = True
Case "Shanghai to Genoa" 'This one seems to be an issue
Range("A17:A19").EntireRow.Hidden = True
Range("A8:A9").EntireRow.Hidden = False
Range("A12").EntireRow.Hidden = False
Range("A14").EntireRow.Hidden = True
Range("A15").EntireRow.Hidden = False
Range("A11").EntireRow.Hidden = True
Range("A12").EntireRow.Hidden = True
Range("A13:A15").EntireRow.Hidden = True
Range("C15:D15").ClearContents
Range("C14:D14").ClearContents
Range("D17:D19").ClearContents
Range("C8:D8").ClearContents
Range("C9:D9").ClearContents
Case "Overland"
Range("A8:A9").EntireRow.Hidden = True
Range("A7:A12").EntireRow.Hidden = True
Range("A15").EntireRow.Hidden = True
Range("A14").EntireRow.Hidden = False
Range("A18:A19").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A13:A15").EntireRow.Hidden = True
Range("C11:D11").ClearContents
Range("C12:D12").ClearContents
Range("C13:D13").ClearContents
Range("C14:D14").ClearContents
Range("C15:D15").ClearContents
Range("C17:D17").ClearContents
Range("C18:D18").ClearContents
Range("C19:D19").ClearContents
End Select
ActiveSheet.Protect Password:="dlm"
Application.EnableEvents = True
Exit Sub
End If

If Target.Address = "$C$4" Then
ActiveSheet.Unprotect Password:="dlm"
Select Case Target.Offset(-1).Value
Case "Air"
If Target.Value = "Warsaw to New York" Then
Range("A23").EntireRow.Hidden = True
End If
Case "Ocean_Asia_to_EU"
If Target.Value = "Shanghai to Genoa" Then
Range("A23").EntireRow.Hidden = True
Range("A57").EntireRow.Hidden = True
Range("A51:A74").EntireRow.Hidden = True
End If
End Select
ActiveSheet.Protect Password:="dlm"
End If

Application.EnableEvents = True
End Sub

In the code above the RED text should only have options that relate to C3 dropdown, the BLUE text should only have options that relate to C4 dropdown.

georgiboy
09-06-2023, 07:25 AM
Sorry, got into a bit of an editing frenzy. I have now completed my edits to Post 19 & Post 25.

Still a few issues in there like on this row:

Range("A23").EntireRow.Hidden = True
You hide row 23, but i don't see anywhere in the code that row 23 is made visible again.

Paul_Hossler
09-06-2023, 07:57 AM
1. You need to be a little careful with things like that

If you change more than on cell, Target is the entire range. You may think that it'll never happen, but users are tricky and they might (it's not hard) anbd then nothing will work



Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox Target.Address
End Sub


31029

2. I'm guessing that C3 and C4 at least are unlocked since you protect the sheet after changing C3 and then C4 is locked and can't change

3. Couple of things to consider. Rearranged code, removed some redundant, etc. Again, a lot of personal style



Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range

Set r = Target.Cells(1, 1) ' only check first cell

'personal style - I like to exit quick
If r.Address <> "$C$3" And r.Address <> "$C$4" Then Exit Sub
If Len(r.Value) = 0 Then Exit Sub

Application.EnableEvents = False


Unprotect Password:="dlm"

Select Case r.Address
Case "$C$3"
'assume that C4 is Locked=False since this was before Unprotect
Range("C4") = "Please Select Origin..."
Select Case r.Value
Case "Air"
Range("A10:A19").EntireRow.Hidden = True
Range("A39:A43").EntireRow.Hidden = True
Range("A56:A58").EntireRow.Hidden = True
Case "Ocean_Asia_to_EU"
Range("A8:A15").EntireRow.Hidden = True
Case "Shanghai to Genoa"
Range("A17:A19").EntireRow.Hidden = True
Range("A8:A9").EntireRow.Hidden = False
Range("A12").EntireRow.Hidden = False
Range("A14").EntireRow.Hidden = True
Range("A15").EntireRow.Hidden = False
Range("A11").EntireRow.Hidden = True
Range("A12").EntireRow.Hidden = True
Range("A13:A15").EntireRow.Hidden = True
'combine? ame for rest
Range("C14:D15").ClearContents
Range("D17:D19").ClearContents
Range("C8:D9").ClearContents
Case "Overland"
Range("A8:A9").EntireRow.Hidden = True
Range("A7:A12").EntireRow.Hidden = True
Range("A15").EntireRow.Hidden = True
Range("A14").EntireRow.Hidden = False
Range("A18:A19").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A13:A15").EntireRow.Hidden = True
Range("C11:D11").ClearContents
Range("C12:D12").ClearContents
Range("C13:D13").ClearContents
Range("C14:D14").ClearContents
Range("C15:D15").ClearContents
Range("C17:D17").ClearContents
Range("C18:D18").ClearContents
Range("C19:D19").ClearContents
End Select

Case "$C$4"
Select Case r.Value
Case "Air"
If r.Value = ("Warsaw to New York") Then
Range("A23").EntireRow.Hidden = True
End If
Case "Ocean_Asia_to_EU"
If r.Value = ("Shanghai to Genoa") Then
Range("A23").EntireRow.Hidden = True
Range("A57").EntireRow.Hidden = True
Range("A51:A74").EntireRow.Hidden = True
End If
Case "Shanghai to Genoa"
' more code
Case "Overland"
' more code
End Select
End Select

ActiveSheet.Protect Password:="dlm"
Application.EnableEvents = True
End Sub

June7
09-07-2023, 01:25 AM
Firstly @ June7, Emojis can and often do occur outside of the "forum". One can be constructing a document in word and using sub paragraphs denoted by (a), (b), © etc and the emojis will appear. it is definitely a MS thing, and one they have not fixed.
Interesting, I can't recall ever experiencing this. I will have to explore.

I have seen forum generate emojis many times in code not between CODE tags and feel that is what happened in this case. Forum will also drop ending \ character from path strings. So again, post code between CODE tags.

Scuba
09-07-2023, 01:48 AM
Thank you Paul,

I think your first attachment is incorrect for the subject in hand lol.

I will try out your code and let you know how I get on.

Once again, thank you for you help.

Scuba
09-07-2023, 06:20 AM
Hi Paul,

OK, I have cleaned up what rows need to be hidden/unhidden etc and adjusted your code accordingly, see below code.

This unfortunately errors when you first change C3 to air


Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range
Set r = Target.Cells(1, 1)
If r.Address <> "$C$3" And r.Address <> "$C$4" Then Exit Sub
If Len(r.Value) = 0 Then Exit Sub
Application.EnableEvents = False
Unprotect Password:="dlm"
Select Case r.Address
Case "$C$3"
'assume that C4 is Locked=False since this was before Unprotect - CORRECT!
Range("C4") = "Please Select Origin..."
Select Case r.Value
Case "Air"
Range("A10:A19").EntireRow.Hidden = True
Range("A39:A43").EntireRow.Hidden = True
Range("A56:A58").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
Range("C9:D16").ClearContents
Case "Ocean_Asia_to_EU"
Range("A8:A15").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = False
Range("C9:D16").ClearContents
Case "Ocean_EU_to_US"
Range("A23:A25").EntireRow.Hidden = False
Range("A17:A19").EntireRow.Hidden = True
Range("A8:A9").EntireRow.Hidden = False
Range("A12").EntireRow.Hidden = False
Range("A14").EntireRow.Hidden = True
Range("A15").EntireRow.Hidden = False
Range("A11").EntireRow.Hidden = True
Range("A12").EntireRow.Hidden = True
Range("A13:A15").EntireRow.Hidden = True
Range("C9:D16").ClearContents
Case "Overland"
Range("A8:A9").EntireRow.Hidden = True
Range("A7:A12").EntireRow.Hidden = True
Range("A15").EntireRow.Hidden = True
Range("A14").EntireRow.Hidden = False
Range("A18:A19").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A13:A15").EntireRow.Hidden = True
Range("C9:D16").ClearContents
End Select
Case "$C$4"
Select Case r.Value
Case "Air"
If r.Value = ("Warsaw to JFK") Then
Range("A5:A6").EntireRow.Hidden = True
Range("A8:A21").EntireRow.Hidden = True
Range("A24:A25").EntireRow.Hidden = True
End If
If r.Value = ("Warsaw to LAX") Then
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = False
Range("A8:A11").EntireRow.Hidden = False
Range("A12").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A20").EntireRow.Hidden = False
End If
If r.Value = ("Malpensa to JFK") Then
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
End If
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
End If
If r.Value = ("Heathrow to JFK") Then
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
End If
If r.Value = ("Heathrow to LAX") Then
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
End If
Case "Ocean_EU_to_US"
If r.Value = ("Genoa to New York") Then
Range("A23").EntireRow.Hidden = True
Range("A57").EntireRow.Hidden = True
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False
End If
Case "Ocean_EU_to_US"
' more code
Case "Overland"
' more code
End Select
End Select
ActiveSheet.Protect Password:="dlm"
Application.EnableEvents = True
End Sub

It errors and points to an 'End IF' statement (see attachment)


Any ideas where I'm going wrong?

ps. I will complete the Ocean rows once I have got the air to work.

Regards

Richard

Aussiebear
09-07-2023, 07:52 AM
You are missing a line



if r.value = ("Malpensa to LAX")

Paul_Hossler
09-07-2023, 07:54 AM
I'd guess the marked line is missing

I really didn't test it since there was no dummy data to play with




End If

If .......... Then ' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
End If

Aflatoon
09-07-2023, 10:04 AM
Your "Ocean_EU_to_US" section doesn't make a lot of sense. You hide rows 23 and 57 then unhide them again since they are part of the next two ranges too.

Scuba
09-08-2023, 03:38 AM
This is correct, they are wrong currently, please ignore them, they need to be changed, the actual rows that need to be hidden/unhidden, I'm not concerned with at this stage as I will clean them up once I have the logic working correctly.
:)

Scuba
09-08-2023, 03:39 AM
Hi,

The code is showing this line, you can see from the screen shot in post 30?

georgiboy
09-08-2023, 03:44 AM
Post 31 & 32 explain what is missing.

Scuba
09-08-2023, 03:44 AM
Hi Paul,

When I insert this it fails again 'Compile error'

Can you show me in the code where it should go ad Ive copied what you wrote but it fails.

georgiboy
09-08-2023, 03:54 AM
If you indent the code between the If & End If's, it will be easier to see what is missing:

If r.Value = ("Malpensa to JFK") Then
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
End If


'''''''''''''''''''''''''' Here
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
End If


If r.Value = ("Heathrow to JFK") Then
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
End If

As Aussie stated in post 31, you are missing something like:

if r.value = ("Malpensa to LAX")
Where is states: '''''''''''''''''''''''''' Here

Scuba
09-08-2023, 03:57 AM
Yep I saw that I missed that off


if r.value = ("Malpensa to LAX")

Have added and will test.

Scuba
09-08-2023, 04:09 AM
thank you, and yes I saw my school boy error and have correct it :)

Scuba
09-08-2023, 06:04 AM
Hi Paul,

OK I'm trying a different approach here now because I cannot get this to work using both cell.

I would prefer to have this working from both cells but it just seems to ignore whatever I select in C4's drop down list.

My original idea was use the values from C3 to hide/unhide the majority of fields required for the mode selected and then when the user selects the actual lane from cell c4, I can further streamline the fields by removing and or adding back in the required fields.

For example I don't need row 8 to be visible when JFK is selected as the end destination but it is required when LAX is selected.

There are other optimisation (rows to hide/unhide) for other lanes in Cell C4 but again, if I can get one to work then I can repeat for the rest


So a different approach is to just work from Cell C4 only, this is not as future proof for me as I would like and I would prefer to get the above working but it just seems to be eluding me currently and I'm nearly 5 day in on this and behind schedule.

So another way to do this and hopefully simplify this, is to use the values from cell C4 only, as they are unique to each other so I can adjust my code to look only at C4 and then do its hidding/unhiding etc.
I have tried to adjust as per below bu t it fails so need your help/guidance again please :)

Ive insert the below under Air as acheck as these fieds are only needed from Ocean and so shouldn't be visible when selecting a Air route.


Range("A23:A25").EntireRow.Hidden = False


Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range
Set r = Target.Cells(1, 1)
If r.Address <> "$C$4" Then Exit Sub
If Len(r.Value) = 0 Then Exit Sub
Application.EnableEvents = False
Unprotect Password:="dlm"
Select Case r.Value
Case "Warsaw to JFK"
Range("A5:A6").EntireRow.Hidden = True
Range("A8:A10").EntireRow.Hidden = True
Range("A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = False
Case "Warsaw to LAX"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = False
Range("A8:A11").EntireRow.Hidden = False
Range("A12").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A20").EntireRow.Hidden = False
Case "Malpensa to JFK"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Case "Malpensa to LAX"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Case "Heathrow to JFK"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Case "Heathrow to LAX"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Case "Ocean_EU_to_US"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False
Case "Ocean_Asia_to_EU"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False
Case "Overland"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False
End Select
ActiveSheet.Protect Password:="dlm"
Application.EnableEvents = True
End Sub

Paul_Hossler
09-08-2023, 06:16 AM
Be glad to, but could you make a small workbook with the entire macro(s) and attach it?

I'm not sure how the entire macro looks

A more wordy way (not always a good thing) is to test for both C3 and C4 combined




Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, rC3 As Range, rC4 As Range

Set r = Target.Cells(1, 1) ' only check first cell
Set rC3 = Range("C3")
Set rC4 = Range("C4")


'personal style - I like to exit quick
If r.Address <> rC3.Address And r.Address <> rC4.Address Then Exit Sub
If Len(r.Value) = 0 Then Exit Sub

Application.EnableEvents = False




Unprotect Password:="dlm"

Select Case rC3.Value & "#" & rC4.Value
Case "Air" & "#" & "Warsaw to JFK"
Range("A5:A6").EntireRow.Hidden = True
Range("A8:A10").EntireRow.Hidden = True
Range("A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = False


Case "Air" & "#" & "Warsaw to LAX"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = False
Range("A8:A11").EntireRow.Hidden = False
Range("A12").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A20").EntireRow.Hidden = False

'etc
'etc

Case Else
If Len(rC3.Value) = 0 Then
rC4.Value = "Select Destination"
ElseIf Len(rC4.Value) = 0 Then
rC3.Value = "Select Origin"
Else
MsgBox "Origin and/or Destinaation not programed for"
End If
End Select

ActiveSheet.Protect Password:="dlm"
Application.EnableEvents = True
End Sub

Scuba
09-08-2023, 06:33 AM
sure but not sure it will work in a cut down version so please find attached workbook

regards

Richard

georgiboy
09-08-2023, 06:33 AM
So a different approach is to just work from Cell C4 only, this is not as future proof for me as I would like and I would prefer to get the above working but it just seems to be eluding me currently and I'm nearly 5 day in on this and behind schedule.

I think this was suggested in post 25

Scuba
09-08-2023, 06:45 AM
It was yes but as outlined in my last message the preferred method is to combine both, this future proofs me better when I need to make additions to the lanes and or modes.

The only reasons working from one works is because the names are unique in C4 but they may not be in the future hence why 2 is better than one.

georgiboy
09-08-2023, 07:11 AM
Sorry I should have said post 25 does both C3 & C4, post 19 works from C4 only.

Paul_Hossler
09-08-2023, 03:04 PM
Some things to think about

Not all C4 choices apply to some C3 selections so you might need to make a matrix




Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, rC3 As Range, rC4 As Range

Set r = Target.Cells(1, 1)
Set rC3 = Range("C3")
Set rC4 = Range("C4")

If r.Address <> rC3.Address And r.Address <> rC4.Address Then Exit Sub
If Len(r.Value) = 0 Then Exit Sub

If Len(rC3.Value) = 0 Or Len(rC4.Value) = 0 Then Exit Sub

Application.ScreenUpdating = False
Application.EnableEvents = False
Unprotect Password:="dlm"

'show them all to start and then hide the ones based on C3 and/or C4
Rows("1:86").Hidden = False

Select Case rC3.Value
Case "Air"
'if you always need to hide rows for Air


Case "Ocean_EU_to_US"
'if you need to hide rows

Case "Ocean_Asia_to_EU"
'if you need to hide rows


Case "Overland"
'if you need to hide rows

End Select


'depending on C3, not all of these apply
Select Case rC4.Value
Case "Warsaw to JFK"
Range("A5:A6").EntireRow.Hidden = True
Range("A8:A10").EntireRow.Hidden = True
Range("A12:A21").EntireRow.Hidden = True
Case "Warsaw to LAX"
Range("A6").EntireRow.Hidden = True
Range("A12").EntireRow.Hidden = True
Case "Malpensa to JFK"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = True
Range("A12:A21").EntireRow.Hidden = True
Case "Malpensa to LAX"
Range("A6").EntireRow.Hidden = True
Range("A12:A21").EntireRow.Hidden = True
Case "Heathrow to JFK"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = True
Range("A12:A21").EntireRow.Hidden = True
Case "Heathrow to LAX"
Range("A6").EntireRow.Hidden = True
Range("A12:A21").EntireRow.Hidden = True
Case "Ocean_EU_to_US"
etc.
Case "Ocean_Asia_to_EU"
etc.
Case "Overland"
etc.
End Select

' ActiveSheet.Protect Password:="dlm" ' <<<<<<<<<<<<<<<<<<< for testing
Application.EnableEvents = True
Application.ScreenUpdating = true



End Sub

Scuba
09-12-2023, 07:43 AM
Hi Paul,

This worked a treat, I can't thank you enough :)

I've added an extra line to make the Rate Calc sheet look cleaner until the lane has been selected, it basically stop/hides the 'False' being shown because the user hasn't selected their lane yet from C4 cell..


If Target.Address = "$C$3" Then
Range("C4").Value = "Please Select Origin..."

My only stumbling block now is I need to be able to hide an 'Active xControl check box' when a certain lane is selected , namely the below, it fails to hide or unhide the check boxes, any ideas?


Case "Ocean_EU_to_US" & "#" & "Genoa to New York" Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False
Range("A54:A57").EntireRow.Hidden = True
ActiveSheet.CheckBox1.Visible = True
ActiveSheet.CheckBox2.Visible = True
ActiveSheet.CheckBox3.Visible = True
ActiveSheet.CheckBox4.Visible = True
ActiveSheet.CheckBox5.Visible = True
ActiveSheet.CheckBox6.Visible = True

Case "Ocean_EU_to_US" & "#" & "Genoa to Los Angeles"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False
Range("A54:A57").EntireRow.Hidden = True
ActiveSheet.CheckBox1.Visible = False
ActiveSheet.CheckBox2.Visible = False
ActiveSheet.CheckBox3.Visible = False
ActiveSheet.CheckBox4.Visible = False
ActiveSheet.CheckBox5.Visible = False
ActiveSheet.CheckBox6.Visible = False

Full code is below


Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range, rC3 As Range, rC4 As Range

Set r = Target.Cells(1, 1) 'only check first cell
Set rC3 = Range("C3")
Set rC4 = Range("C4")

If r.Address <> rC3.Address And r.Address <> rC4.Address Then Exit Sub
If Len(r.Value) = 0 Then Exit Sub
If Target.Address = "$C$3" Then
Range("C4").Value = "Please Select Origin..."
End If

Application.EnableEvents = False
Unprotect Password:="dlm"

Select Case rC3.Value & "#" & rC4.Value
Case "Air" & "#" & "Warsaw to New York"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Case "Air" & "#" & "Warsaw to Los Angeles"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Case "Air" & "#" & "Malpensa to New York"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Case "Air" & "#" & "Malpensa to Los Angeles"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Case "Air" & "#" & "Heathrow to New York"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Case "Air" & "#" & "Heathrow to Los Angeles"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Case "Ocean_EU_to_US" & "#" & "Genoa to New York"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False
Range("A54:A57").EntireRow.Hidden = True
ActiveSheet.CheckBox1.Visible = True
ActiveSheet.CheckBox2.Visible = True
ActiveSheet.CheckBox3.Visible = True
ActiveSheet.CheckBox4.Visible = True
ActiveSheet.CheckBox5.Visible = True
ActiveSheet.CheckBox6.Visible = True

Case "Ocean_EU_to_US" & "#" & "Genoa to Los Angeles"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False
Range("A54:A57").EntireRow.Hidden = True
ActiveSheet.CheckBox1.Visible = False
ActiveSheet.CheckBox2.Visible = False
ActiveSheet.CheckBox3.Visible = False
ActiveSheet.CheckBox4.Visible = False
ActiveSheet.CheckBox5.Visible = False
ActiveSheet.CheckBox6.Visible = False

Case "Ocean_EU_to_US" & "#" & "Genoa/La Spezia to Los Angeles"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False

Case "Ocean_EU_to_US" & "#" & "Gdynia to New York"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False

Case "Ocean_EU_to_US" & "#" & "Gdynia to Los Angeles"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False

Case "Ocean_EU_to_US" & "#" & "Hamburg to New York"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False

Case "Ocean_EU_to_US" & "#" & "Hamburg to Los Angeles"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False

Case "Ocean_EU_to_US" & "#" & "FXT/SOU to New York"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False

Case "Ocean_EU_to_US" & "#" & "FXT/SOU to Los Angeles"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False

Case "Ocean_Asia_to_EU" & "#" & "Shanghai to Genoa"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False

Case "Ocean_Asia_to_EU" & "#" & "Xiamen to Genoa"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False

Case "Ocean_Asia_to_EU" & "#" & "Shanghai to Gdynia/Gdansk"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False

Case "Ocean_Asia_to_EU" & "#" & "Xiamen to Gdynia/Gdansk"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False

Case "Ocean_Asia_to_EU" & "#" & "Shanghai to FXT/SOU"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False

Case "Ocean_Asia_to_EU" & "#" & "Xiamen to FXT/SOU"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False

Case "Overland" & "#" & "PL to UK"
Range("A8:A13").EntireRow.Hidden = True
Range("A14").EntireRow.Hidden = False
Range("A15:A21").EntireRow.Hidden = True
Range("A38:A74").EntireRow.Hidden = True
Range("A24:A25").EntireRow.Hidden = True

Case "Overland" & "#" & "UK to PL"
Range("A8:A13").EntireRow.Hidden = True
Range("A14").EntireRow.Hidden = False
Range("A15:A21").EntireRow.Hidden = True
Range("A38:A74").EntireRow.Hidden = True
Range("A24:A25").EntireRow.Hidden = True
End Select

ActiveSheet.Protect Password:="dlm"
Application.EnableEvents = True
End Sub

Paul_Hossler
09-12-2023, 12:05 PM
Option Explicit


Sub cboxHide()


ActiveSheet.Shapes("Checkbox1").Visible = False


End Sub


Sub cboxShow()


ActiveSheet.Shapes("CheckBox1").Visible = True


End Sub




But I usually rename them so that the code is more readable and I'm less likely to make errors

Scuba
09-13-2023, 01:59 AM
Hi Paul,

That makes sense to rename them, I've renamed them now for ease of reference.

Your code is complete but I need to insert it into my code without breaking the rest/flow of the code, I have inserted as per below but nothing happened when I select 'Genoa to New York' or 'Genoa to Los Angeles'.

Basically the check boxes are only needed for 'Genoa to New York' and then will be hidden for the rest, if I can get the below two to work correctly, I can then replicate for the other lanes.


Case "Ocean_EU_to_US" & "#" & "Genoa to New York" Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False
Range("A54:A57").EntireRow.Hidden = True
ActiveSheet.Shapes("RFR20").Visible = True
ActiveSheet.Shapes("RFR40").Visible = True
ActiveSheet.Shapes("RFR40HQ").Visible = True
ActiveSheet.Shapes("Priority20").Visible = True
ActiveSheet.Shapes("Priority40").Visible = True
ActiveSheet.Shapes("Priority40HQ").Visible = True

Case "Ocean_EU_to_US" & "#" & "Genoa to Los Angeles"
Range("A51:A74").EntireRow.Hidden = False
Range("A23:A25").EntireRow.Hidden = False
Range("A54:A57").EntireRow.Hidden = True
ActiveSheet.Shapes("RFR20").Visible = False
ActiveSheet.Shapes("RFR40").Visible = False
ActiveSheet.Shapes("RFR40HQ").Visible = False
ActiveSheet.Shapes("Priority20").Visible = False
ActiveSheet.Shapes("Priority40").Visible = False
ActiveSheet.Shapes("Priority40HQ").Visible = False

Paul_Hossler
09-13-2023, 07:44 AM
Without a sample workbook with the latest macros, it's hard to say

Here's a snippet that "looks OK" to me

I think it's easier to 'reset' to a visible configuration each time and then apply the specifics. So I like to unhide all rows and hide the checkboxes and the depending on the choices, hide N/A rows and show the checkboxes

One the checkboxes are made visible, they stay visible until they get hidden and by always starting with a known configuration, I find it easier to manage



Application.EnableEvents = False
Unprotect Password:="dlm"

Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = False
Shapes("Priority40").Visible = False
Shapes("Priority40HQ").Visible = False

Rows("1:86").Hidden = False


Select Case rC3.Value & "#" & rC4.Value
Case "Air" & "#" & "Warsaw to New York"
Range("A6").EntireRow.Hidden = True
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Case "Air" & "#" & "Warsaw to Los Angeles"
Range("A6").EntireRow.Hidden = True
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Case "Air" & "#" & "Malpensa to New York"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = True
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Scuba
09-13-2023, 08:35 AM
Hi Paul,

I have uploaded the file for reference if that is easier, let me know please?

Once again, thank you for all your help so far :)

Regards

Richard

Scuba
09-14-2023, 08:50 AM
Hi Paul,

I shared the workbook in post 52 as requested, I have reviewed your response in post 51 and I think I understand what you are saying, however the hiding and unhiding of rows and or check boxes is all dependent on what is selected by rC3 & rC4, mainly rC4, hence why I was trying to use each Case under Rc4 as the determining factor, for example

if rC4 = 'Warsaw to New York' then


Shapes("RFR20").Visible = True
Shapes("RFR40").Visible = True
Shapes("RFR40HQ").Visible = True
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

but if rC4='Warsaw to Los Angeles' then


Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True


Basically RFR means Reefer movements & Priority means Priority movements, we only move Reefer containers from 'Warsaw to New York', hence why they are required to be visible when this is selected in rC4 but hidden when rC4 is 'Warsaw to Los Angeles'

This is slightly different to what I posted in 48 but was the true end game as once I got the logic or code to work, I could then change it to what I needed hidden/unhidden etc per rC4 selection.



Regards


Richard

Paul_Hossler
09-14-2023, 10:23 AM
Many ways to do it, but I think it's easier to follow to start off by hiding the check boxes and showing all the rows.

Then depending on choices in C3 and C4 to hide the inapplicable rows depending on combanation ofC3+C4and showing the appropriate check boxes depending on C4

That way you always start with a known status



Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, rC3 As Range, rC4 As Range

Set r = Target.Cells(1, 1) 'only check first cell
Set rC3 = Range("C3")
Set rC4 = Range("C4")

If r.Address <> rC3.Address And r.Address <> rC4.Address Then Exit Sub
If Len(r.Value) = 0 Then Exit Sub


If Target.Address = "$C$3" Then
Range("C4").Value = "Please Select Origin..."
End If

Application.EnableEvents = False
Unprotect Password:="dlm"


Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = False
Shapes("Priority40").Visible = False
Shapes("Priority40HQ").Visible = False

Rows("1:86").Hidden = False

Select Case rC3.Value & "#" & rC4.Value
Case "Air" & "#" & "Warsaw to New York"
Range("A6").EntireRow.Hidden = True
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Case "Air" & "#" & "Warsaw to Los Angeles"
Range("A6").EntireRow.Hidden = True
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Case "Air" & "#" & "Malpensa to New York"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = True
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Case "Air" & "#" & "Malpensa to Los Angeles"
Range("A6").EntireRow.Hidden = True
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Case "Air" & "#" & "Heathrow to New York"
Range("A6").EntireRow.Hidden = True
Range("A8").EntireRow.Hidden = True
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Case "Air" & "#" & "Heathrow to Los Angeles"
Range("A6").EntireRow.Hidden = True
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True

Case "Ocean_EU_to_US" & "#" & "Genoa to New York"
Range("A54:A57").EntireRow.Hidden = True

Case "Ocean_EU_to_US" & "#" & "Genoa to Los Angeles"
Range("A54:A57").EntireRow.Hidden = True

Case "Ocean_EU_to_US" & "#" & "Genoa/La Spezia to Los Angeles"

Case "Ocean_EU_to_US" & "#" & "Gdynia to New York"

Case "Ocean_EU_to_US" & "#" & "Gdynia to Los Angeles"

Case "Ocean_EU_to_US" & "#" & "Hamburg to New York"

Case "Ocean_EU_to_US" & "#" & "Hamburg to Los Angeles"

Case "Ocean_EU_to_US" & "#" & "FXT/SOU to New York"

Case "Ocean_EU_to_US" & "#" & "FXT/SOU to Los Angeles"

Case "Ocean_Asia_to_EU" & "#" & "Shanghai to Genoa"

Case "Ocean_Asia_to_EU" & "#" & "Xiamen to Genoa"

Case "Ocean_Asia_to_EU" & "#" & "Shanghai to Gdynia/Gdansk"

Case "Ocean_Asia_to_EU" & "#" & "Xiamen to Gdynia/Gdansk"

Case "Ocean_Asia_to_EU" & "#" & "Shanghai to FXT/SOU"

Case "Ocean_Asia_to_EU" & "#" & "Xiamen to FXT/SOU"

Case "Overland" & "#" & "PL to UK", "Overland" & "#" & "UK to PL"
Range("A8:A13").EntireRow.Hidden = True
Range("A15:A21").EntireRow.Hidden = True
Range("A38:A74").EntireRow.Hidden = True
Range("A24:A25").EntireRow.Hidden = True
End Select

Select Case rC4.Value
Case "Warsaw to New York"
Shapes("RFR20").Visible = True
Shapes("RFR40").Visible = True
Shapes("RFR40HQ").Visible = True
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True


Case "Warsaw to Los Angeles"
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True
End Select

ActiveSheet.Protect Password:="dlm"
Application.EnableEvents = True
End Sub

Scuba
09-15-2023, 02:47 AM
Hi Paul,

I will most certainly try this approach yes but not sure how this will work because its not a simple on or off before the rC4 lanes are selected.

Yes, the check boxes are required to be hidden for all 'Air' or 'Overland' lanes but then only 3 of them are required to be visible for all Ocean lanes and then for a specific lane 'Genoa to New York', all 6 are required.

If we are turning them on or off in the first instance before rC4 is selected how will that work?

Sorry for questioning you, I'm just simply trying to get my head around all this and of course learn as I go along :)
regards

Scrap the above Paul, this works a treat, perfect! :)
I can't thank you enough and thank you or being patience with me, this is all new to me but I have learnt a lot all ready and will apply this to other projects in the future, once again many thanks Paul:clap::bow:

Regards

Richard

Scuba
09-15-2023, 05:37 AM
Hi Paul,

You may be able to help me with the below code, it fails when run.

Basically I'm hiding certain rows when an active check box is true and the value in C4 = Warsaw to New York

This is additional to what you have helped me with previously.


Sub BreakDownofCHarges()'Declare variables
Dim xCheckbox As Boolean
Dim cellC4 As String


'Get the value of the active x checkbox
xCheckbox = Sheets("Rate Calc").CheckBoxes("RevealBreakDown").Value


'Get the value of cell C4
cellC4 = Sheets("Rate Calc").Cells(4, 2).Value


'If the active x checkbox is checked and cell C4 is equal to "Warsaw to New York", then hide rows 38 to 43 and rows 52 to 58
If xCheckbox And cellC4 = "Warsaw to New York" Then
Sheets("Rate Calc").Rows(38:43).EntireRow.Hidden = True
Sheets("Rate Calc").Rows(52:58).EntireRow.Hidden = True
End If


End Sub

Paul_Hossler
09-15-2023, 10:57 AM
Option Explicit


Sub BreakDownofCHarges()


'If the active x checkbox is checked and cell C4 is equal to "Warsaw to New York", then hide rows 38 to 43 and rows 52 to 58
With Sheets("Rate Calc")
If .CheckBoxes("RevealBreakDown") And .Cells(4, 2).Value = "Warsaw to New York" Then
.Rows("38:43").Hidden = True ' .Rows(..) with a more than one requires a string, don't know why ... that's just MS
.Rows("52:58").Hidden = True ' Also .EntireRow is assumed
End If
End With


End Sub





Another way



Sub BreakDownofCharges_1()


'If the active x checkbox is checked and cell C4 is equal to "Warsaw to New York", then hide rows 38 to 43 and rows 52 to 58
With Sheets("Rate Calc")
If .CheckBoxes("RevealBreakDown") And .Cells(4, 2).Value = "Warsaw to New York" Then
.Rows(38).Resize(6).Hidden = True
.Rows(52).Resize(7).Hidden = True
End If
End With


End Sub

Scuba
09-21-2023, 02:15 AM
Worked a Dream Paul :) :bow:

Thank you

Scuba
09-21-2023, 02:26 AM
Hi Paul,

I realised after getting this to work perfectly with your expert help that I needed to add another clause or conditional row, so depending on what is selected in C5, different rows are hidden or unhidden.

Basically if C5 = Factory Load then line 17 is visible but if its CFS Loading then line 17 is hidden and line 19 is visible, this is because we have different collection locations depending on Factory vs CFS loading, it changes slightly for the other different modes, some have it some don't, I've adjusted the code so the correct rows are showing hidden or unhidden.

So building on what you had shown me already I adjusted the code accordingly but something is missing/not working on the below code as now when I change C4, nothing happens, especially if I am swapping between different modes/lanes (i.e. changing C3 and or C4), I then have to unhide all lines, manually select cell C5 and then it works, sort off, I'm close, just can't fathom how to push it over the line so to speak?

I've attached latest workbook for reference.


Option ExplicitPrivate Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, rC3 As Range, rC4 As Range, rC5 As Range

Set r = Target.Cells(1, 1) 'only check first cell
Set rC3 = Range("C3")
Set rC4 = Range("C4")
Set rC5 = Range("C5")

If r.Address <> rC3.Address And r.Address <> rC4.Address And r.Address <> rC5.Address Then Exit Sub
If Len(r.Value) = 0 Then Exit Sub


If Target.Address = "$C$3" Then
Range("C4").Value = "Please Select Origin..."
End If

Application.EnableEvents = False
Unprotect Password:="dlm"

Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = False
Shapes("Priority40").Visible = False
Shapes("Priority40HQ").Visible = False

Rows("5:25").Hidden = True
Rows("79:81").Hidden = True

Select Case rC3.Value & "#" & rC4.Value & "#" & rC5.Value

Case "Air"
Range("$C$5").Value = "Factory Load"

Case "Air" & "#" & "Warsaw to New York" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A16").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A18:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
Range("A32:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Air" & "#" & "Warsaw to Los Angeles" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A16").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A18:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Air" & "#" & "Malpensa to New York" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("A5:A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A12").EntireRow.Hidden = False
Range("A13:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Air" & "#" & "Malpensa to Los Angeles" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("A5:A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Air" & "#" & "Heathrow to New York" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("A5:A6").EntireRow.Hidden = True
Range("A7").EntireRow.Hidden = False
Range("A8").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Air" & "#" & "Heathrow to Los Angeles" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("A5:A6").EntireRow.Hidden = True
Range("A7").EntireRow.Hidden = False
Range("A8").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff


Case "Ocean_EU_to_US"
Range("$C$5").Value = "Factory Load"

Case "Ocean_EU_to_US" & "#" & "Genoa to New York" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A10").EntireRow.Hidden = True
Range("A11").EntireRow.Hidden = False
Range("A20").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A26:A32").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Ocean_EU_to_US" & "#" & "Genoa/La Spezia to Los Angeles" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A10").EntireRow.Hidden = True
Range("A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A26:A32").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Ocean_EU_to_US" & "#" & "Gdynia to New York" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A18").EntireRow.Hidden = True
Range("A19").EntireRow.Hidden = False
Range("A20:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Ocean_EU_to_US" & "#" & "Gdynia to New York" & "#" & "CFS Loading"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A19").EntireRow.Hidden = True
Range("A20").EntireRow.Hidden = False
Range("A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Ocean_EU_to_US" & "#" & "Gdynia to Los Angeles" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A18").EntireRow.Hidden = True
Range("A19").EntireRow.Hidden = False
Range("A20:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Ocean_EU_to_US" & "#" & "Gdynia to Los Angeles" & "#" & "CFS Loading"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A18").EntireRow.Hidden = True
Range("A20").EntireRow.Hidden = False
Range("A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Ocean_EU_to_US" & "#" & "Hamburg to New York" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A18").EntireRow.Hidden = True
Range("A19").EntireRow.Hidden = False
Range("A20:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff


Case "Ocean_EU_to_US" & "#" & "Hamburg to New York" & "#" & "CFS Loading"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A18").EntireRow.Hidden = True
Range("A20").EntireRow.Hidden = False
Range("A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff




Case "Ocean_EU_to_US" & "#" & "Hamburg to Los Angeles" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A18").EntireRow.Hidden = True
Range("A19").EntireRow.Hidden = False
Range("A20:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Ocean_EU_to_US" & "#" & "Hamburg to Los Angeles" & "#" & "CFS Loading"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A18").EntireRow.Hidden = True
Range("A20").EntireRow.Hidden = False
Range("A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff


Case "Ocean_EU_to_US" & "#" & "FXT/SOU to New York" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Ocean_EU_to_US" & "#" & "FXT/SOU to Los Angeles" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Ocean_Asia_to_EU"
Range("$C$5").Value = "Factory Load"

Case "Ocean_Asia_to_EU" & "#" & "Shanghai to Genoa" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Ocean_Asia_to_EU" & "#" & "Xiamen to Genoa" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Ocean_Asia_to_EU" & "#" & "Shanghai to Gdynia/Gdansk" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Ocean_Asia_to_EU" & "#" & "Xiamen to Gdynia/Gdansk" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Ocean_Asia_to_EU" & "#" & "Shanghai to SOU/FXT" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A20").EntireRow.Hidden = True
Range("A21:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Ocean_Asia_to_EU" & "#" & "Xiamen to SOU/FXT" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A20").EntireRow.Hidden = True
Range("A21:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Overland"
Range("$C$5").Value = "Factory Load"

Case "Overland" & "#" & "PL to UK" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A5:A6").EntireRow.Hidden = True
Range("A7").EntireRow.Hidden = False
Range("A8:A21").EntireRow.Hidden = True
Range("A22:A23").EntireRow.Hidden = False
Range("A24:A25").EntireRow.Hidden = True
Range("A26").EntireRow.Hidden = False
Range("A27:A32").EntireRow.Hidden = False
Range("A38:A74").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "Overland" & "#" & "UK to PL" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A5:A6").EntireRow.Hidden = True
Range("A7:A13").EntireRow.Hidden = True
Range("A14").EntireRow.Hidden = False
Range("A15:A21").EntireRow.Hidden = True
Range("A22:A23").EntireRow.Hidden = False
Range("A24:A25").EntireRow.Hidden = True
Range("A26").EntireRow.Hidden = False
Range("A27:A32").EntireRow.Hidden = False
Range("A38:A74").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

End Select

Select Case rC4.Value
Case "Genoa to New York"
Shapes("RFR20").Visible = True
Shapes("RFR40").Visible = True
Shapes("RFR40HQ").Visible = True
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True


Case "Genoa/La Spezia to Los Angeles"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Gdynia to New York"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Gdynia to Los Angeles"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Hamburg to New York"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Hamburg to Los Angeles"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "FXT/SOU to New York"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "FXT/SOU to Los Angeles"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Shanghai to Genoa"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Xiamen to Genoa"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Shanghai to Gdynia/Gdansk"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Xiamen to Gdynia/Gdansk"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Shanghai to SOU/FXT"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Xiamen to SOU/FXT"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "UK to PL"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = False
Shapes("Priority40").Visible = False
Shapes("Priority40HQ").Visible = False

Case "PL to UK"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = False
Shapes("Priority40").Visible = False
Shapes("Priority40HQ").Visible = False

End Select

ActiveSheet.Protect Password:="dlm"
Application.EnableEvents = True
End Sub

Paul_Hossler
09-21-2023, 07:18 AM
Hard to tell since you've modified what I suggested, but a quick look seems to be that in Select Case rC3.Value & "#" & rC4.Value & "#" & rC5.Value

the (rC3.Value & "#" & rC4.Value & "#" & rC5.Value) will never equal just "Air" so the Range("$C$5").Value = "Factory Load") will never execute

Try adding the If outside of the Case Select





If rC3.Value = "Air" Then rC5.Value = "Factory Load"

Select Case rC3.Value & "#" & rC4.Value & "#" & rC5.Value
'
'Case "Air"
' Range("$C$5").Value = "Factory Load"

Scuba
09-21-2023, 07:47 AM
Ok I've tried that, it seems to work fine so long as C5 = 'Factory Load', the moment C5 is change to 'CFS Loading', that's when it falls down.

Basically I only need the change C5 to 'CFS Loading' when selecting either Gdynia or Hamburg to New Your or Los Angeles, the rest don't need it, I didn't know how to just have them selectable so was trying to force C5 to 'Factory Load' for the rest, which is why they work but then fails when either Gdynia or Hamburg is selected.

If it helps below is what Im looking at, think on them as conditional drop downs

All the other lanes can be set same as the first one ie C5 is Factory Load




C3 =
Ocean_EU_to_US


C4 =
Genoa to New York


C5 =
Factory Load






C3 =
Ocean_EU_to_US


C4 =
Genoa/La Spezia to Los Angeles


C5 =
Factory Load






C3 =
Ocean_EU_to_US


C4 =
Gdynia to New York


C5 =
Factory Load or CFS Loading






C3 =
Ocean_EU_to_US


C4 =
Gdynia to Los Angeles


C5 =
Factory Load or CFS Loading






C3 =
Ocean_EU_to_US


C4 =
Hamburg to New York


C5 =
Factory Load or CFS Loading






C3 =
Ocean_EU_to_US


C4 =
Hamburg to Los Angeles


C5 =
Factory Load or CFS Loading






C3 =
Ocean_EU_to_US


C4 =
FXT/SOU to New York


C5 =
Factory Load






C3 =
Ocean_EU_to_US


C4 =
FXT/SOU to Los Angeles


C5 =
Factory Load

Paul_Hossler
09-21-2023, 09:14 AM
what if c3 = "Air?

Scuba
09-22-2023, 01:00 AM
Hi Paul,

If Air, I have forced it to read 'Factory Load"


If rC3.Value = "Air" Then rC5.Value = "Factory Load"

Basically I only need the change C5 to 'CFS Loading' when selecting either Gdynia or Hamburg to New Your or Los Angeles, the rest don't need it.

I don't know how to just have them selectable so was trying to force C5 to 'Factory Load' for the rest, which is why they work but then fails when either Gdynia or Hamburg is selected.



If rC3.Value = "Air" Then rC5.Value = "Factory Load"
Select Case rC3.Value & "#" & rC4.Value & "#" & rC5.Value

Case "Air" & "#" & "Warsaw to New York" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A16").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A18:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
Range("A32:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Air" & "#" & "Warsaw to Los Angeles" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A16").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A18:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Air" & "#" & "Malpensa to New York" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("A5:A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A12").EntireRow.Hidden = False
Range("A13:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Air" & "#" & "Malpensa to Los Angeles" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("A5:A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Air" & "#" & "Heathrow to New York" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("A5:A6").EntireRow.Hidden = True
Range("A7").EntireRow.Hidden = False
Range("A8").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Case "Air" & "#" & "Heathrow to Los Angeles" & "#" & "Factory Load"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("A5:A6").EntireRow.Hidden = True
Range("A7").EntireRow.Hidden = False
Range("A8").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("Check Box 111").Value = xlOff

Paul_Hossler
09-22-2023, 07:30 AM
Your logic map is a little confusing for me, but I think what you're asking



If rC3.Value = "Air" Then
rC5.Value = "Factory Load"

else if rC4.Value = "Gdynia to New York" then
rC5.Value = "CFS Loading"
else if rC4.Value = "Gdynia to Los Angeles" then
rC5.Value = "CFS Loading"


else if rC4.Value = "Hamburg to New York" then
rC5.Value = "CFS Loading"
else if rC4.Value = "Hamburg to Los Angeles" then
rC5.Value = "CFS Loading" End if



Select Case rC3.Value & "#" & rC4.Value & "#" & rC5.Value

Scuba
09-22-2023, 09:27 AM
HI Paul,

Sorry if my message was little unclear, I was trying to do the opposite lol

OK, let try try to explain another way, hopefully this makes more sense to you.


If the users selects 'Ocean_EU_to_US' in rC3 and any of the below in rC4, then rC5 is visible for them to select either 'Factory Load' or 'CFS Loading'

Genoa to New York
Genoa/La Spezia to Los Angeles
Gdynia to New York
Gdynia to Los Angeles
Hamburg to New York
Hamburg to Los Angeles


If the user selects any of the below in rC3, then rC5 is forced to 'Factory Load' and the row is hidden, as its not a requirement for the below lanes.

Air
Ocean_Asia_to_EU
Overland

The only reason I am trying to force 'Factory Load' to the above is because I didn't know how else to adjust your code to work :dunno, if there is a better way I'm all ears :yes

Regards

Richard

Paul_Hossler
09-22-2023, 06:40 PM
OK, I'm thinking that a more brute force approach might be better and easier to follow

Try the attached and the macro is longer but IMHO easier to follow

Be sure to look at the '<<<<<<<<<<<<<<<< comments since I modified some lines temporarily

Scuba
09-25-2023, 01:41 AM
Hi Paul,

This looks great but I'm struggling to see where the change is for rC5 cell?

If the users selects 'Ocean_EU_to_US' in rC3 and any of the below in rC4, then rC5 is visible for them to select either 'Factory Load' or 'CFS Loading'

Genoa to New York
Genoa/La Spezia to Los Angeles
Gdynia to New York
Gdynia to Los Angeles
Hamburg to New York
Hamburg to Los Angeles

Below example of one of the lanes where different rows are hidden/unhidden depending on what the user selects in rC4 (see previous post #65) (I didn't show all, the rest are in the attachment on post #65)


Case "Ocean_EU_to_US" & "#" & "Gdynia to New York" & "#" & "Factory Load" Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A18").EntireRow.Hidden = True
Range("A19").EntireRow.Hidden = False
Range("A20:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True

Case "Ocean_EU_to_US" & "#" & "Gdynia to New York" & "#" & "CFS Loading"
Range("C8:C10").Value = ""
Range("C11:C17").Value = ""
Range("C19:C21").Value = ""
Range("D23:D25").Value = ""
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A19").EntireRow.Hidden = True
Range("A20").EntireRow.Hidden = False
Range("A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False

Range("A33:A76").EntireRow.Hidden = True


The below code is perfect for Air, Overland & Ocean_Asia_to_EU


Case "Air" ' -------------------------------------------------------------------------------------------- Mode = Air rLoading.Value = "Factory Load"
rLoading.EntireRow.Hidden = True

However for Ocean_EU_to_US we will have a mixture of


rLoading.Value = "Factory Load"
rLoading.Value = "CFS Loading"

for the lanes :

Genoa to New York
Genoa/La Spezia to Los Angeles
Gdynia to New York
Gdynia to Los Angeles
Hamburg to New York
Hamburg to Los Angeles


Do have to change the code like the below:


rLoading.Value = "Factory Load"
rLoading.EntireRow.Hidden = True

Case "Ocean_EU_to_US" ' ------------------------------------------------------------ Mode = Ocean EU to US
rLoading.Value = "Factory Load"
rLoading.EntireRow.Hidden = True
Select Case rLane.Value

Case "Gdynia To New York"
Range("C8@C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A18").EntireRow.Hidden = True
Range("A19").EntireRow.Hidden = False
Range("A20:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("FBC").Value = xlOff

rLoading.Value = "CFS Loading"
rLoading.EntireRow.Hidden = True
Select Case rLane.Value
Case "Gdynia To New York"
Range("C8@C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A19").EntireRow.Hidden = True
Range("A20").EntireRow.Hidden = False
Range("A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
ActiveSheet.CheckBoxes("FBC").Value = xlOff

Oo do I bunch all '"CFS Loading"' lanes (rLane) under ones the heading "CFS Loading" and then repeat for all "Factory Loads" lanes?


I will review again in case it's me and my lack of understanding, highly possible lol

Once again, your help is highly appreciated sir.

Scuba
09-25-2023, 07:08 AM
I tried adding in the CFS Loading lanes but kept getting an error 'Select Case without End Select', which has thrown me as I have end Select at the end of each.

I'm mindful I'm reply to post 67, which you won't have answered/seen yet but I could edit my message to add this bit to it for some reason.


Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range, rMode As Range, rLane As Range, rLoading As Range

Set r = Target.Cells(1, 1) 'only check first cell
Set rMode = Range("C3")
Set rLane = Range("C4")
Set rLoading = Range("C5")

If r.Address <> rMode.Address And r.Address <> rLane.Address Then Exit Sub
If Len(r.Value) = 0 Then Exit Sub


'Step 1 - configure
Application.EnableEvents = False
Unprotect Password:="dlm"


If Target.Address = rMode.Address Then rLane.Value = "Please Select Origin..."

Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = False
Shapes("Priority40").Visible = False
Shapes("Priority40HQ").Visible = False

Rows("5:25").Hidden = True
Rows("79:81").Hidden = True
Rows("87:" & Rows.Count).Hidden = True

'step 2 - based on Mode, select Lane and configure
Select Case rMode.Value
Case "Air" ' -------------------------------------------------------------------------------------------- Mode = Air
rLoading.Value = "Factory Load"
rLoading.EntireRow.Hidden = True

Select Case rLane.Value
Case "Warsaw to New York"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A16").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A18:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
Range("A32:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "Warsaw to Los Angeles"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A16").EntireRow.Hidden = True
Range("A17").EntireRow.Hidden = False
Range("A18:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True


Case "Malpensa to New York"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("A5:A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A12").EntireRow.Hidden = False
Range("A13:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True


Case "Malpensa to Los Angeles"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("A5:A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True


Case "Heathrow to New York"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("A5:A6").EntireRow.Hidden = True
Range("A7").EntireRow.Hidden = False
Range("A8").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True


Case "Heathrow to Los Angeles"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("A5:A6").EntireRow.Hidden = True
Range("A7").EntireRow.Hidden = False
Range("A8").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A23:A25").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True
'ActiveSheet.CheckBoxes("FBC").Value = xlOff
End Select

Case "Ocean_EU_to_US" ' ------------------------------------------------------------ Mode = Ocean EU to US

Select Case rLane.Value
Case "Genoa to New York"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A10").EntireRow.Hidden = True
Range("A11").EntireRow.Hidden = False
Range("A20").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A26:A32").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "Genoa/La Spezia to Los Angeles"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A10").EntireRow.Hidden = True
Range("A11").EntireRow.Hidden = False
Range("A12:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A26:A32").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "Gdynia to New York"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A11").EntireRow.Hidden = False
Range("A12:A18").EntireRow.Hidden = True
Range("A19").EntireRow.Hidden = False
Range("A20:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "Gdynia to Los Angeles"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A18").EntireRow.Hidden = True
Range("A20:A21").EntireRow.Hidden = True
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "Hamburg to New York"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A18").EntireRow.Hidden = True
Range("A20:A21").EntireRow.Hidden = True
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "Hamburg to Los Angeles"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A18").EntireRow.Hidden = True
Range("A20:A21").EntireRow.Hidden = True
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "FXT/SOU to New York"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A9:A18").EntireRow.Hidden = True
Range("A20:A21").EntireRow.Hidden = True
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "FXT/SOU to Los Angeles"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A9:A18").EntireRow.Hidden = True
Range("A20:A21").EntireRow.Hidden = True
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True
End Select
Case "Ocean_EU_to_US" ' ------------------------------------------------------------ Mode = Ocean EU to US
rLoading.Value = "CFS Loading" '--------------------------CFS Loading lanes only
rLoading.EntireRow.Hidden = True
Select Case rLane.Value
Case "Gdynia to New York"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A5").EntireRow.Hidden = False
Range("A6").EntireRow.Hidden = True
Range("A7:A11").EntireRow.Hidden = False
Range("A12:A18").EntireRow.Hidden = True
Range("A19").EntireRow.Hidden = True
Range("A20:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "Gdynia to Los Angeles"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A19").EntireRow.Hidden = True
Range("A20:A21").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "Hamburg to New York"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A19").EntireRow.Hidden = True
Range("A20").EntireRow.Hidden = False
Range("A21").EntireRow.Hidden = True
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "Hamburg to Los Angeles"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A9:A11").EntireRow.Hidden = False
Range("A12:A19").EntireRow.Hidden = True
Range("A20").EntireRow.Hidden = False
Range("A21").EntireRow.Hidden = True
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "FXT/SOU to New York"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A9:A18").EntireRow.Hidden = True
Range("A20:A21").EntireRow.Hidden = True
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "FXT/SOU to Los Angeles"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A9:A18").EntireRow.Hidden = True
Range("A20:A21").EntireRow.Hidden = True
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True
End Select

Case "Ocean_Asia_to_EU" ' ---------------------------------------------------------------- Mode = Ocean Asia to EU
rLoading.Value = "Factory Load" '-------------------------------------Factory Load Lanes only
rLoading.EntireRow.Hidden = True

Select Case rLane.Value
Case "Shanghai to Genoa"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True


Case "Xiamen to Genoa"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "Shanghai to Gdynia/Gdansk"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "Xiamen to Gdynia/Gdansk"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "Shanghai to SOU/FXT"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "Xiamen to SOU/FXT"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A7:A8").EntireRow.Hidden = False
Range("A9:A21").EntireRow.Hidden = True
Range("A22:A25").EntireRow.Hidden = False
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True
End Select

Case "Overland" ' ----------------------------------------------------------------------------------- Mode = Overland
rLoading.Value = "Factory Load"
rLoading.EntireRow.Hidden = True

Select Case rLane.Value
Case "PL to UK"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A5:A6").EntireRow.Hidden = True
Range("A7").EntireRow.Hidden = False
Range("A8:A21").EntireRow.Hidden = True
Range("A22:A23").EntireRow.Hidden = False
Range("A24:A25").EntireRow.Hidden = True
Range("A26").EntireRow.Hidden = False
Range("A27:A32").EntireRow.Hidden = False
Range("A38:A74").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True

Case "UK to PL"
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A5:A6").EntireRow.Hidden = True
Range("A7:A13").EntireRow.Hidden = True
Range("A14").EntireRow.Hidden = False
Range("A15:A21").EntireRow.Hidden = True
Range("A22:A23").EntireRow.Hidden = False
Range("A24:A25").EntireRow.Hidden = True
Range("A26").EntireRow.Hidden = False
Range("A27:A32").EntireRow.Hidden = False
Range("A38:A74").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True
End Select

'step 3 - based on Lane show check boxes
Select Case rLane.Value
Case "Genoa to New York"
Shapes("RFR20").Visible = True
Shapes("RFR40").Visible = True
Shapes("RFR40HQ").Visible = True
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Genoa/La Spezia to Los Angeles"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Gdynia to New York"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Gdynia to Los Angeles"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Hamburg to New York"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Hamburg to Los Angeles"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "FXT/SOU to New York"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "FXT/SOU to Los Angeles"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Shanghai to Genoa"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Xiamen to Genoa"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Shanghai to Gdynia/Gdansk"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Xiamen to Gdynia/Gdansk"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Shanghai to SOU/FXT"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "Xiamen to SOU/FXT"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = True
Shapes("Priority40").Visible = True
Shapes("Priority40HQ").Visible = True

Case "UK to PL"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = False
Shapes("Priority40").Visible = False
Shapes("Priority40HQ").Visible = False

Case "PL to UK"
Shapes("RFR20").Visible = False
Shapes("RFR40").Visible = False
Shapes("RFR40HQ").Visible = False
Shapes("Priority20").Visible = False
Shapes("Priority40").Visible = False
Shapes("Priority40HQ").Visible = False
End Select
' ActiveSheet.Protect Password:="dlm" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Application.EnableEvents = True
End Sub

Paul_Hossler
09-25-2023, 08:43 AM
1. The XLSM in #66 does not have SELECT error for me


2.


Rows("1:86").Hidden = False
Rows("87:" & Rows.Count).Hidden = True


unhides all rows in 1 to 86 including row 5

3.


Case "Air" ' -------------------------------------------------------------------------------------------- Mode = Air
rLoading.Value = "Factory Load"
rLoading.EntireRow.Hidden = True

and

Case "Ocean_Asia_to_EU" ' -------------------------------------------------------------------------------------------- Mode = Ocean Asia to US
rLoading.Value = "Factory Load"
rLoading.EntireRow.Hidden = True

and

Case "Overland" ' -------------------------------------------------------------------------------------------- Mode = Overland
rLoading.Value = "Factory Load"
rLoading.EntireRow.Hidden = True






sets C5 = "Factory Load" but hides the row (I think that was your logic)


4.

However for Ocean_EU_to_US we will have a mixture of

rLoading.Value = "Factory Load"
rLoading.Value = "CFS Loading"
for the lanes :

Genoa to New York
Genoa/La Spezia to Los Angeles
Gdynia to New York
Gdynia to Los Angeles
Hamburg to New York
Hamburg to Los Angeles


Row 5 is left visible from the code in para 2 above and your data validation list has "Factory Load" and CFS Loading" as choices

Scuba
09-25-2023, 09:01 AM
Well that's weird then, I've attached the workbook again so you can see what I'm getting/seeing.

Everything works OK with the exception of the rLoading, the incorrect rows are not being hidden/unhidden when rloading matches 'CFS Loading', nothing happens when changing rLoading between 'CFS Loading' & 'Factory Load'

If I select 'Ocean_EU_to_US for rMode and 'Gdynia to New York' for rLane, then when rLoading = 'CFS Loading then Row C19 should be hidden and row 20 should be visible

Same for Gdynia to Los Angeles
Hamburg to New York
Hamburg to Los Angeles

This is because there are different collection points required depending on CFS or Factory selection in rLoading

Paul_Hossler
09-25-2023, 10:49 AM
Try this

I went back to my prefered way to show all rows and then hide the ones I don't want based on Mode, Lane and Loading since otherwise the show/hide/show, ... gets complicated and I can't keep the logic straight

That way therre's no need for lots of "Range("A22:A25").EntireRow.Hidden = False" through out since all rows show to start with and only the N/A ones based on Mode, Lane, and Loading need to be hidden

I think the logic is complicated enough so I'm trying to keep it simple

I marked adds / changes with <<<<<<<<<<<<<<<<<



If I select 'Ocean_EU_to_US for rMode and 'Gdynia to New York' for rLane, then when rLoading = 'CFS Loading then Row C19 should be hidden and row 20 should be visible

There's no logic for Factory Load in the macro. Is there supposed to be?

Scuba
09-26-2023, 01:50 AM
Hi Paul,

OK so when I select 'Gdynia to New York' then nothing changes when is select either 'CFS Loading' or 'Factory Loading' in rLoading

Maybe I'm not explaining myself clearly here, which if so, I apologise for and thank you for your patience with me.

I going to try and spell it out for you here.

rloading is defaulted to 'Factory Loading' for all lanes to begin with and the cell is hidden for all rLanes except those shown below

rLoading row/cell is only visible for the below mention rMode lanes as its only needs to be changed for those lanes,


if rLane = 'Gdynia to New York' & 'rLoading' = 'Factory Loading' then row 19 is visible & row 20 is hidden.
if rLane = 'Gdynia to New York' & 'rLoading' = 'CFS Loading' then row 19 is hidden & row 20 is visible

This logic is needed for the below lanes as well:


rLane = Gdynia to New York
rLane = Gdynia to Los Angeles
rLane = Hamburg to New York
rLane = Hamburg to Los Angeles

The user can select between 'CFS Loading' or 'Factory Loading' when the above lanes are selected, everything else can remain as is.

I don't need to change anything else as it all works correct, I just need to get the correct line 19 & 20 to hide/unhide based on rLoading selection for the above lanes only.

Hopefully the above is much clearer direction/vision of what I am trying to attain here :)

UPDATE!

I fixed the code to the below and all appears to be working correctly now :)

I can't thank you enough Paul for your help, I've learnt so much in a short space of time, nothing like learning on the job lol

Once again, big thank you, your a star *:bow::thumb:yay


Case "Gdynia to New York" If rLoading.Value = "CFS Loading" Then ' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Range("C19").EntireRow.Hidden = True
Range("C20").EntireRow.Hidden = False
Else
Range("C19").EntireRow.Hidden = False
Range("C20").EntireRow.Hidden = True
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A12:A18").EntireRow.Hidden = True
Range("A21").EntireRow.Hidden = True
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True
End If

Case "Gdynia to Los Angeles"
If rLoading.Value = "CFS Loading" Then ' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Range("C19").EntireRow.Hidden = True
Range("C20").EntireRow.Hidden = False
Else
Range("C19").EntireRow.Hidden = False
Range("C20").EntireRow.Hidden = True
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A12:A18").EntireRow.Hidden = True
Range("A20:A21").EntireRow.Hidden = True
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True
End If

Case "Hamburg to New York"
If rLoading.Value = "CFS Loading" Then ' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Range("C19").EntireRow.Hidden = True
Range("C20").EntireRow.Hidden = False
Else
Range("C19").EntireRow.Hidden = False
Range("C20").EntireRow.Hidden = True
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A12:A18").EntireRow.Hidden = True
Range("A21").EntireRow.Hidden = True
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True
End If

Case "Hamburg to Los Angeles"
If rLoading.Value = "CFS Loading" Then ' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Range("C19").EntireRow.Hidden = True
Range("C20").EntireRow.Hidden = False
Else
Range("C19").EntireRow.Hidden = False
Range("C20").EntireRow.Hidden = True
Range("C8:C10").Value = vbNullString
Range("C11:C17").Value = vbNullString
Range("C19:C21").Value = vbNullString
Range("D23:D25").Value = vbNullString
Range("A6").EntireRow.Hidden = True
Range("A12:A18").EntireRow.Hidden = True
Range("A21").EntireRow.Hidden = True
Range("A33:A76").EntireRow.Hidden = True
If Range("M29") = False Then Rows("33:76").EntireRow.Hidden = True
End If

Regards

Richard.