diff --git a/nodequeue.module b/nodequeue.module
index c28f872..6eb6a58 100644
--- a/nodequeue.module
+++ b/nodequeue.module
@@ -1581,8 +1581,9 @@ function nodequeue_node_and_queue_access($node, $queue, $subqueue = NULL) {
 }
 
 function nodequeue_node_tab_access($node) {
-  if (!user_access('manipulate queues')) {
-    //For performance reasons: If the user can't manipulate queues, there is no reason to run the rest of these queries.
+  if (!variable_get('nodequeue_use_tab', 1) || !user_access('manipulate queues')) {
+    // For performance reasons: If the menu tab is disabled or the user can't
+    // manipulate queues, there is no reason to run the rest of these queries.
     return FALSE;
   }
   $queues = nodequeue_load_queues_by_type($node->type, 'tab');
@@ -1591,12 +1592,13 @@ function nodequeue_node_tab_access($node) {
     return FALSE;
   }
   foreach ($subqueues as $subqueue) {
-    if (!nodequeue_api_subqueue_access($subqueue)) {
-      unset($subqueues[$subqueue->sqid]);
+    if (nodequeue_api_subqueue_access($subqueue)) {
+      return TRUE;
     }
   }
-  return (variable_get('nodequeue_use_tab', 1) && !empty($subqueues));
+  return FALSE;
 }
+
 /**
  * Return TRUE if $user can queue(s) for this node.
  *
