Consider leveraging this Apps Script for the button to populate Balance History.
function MoveToBalanceHistory() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var balanceHistorySheet = spreadsheet.getSheetByName('Balance History');
// get number of rows with a valid date
var dates = sheet.getRange('B3:B').getValues();
var numRows = dates.findIndex((row) => !row[0]);
// Insert numRows at the top of Balance History sheet
balanceHistorySheet.insertRowsBefore(balanceHistorySheet.getRange('2:2').getRow(), numRows);
// Copy Account balances to Balance History sheet
sheet.getRange(3, 1, numRows, 15).copyTo(balanceHistorySheet.getRange('A2:O2'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL);
balanceHistorySheet.activate();
}