Código
Public Sub negrita() If rtb_hoja.SelectionFont.Bold = False Then rtb_hoja.SelectionFont = New Font(rtb_hoja.SelectionFont, rtb_hoja.SelectionFont.Style Or FontStyle.Bold) Else rtb_hoja.SelectionFont = New Font(rtb_hoja.SelectionFont, rtb_hoja.SelectionFont.Style - 1) End If End Sub
Cada estilo de fuente (negrita, cursiva, etc) tiene asociado un numero, por ejemplo negrita es 1, cursiva es 2, subrayado es 4. La propiedad "SelectionFont.Style" del RichTextBox devuelve la suma de los estilos que hay en ese momento. Restando el numero del estilo que estoy quitando a los que ya hay consigo mantener los otros, que es lo que queria.