There seems to be no built-in way to access the frame number of the first and last slide of a part, but you can define the necessary macros \insertpartstartframe
and \insertpartendframe
yourself:
\documentclass{beamer}
% How can I get the first and the last frame of an part in beamer class?
% (http://tex.stackexchange.com/q/73142/3323)
\usepackage{etoolbox}
\makeatletter
\newcount\beamer@partstartframe
\beamer@partstartframe=1
\apptocmd{\beamer@part}{\addtocontents{nav}{\protect\headcommand{%
\protect\beamer@partframes{\the\beamer@partstartframe}{\the\c@framenumber}}}}{}{}
\apptocmd{\beamer@part}{\beamer@partstartframe=\c@framenumber\advance\beamer@partstartframe by1\relax}{}{}
\AtEndDocument{\immediate\write\@auxout{\string\@writefile{nav}%
{\noexpand\headcommand{\noexpand\beamer@partframes{\the\beamer@partstartframe}{\the\c@framenumber}}}}}{}{}
\def\beamer@startframeofpart{1}
\def\beamer@endframeofpart{1}
\def\beamer@partframes#1#2{%
\ifnum\c@framenumber<#1%
\else%
\ifnum\c@framenumber>#2%
\else%
\gdef\beamer@startframeofpart{#1}%
\gdef\beamer@endframeofpart{#2}%
\fi%
\fi%
}
\newcommand\insertpartstartframe{\beamer@startframeofpart}
\newcommand\insertpartendframe{\beamer@endframeofpart}
\makeatother
\setbeamertemplate{footline}{\insertpart: \insertpartstartframe--\insertpartendframe}
\begin{document}
\part{Part 1}
\frame{1\pause 2\pause 3}
\frame{1\pause 2}
\frame{1}
\part{Part 2}
\frame{1\pause 2}
\frame{1\pause 2\pause 3}
\part{Part 3}
\frame{1}
\frame{1\pause 2\pause 3\pause 4}
\end{document}
The code (between \usepackage{etoolbox}
and \makeatother
) is basically the same as the one beamer
uses to access the start and end page of a part, but stores the frame number instead of the page number.