diff --git a/Marlin/src/lcd/dwin/dwin.cpp b/Marlin/src/lcd/dwin/dwin.cpp
index 8cd7af15747..e527c8dba02 100644
--- a/Marlin/src/lcd/dwin/dwin.cpp
+++ b/Marlin/src/lcd/dwin/dwin.cpp
@@ -65,8 +65,6 @@
   #include "../../module/probe.h"
 #endif
 
-#include "../../libs/buzzer.h"
-
 #ifndef MACHINE_SIZE
   #define MACHINE_SIZE "220x220x250"
 #endif
@@ -1065,36 +1063,40 @@ void HMI_Move_Z(void) {
   }
 }
 
-void HMI_Move_E(void) {
-  ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
-  if (encoder_diffState != ENCODER_DIFF_NO) {
-    if (encoder_diffState == ENCODER_DIFF_CW) {
-      HMI_ValueStruct.Move_E_scale += EncoderRate.encoderMoveValue;
-    }
-    else if (encoder_diffState == ENCODER_DIFF_CCW) {
-      HMI_ValueStruct.Move_E_scale -= EncoderRate.encoderMoveValue;
-    }
-    else if (encoder_diffState == ENCODER_DIFF_ENTER) {
-      checkkey = AxisMove;
-      EncoderRate.encoderRateEnabled = 0;
-      last_E_scale = HMI_ValueStruct.Move_E_scale;
-      show_plus_or_minus(font8x16, Background_black, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
-      if (!planner.is_full()) {
-        planner.synchronize(); // Wait for planner moves to finish!
-        planner.buffer_line(current_position, MMM_TO_MMS(FEEDRATE_E), active_extruder);
+#if EXTRUDERS
+
+  void HMI_Move_E(void) {
+    ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
+    if (encoder_diffState != ENCODER_DIFF_NO) {
+      if (encoder_diffState == ENCODER_DIFF_CW) {
+        HMI_ValueStruct.Move_E_scale += EncoderRate.encoderMoveValue;
       }
+      else if (encoder_diffState == ENCODER_DIFF_CCW) {
+        HMI_ValueStruct.Move_E_scale -= EncoderRate.encoderMoveValue;
+      }
+      else if (encoder_diffState == ENCODER_DIFF_ENTER) {
+        checkkey = AxisMove;
+        EncoderRate.encoderRateEnabled = 0;
+        last_E_scale = HMI_ValueStruct.Move_E_scale;
+        show_plus_or_minus(font8x16, Background_black, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
+        if (!planner.is_full()) {
+          planner.synchronize(); // Wait for planner moves to finish!
+          planner.buffer_line(current_position, MMM_TO_MMS(FEEDRATE_E), active_extruder);
+        }
+        DWIN_UpdateLCD();
+        return;
+      }
+      if ((HMI_ValueStruct.Move_E_scale - last_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT)
+        HMI_ValueStruct.Move_E_scale = last_E_scale + (EXTRUDE_MAXLENGTH) * MINUNITMULT;
+      else if ((last_E_scale - HMI_ValueStruct.Move_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT)
+        HMI_ValueStruct.Move_E_scale = last_E_scale - (EXTRUDE_MAXLENGTH) * MINUNITMULT;
+      current_position.e = HMI_ValueStruct.Move_E_scale / 10;
+      show_plus_or_minus(font8x16, Select_Color, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
       DWIN_UpdateLCD();
-      return;
     }
-    if ((HMI_ValueStruct.Move_E_scale - last_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT)
-      HMI_ValueStruct.Move_E_scale = last_E_scale + (EXTRUDE_MAXLENGTH) * MINUNITMULT;
-    else if ((last_E_scale - HMI_ValueStruct.Move_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT)
-      HMI_ValueStruct.Move_E_scale = last_E_scale - (EXTRUDE_MAXLENGTH) * MINUNITMULT;
-    current_position.e = HMI_ValueStruct.Move_E_scale / 10;
-    show_plus_or_minus(font8x16, Select_Color, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale);
-    DWIN_UpdateLCD();
   }
-}
+
+#endif
 
 void HMI_Zoffset(void) {
   ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze();
@@ -2096,7 +2098,9 @@ inline void Draw_Move_Menu() {
     DWIN_Frame_AreaCopy(1, 58, 118, 271 - 165, 479 - 347, LBLX, MBASE(1));
     DWIN_Frame_AreaCopy(1, 109, 118, 271 - 114, 479 - 347, LBLX, MBASE(2));
     DWIN_Frame_AreaCopy(1, 160, 118, 271 - 62, 479 - 347, LBLX, MBASE(3));
-    DWIN_Frame_AreaCopy(1, 212, 118, 271 - 18, 479 - 348, LBLX, MBASE(4));
+    #if HAS_HOTEND
+      DWIN_Frame_AreaCopy(1, 212, 118, 271 - 18, 479 - 348, LBLX, MBASE(4));
+    #endif
   }
   else {
     #ifdef USE_STRING_HEADINGS
@@ -2107,7 +2111,9 @@ inline void Draw_Move_Menu() {
     draw_move_en(MBASE(1)); say_x(33 + 3, MBASE(1));                    // "Move X"
     draw_move_en(MBASE(2)); say_y(33 + 3, MBASE(2));                    // "Move Y"
     draw_move_en(MBASE(3)); say_z(33 + 3, MBASE(3));                    // "Move Z"
-    DWIN_Frame_AreaCopy(1, 123, 192, 271 - 95, 479 - 277, LBLX, MBASE(4)); // "Extruder"
+    #if HAS_HOTEND
+      DWIN_Frame_AreaCopy(1, 123, 192, 271 - 95, 479 - 277, LBLX, MBASE(4)); // "Extruder"
+    #endif
   }
 
   Draw_Back_First(select_axis.now == 0);
@@ -2116,6 +2122,18 @@ inline void Draw_Move_Menu() {
   LOOP_L_N(i, MROWS) Draw_Menu_Line(i + 1, ICON_MoveX + i);
 }
 
+#include "../../libs/buzzer.h"
+
+void HMI_AudioFeedback(const bool success=true) {
+  if (success) {
+    buzzer.tone(100, 659);
+    buzzer.tone(10, 0);
+    buzzer.tone(100, 698);
+  }
+  else
+    buzzer.tone(40, 440);
+}
+
 /* Prepare */
 void HMI_Prepare(void) {
   ENCODER_DiffState encoder_diffState = get_encoder_state();
@@ -2202,8 +2220,7 @@ void HMI_Prepare(void) {
         #else
           // Apply workspace offset, making the current position 0,0,0
           queue.inject_P(PSTR("G92 X0 Y0 Z0"));
-          buzzer.tone(100, 659);
-          buzzer.tone(100, 698);
+          HMI_AudioFeedback();
         #endif
         break;
       case 5: // PLA preheat
@@ -2347,27 +2364,17 @@ void HMI_Control(void) {
         select_motion.reset();
         Draw_Motion_Menu();
         break;
-      case 3: // write EEPROM
-        if (settings.save()) {
-          buzzer.tone(100, 659);
-          buzzer.tone(100, 698);
-        }
-        else
-          buzzer.tone(20, 440);
-        break;
-      case 4: // read EEPROM
-        if (settings.load()) {
-          buzzer.tone(100, 659);
-          buzzer.tone(100, 698);
-        }
-        else {buzzer.tone(20, 440);}
-        break;
+      case 3: { // write EEPROM
+        const bool success = settings.save();
+        HMI_AudioFeedback(success);
+      } break;
+      case 4: { // read EEPROM
+        const bool success = settings.load();
+        HMI_AudioFeedback(success);
+      } break;
       case 5: // resume EEPROM
         settings.reset();
-        #if HAS_BUZZER
-          buzzer.tone(100, 659);
-          buzzer.tone(100, 698);
-        #endif
+        HMI_AudioFeedback();
         break;
       case 6: // info
         checkkey = Info;
@@ -3006,14 +3013,10 @@ void HMI_PLAPreheatSetting(void) {
             EncoderRate.encoderRateEnabled = 1;
             break;
         #endif
-      case 4: // save PLA configuration
-        if (settings.save()) {
-          buzzer.tone(100, 659);
-          buzzer.tone(100, 698);
-        }
-        else
-          buzzer.tone(20, 440);
-        break;
+      case 4: { // save PLA configuration
+        const bool success = settings.save();
+        HMI_AudioFeedback(success);
+      } break;
       default: break;
     }
   }
@@ -3064,14 +3067,10 @@ void HMI_ABSPreheatSetting(void) {
             EncoderRate.encoderRateEnabled = 1;
             break;
         #endif
-      case 4: // save PLA configuration
-        if (settings.save()) {
-          buzzer.tone(100, 659);
-          buzzer.tone(100, 698);
-        }
-        else
-          buzzer.tone(20, 440);
-        break;
+      case 4: { // save ABS configuration
+        const bool success = settings.save();
+        HMI_AudioFeedback(success);
+      } break;
       default:
         break;
     }
@@ -3496,11 +3495,11 @@ void DWIN_HandleScreen(void) {
     case Move_X:                HMI_Move_X(); break;
     case Move_Y:                HMI_Move_Y(); break;
     case Move_Z:                HMI_Move_Z(); break;
-    case Extruder:              HMI_Move_E(); break;
-    case Homeoffset:            HMI_Zoffset(); break;
     #if HAS_HOTEND
+      case Extruder:            HMI_Move_E(); break;
       case ETemp:               HMI_ETemp(); break;
     #endif
+    case Homeoffset:            HMI_Zoffset(); break;
     #if HAS_HEATED_BED
       case BedTemp:             HMI_BedTemp(); break;
     #endif
diff --git a/Marlin/src/lcd/dwin/dwin.h b/Marlin/src/lcd/dwin/dwin.h
index 2d24d2504e7..cddc582fc2b 100644
--- a/Marlin/src/lcd/dwin/dwin.h
+++ b/Marlin/src/lcd/dwin/dwin.h
@@ -68,11 +68,11 @@ enum processID {
   Move_X,
   Move_Y,
   Move_Z,
-  Extruder,
-  Homeoffset,
   #if HAS_HOTEND
+    Extruder,
     ETemp,
   #endif
+  Homeoffset,
   #if HAS_HEATED_BED
     BedTemp,
   #endif