diff --git a/Marlin/src/gcode/bedlevel/mbl/G29.cpp b/Marlin/src/gcode/bedlevel/mbl/G29.cpp
index d0c1e7e799ae73cbd8e07e8afa4dfe27f6259e17..16a7393e76e923ccf998f8923fe10829846fe907 100644
--- a/Marlin/src/gcode/bedlevel/mbl/G29.cpp
+++ b/Marlin/src/gcode/bedlevel/mbl/G29.cpp
@@ -39,7 +39,7 @@
 #include "../../../module/stepper.h"
 
 // Save 130 bytes with non-duplication of PSTR
-void echo_not_entered() { SERIAL_PROTOCOLLNPGM(" not entered."); }
+inline void echo_not_entered(const char c) { SERIAL_CHAR(c); SERIAL_PROTOCOLLNPGM(" not entered."); }
 
 /**
  * G29: Mesh-based Z probe, probes a grid and produces a
@@ -165,10 +165,8 @@ void GcodeSuite::G29() {
           return;
         }
       }
-      else {
-        SERIAL_CHAR('X'); echo_not_entered();
-        return;
-      }
+      else
+        return echo_not_entered('X');
 
       if (parser.seenval('Y')) {
         py = parser.value_int() - 1;
@@ -178,26 +176,20 @@ void GcodeSuite::G29() {
           return;
         }
       }
-      else {
-        SERIAL_CHAR('Y'); echo_not_entered();
-        return;
-      }
+      else
+        return echo_not_entered('Y');
 
       if (parser.seenval('Z'))
         mbl.z_values[px][py] = parser.value_linear_units();
-      else {
-        SERIAL_CHAR('Z'); echo_not_entered();
-        return;
-      }
+      else
+        return echo_not_entered('Z');
       break;
 
     case MeshSetZOffset:
       if (parser.seenval('Z'))
         mbl.z_offset = parser.value_linear_units();
-      else {
-        SERIAL_CHAR('Z'); echo_not_entered();
-        return;
-      }
+      else
+        return echo_not_entered('Z');
       break;
 
     case MeshReset: