Melt the butter in a large nonstick frying pan over medium heat until foaming.
Add the bell pepper and onion, season with salt and pepper, and cook, stirring occasionally, until softened, about 5 minutes.
Meanwhile, place the eggs, milk, and measured salt and pepper in a large bowl and whisk until the eggs are broken up and the mixture is thoroughly combined; set aside.
Add the ham to the pan and cook, stirring occasionally, until warmed through, about 2 minutes.
Reduce the heat to medium low and pour in the egg mixture. Let sit undisturbed until the eggs just start to set around the edges, about 1 to 2 minutes. Using a rubber spatula, push the eggs from the edges into the center. Let sit again until the edges start to set, then spread back into an even layer. Repeat, pushing the eggs from the edges into the center every 30 seconds until almost set, for a total cooking time of about 4 to 5 minutes. (The top of the eggs should still be slightly wet.) Remove the pan from the heat.
Sprinkle in the cheese and gently fold until melted. Serve immediately.