A join would be better assuming that one table is the "main" table. For example, if all records will exist in tbl_Receipt then do something like this:
For example:
SELECT r.VoucherNo, r.Credit, v.Debit
FROM tbl_Receipt r
LEFT JOIN tbl_Voucher v ON r.ID = v.ID
Or, you could wrap your existing SQL into a SELECT statement:
SELECT x.VoucerhNo, x.VoucherName, SUM(x.Debit), SUM(x.Credit)
FROM (
SELECT VoucherNo,VoucherName,Debit, NULL as Credit
FROM tbl_Voucher
UNION ALL
SELECT ReceiptNo,ReceiptName,Credit,NULL as Debit
FROM tbl_Receipt
) x
GROUP BY x.VoucherNo, x.VoucherName
The join will likely be a better approach.