\documentclass[]{article}
\usepackage{tikz}
\newsavebox{\scratchbox}
% \newsavebox{\mybox}
\newcommand{\setmybox}{%
\sbox{\scratchbox}{%
% \sbox{\mybox}{%
\begin{tikzpicture}
\draw (0,0) -- ++(1,0) node{0};
\end{tikzpicture}
}%
}
\setmybox
\begin{document}
% this works only if you set \setmybox after the \begin{document}
\usebox{\scratchbox}
% this works always
% \usebox{\mybox}
\end{document}