Here is a multiplication table generator function that is a bit smarter. And, its also fun to see what happens when you place different number forms in there. For example, if you pass in the first number with a decimal point only all output shall have a decimal. This does not hold if you pass in the second number with a decimal point. Also, be careful when passing exponents. You just might end up with a crazy large table.
While a utility function probably exists somewhere in M, yet I do not know what such function is called. While I welcome enhancements and optimizations, the formatting is my own personal style so please feel free to ignore it in favor of your own conventions.
Edit; Now handles inverted ranges.
genMultiTable[low_, high_] := Module[
{x , y, l, h, s, lh, hh},
(* Later expand functionality by handling options *)
(*
Needs two vars otherwise the headings do not work *)
s = If[high < low
, -1
, 1
];
l = low;
h = high;
x = y = low;
lh = hh = Range[low, high, s];
Table[x*y, {x, l, h, s}, {y, l, h, s}]
// TableForm[# , TableAlignments -> Right,
TableHeadings -> {lh, hh} ] &
// Framed[#, FrameStyle -> {Thick, Blue} ] &
]