Any way to use F macro with a passed variable?
There is a special type for just this occasion - the __FlashStringHelper type.

void displayMenu(const __FlashStringHelper *txt, byte var) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(txt);
  lcd.setCursor(0, 1);
  lcd.print(var);
}


Note I removed the &amp; from var - you don't want that unless you are passing a complex class or are wanting to modify the contents of var in the function and have it reflected back outside the function.  Passing a reference to a byte (&amp;var) requires two bytes of data - just passing the content of a byte only requires one byte of data.