صفحه 1 از 3 123 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 24

موضوع: آموزش تهیه یک سند حسابداری ساده

  1. #1


    آخرین بازدید
    2022/12/05
    تاریخ عضویت
    October 2011
    محل سکونت
    مشهد
    نوشته ها
    4,374
    امتیاز
    12614
    سپاس
    4,596
    سپاس شده
    11,990 در 3,203 پست
    سطح اکسل
    70.00 %

    Post آموزش تهیه یک سند حسابداری ساده



    درود

    در این تاپیک نحوه ایجاد یک سند حسابداری ساده قرار داده میشه ، با توجه به اینکه رشته بنده حسابداری نیست امیدوارم دوستان گرامی آقایان ترابی، فیاضی و سرگزی ایرادات احتمالی این آموزش رو اصلاح و راهکار های بهتری نیز ارائه کنند



    بخش اول: مقدمات

    در حسابداری سنتی سند حسابداری(Journal Voucher) برگه ای است که حداقل یک تراکنش مالی(شامل یک طرف بدهکار و یک طرف بستانکار) در آن نوشته می شده است. و چنین مدرکی پس از امضای مرجع ذی صلاح و صدور آن قابل ثبت در دفاتر کل، معین و روزنامه است.
    با استفاده فراگیر از کامپیوتر در ثبت تراکنشهای مالی این دیدگاه نیز به طور کلی تغییر یافته است. سند حسابداری در ثبت رایانه ای رویدادهای مالی، عبارت است از یک فرم که کاربر می تواند یک/چند تراکنش مالی را در آن وارد نماید. هر تراکنش مالی مرکب از دو آرتیکل و هر آرتیکل در بردارنده حداقل یک کد حساب و مبلغ(بدهکار/بستانکار) می باشد به علاوه هر سند مالی الزاما دارای شماره سریال و تاریخ نیز هست.

    حساب چیست؟
    برای اینکه در هر زمان وضعیت مربوط به هر یک از اقلام حسابداری مشخص باشد ، آن قلم و کلیه تغییرات مربوط به آن در یک صفحه یا کارت به طور جداگانه نوشته می شود که به آن حساب می گویند . هر حساب شامل سه بخش می باشد که بخش اول عنوان حساب ، بخش دوم طرف بدهکار و بخش سوم طرف بستانکار است .
    عنوان حساب که مشخص می نماید اطلاعات مندرج در آن حساب متعلق به کدامیک از اقلام دارایی ، بدهی ، حقوق صاحبان سرمایه ، درآمد و هزینه می باشد.

    طرف راست حساب که در اصطلاح حسابداری آن را طرف بدهکار می نامند و طرف چپ حساب که در اصطلاح حسابداری آن را طرف بستانکار می نامند . در اصطلاح حسابداری ثبت رقمی در سمت راست یک حساب را بدهکار کردن و ثبت رقمی در سمت چپ حساب را بستانکار کردن آن حساب می گویند .

    ساده ترین شکل حساب به دلیل شباهتی که با حرف لاتین ( T ) دارد به نام
    " شکل تی " خوانده می شود که یک فرم ابتدایی می باشد و فقط توسط حسابداران به منظور تجزیه و تحلیل مسایل حسابداری و نیز توسط استادان در هنگام تدریس درس حسابداری مورد استفاده قرار می گیرد و الا در واحد های اقتصادی فرمهای کامل چاپی که دارای ستونهای متعدد می باشند به صورت اوراق جداگانه یا دفتر به کار می رود .

    حسابهای موجود در یک موسسه را از جهتی می توان به سه دسته تقسیم نمود :

    حسابهای دائمی
    این حسابها همانطوری که از نامشان پیداست ، دائمی هستند . یعنی ، فقط مربوط به یک دوره مالی نبوده ، مانده آنها به دوره مالی بعد انتقال می یابد . حسابهای ترازنامه ، از نوع حسابهای دائمی می باشند . در پایان هر دوره مالی ، حسابهای دائمی مانده گیری می شوند . سپس مانده های جدید در ترازنامه پایان دوره منعکس گردیده ، به دوره مالی بعد نقل می گردند . به حسابهای دائمی ، حسابهای واقعی نیز گفته می شود .


    حسابهای موقتی
    این حسابها ، که حسابهای اسمی نیز خوانده می شوند ، با پایان یافتن دوره مالی بسته شده ، در نتیجه مانده آنها به دوره مالی بعد انتقال نمی یابد . کلمه موقتی ، توصیف کننده خوبی برای این حسابهاست زیرا آنها فقط در طی یک دوره مالی و به منظور طبقه بندی و محاسبه تغییرات حاصله در حساب حقوق صاحبان سرمایه افتتاح گردیده ، در طی این مدت ، تنها افزایشها را نشان می دهند و نمی توانند کاهشها را نشان دهند و سر انجام در پایان دوره مالی نیز بسته می شوند .
    حسابهای مربوط به صورت سود و زیان جزء حسابهای موقتی می باشند . زیرا همانطوری که گفته شد ، مانده این حسابها ( درآمد فروش ، خرید ، هزینه های مستقیم خرید ، برگشت از فروش و تخفیفات ، برگشت از خرید و تخفیفات ، تخفیفات نقدی خرید و فروش و کلیه هزینه ها ) به حساب خلاصه سود و زیان بسته می شوند . مانده حساب اخیر ، سود یا زیان ویژه دوره مالی است که به حساب سرمایه انتقال می یابد . در نتیجه در پایان دوره مالی ، مانده ای از این حسابها وجود ندارد که به دوره مالی بعد منتقل گردد.

    حسابهای مخلوط
    این حسابها ، همانطوری که از نامشان پیداست ، مخلوطی از حسابهای دائمی و موقتی می باشند . بدین ترتیب ، در پایان دوره مالی ، با استفاده از تعدیلات ، آن قسمت از مانده حساب را که جزء حسابهای موقتی است ( باید به صورت سود و زیان انتقال یابد ، یعنی در محاسبه سود یا زیان ویژه دوره مالی موثر است و به حساب خلاصه سود و زیان بسته می شود ) ، از آن جدا می نمایند و مابقی را که جزء حسابهای دائمی است ، به ترازنامه پایان دوره انتقال می دهند . پیش پرداختهای هزینه ، پیش دریافتهای درآمد از حسابهای مخلوط می باشند .
    ویرایش توسط ~M*E*H*D*I~ : 2020/08/11 در ساعت 19:47




  2.  

  3. #2


    آخرین بازدید
    2022/12/05
    تاریخ عضویت
    October 2011
    محل سکونت
    مشهد
    نوشته ها
    4,374
    امتیاز
    12614
    سپاس
    4,596
    سپاس شده
    11,990 در 3,203 پست
    سطح اکسل
    70.00 %

    داده هایی که برای یک سند حسابداری نیاز داریم




    تاریخ سند: تاریخ ایجاد سند است که یک بار وارد می شود.
    شماره سند: شماره سند بر اساس سند هایی که تاکنون داشته ایم به صورت یک سریال منحصر به فرد وارد می شود
    عنوان حساب: عناوینی مانند خرید، فروش، بدهی، حقوق و...
    بدهکار: با توجه به عنوان حساب ها مشخص می شود و به تعداد عنوان حساب ردیف نیاز دارد
    بستانکار: با توجه به عنوان حساب ها مشخص می شود و به تعداد عنوان حساب ردیف نیاز دارد
    جمع: مجموع دو ستون بدهکار و بستانکار
    شرح سند: توضیحی برای سند است که یکبار به عنوان اطلاعات کلی مطرح می شود
    نام مؤسسه: یکبار مطرح شده و نام مؤسسه مربوطه است
    شرح ردیف: به تعداد عنوان حساب ردیف نیاز دارد و جهت این است که شخص مراجعه کننده به راحتی اطلاعاتی در رابطه با آن حساب بدست آورد
    شماره مدرک: جهت دسترسی راحت به اطلاعات استفاده می شود و به تعداد عنوان حساب ردیف نیاز دارد
    تاریخ مدرک: گاهی ممکن است تاریخ سند با تاریخ مدرک مطابق نباشد لذا ستونی جهت تاریخ مدرک در نظر گرفته می شود
    نام مشتری یا عطف: در یک مؤسسه مشتریان متعددی خرید و فروش انجام می دهند جهت دسترسی راحت تر به جزئیات مدرک برای اسامی مشتریان نیز ستونی در نظر گرفته می شود.
    ردیف: تعداد خط های سند را مشخص می کند
    سال مالی: سالی مربوط به سند
    نام مدیر عامل: جهت درج و پرینت در انتهای حساب قرار میگیرد
    نام تنظیم کننده سند: جهت درج در انتهای سند استفاده می شود







  4. #3


    آخرین بازدید
    2022/12/05
    تاریخ عضویت
    October 2011
    محل سکونت
    مشهد
    نوشته ها
    4,374
    امتیاز
    12614
    سپاس
    4,596
    سپاس شده
    11,990 در 3,203 پست
    سطح اکسل
    70.00 %



    تبدیل جدول اطلاعات به Table

    ابتدا بایستی ردیف اول و عنوان ستون ها را انتخاب و از تب insert گزینه table را انتخاب کنیم به نحوی که نتیجه همانند شکل زیر گردد ،دقت کنید حتما در ابتدا یک خط برای سند انتخاب کنید تا پس از اعمال تنظیمات لازم برای همان یک خط به محض ایجاد یک خط جدید برای سند کلیه تنظیمات اعمال شده به خط جدید منتقل گردد. این نکته از اهمیت زیادی برای ما برخوردار است چون نمیدانیم سند چند خط خواهد داشت.








    دقت کنید گزینه my table has headers تیک خورده باشد.




    بر روی table ایجاد شده کلیک کنید و از تب data گزینه فیلتر را غیر فعال نمایید تا زبانه های فیلتر نمایش داده نشوند.




    لیست کردن عنوان های حساب و نام مشتریان
    در شیت مجزایی عنوان های حساب و نام مشتریان خود را وارد نموده آنهارا از طریق data validation به لیست فروریز تبدیل کنید برای آموزش این بخش به لینک زیر مراجعه کنید


    آموزش تصویری نام گذاری سریع یک محدوده و ایجاد لیست فروریز از طریق دیتا ولیدیشن







    در صورت وارد کردن عنوان و حساب و مشتری مغایر با لیست شما پیغامی تنظیم نمایید تا خطا صادر شود (شکل زیر)




    شماره مدرک و بدهکار و بستانکار
    این سه می بایست عدد باشند و بزرگتر از صفر لذا ابتدا بر روی سلول مربوط به هر کدام کلیک کرده CTRL+1 را فشار دهید و تنظیمات زیر را اعمال کنید.





    سپس از طریق Datevalidation محدوده ای معتبر برای این اعداد تعریف نموده و پیغام خطای مناسب نیز وارد نمایید.










  5. #4


    آخرین بازدید
    2022/12/05
    تاریخ عضویت
    October 2011
    محل سکونت
    مشهد
    نوشته ها
    4,374
    امتیاز
    12614
    سپاس
    4,596
    سپاس شده
    11,990 در 3,203 پست
    سطح اکسل
    70.00 %



    تاریخ سند و مدرک
    برای تاریخ دو کار می توانید انجام دهید
    الف: از طریق format cell
    با فشردن ctrl+1 همانند تصویر می توانید فرمت تاریخ را تعریف نمایید:
    کد PHP:
    0000"/"00"/"00 




    ب : از طریق Datavalidation
    تاریخ سند مربوط به یک روز است اما تاریخ مدرک امکان دارد مرتبط با روز های متعدد باشد. میتوان تاریخ را به صورت اعداد 6 رقمی از 111111 تا 999999 وارد کنیم یعنی همه تاریخ ها با فرمت مثلا 930331 وارد شود که این روش توصیه می شود.







    نکته: می توان سلول هایی که داده در آنها وارد می شود رنگ یا Border متفاوت داشته باشند.
    برای بدهکار و بستانکار اعداد سه رقم سه رقم جدا گردد و ممیز نداشته باشد.
    برای عنوان حساب و عنوان مشتری از طریق Validation list اطلاعات انتقال پیدا کند و با اضافه شدن عناوین لیست ایجاد شده به روز شود.


    نکته : برای نام موسسه و نام مدیر عامل بهتر است تابعی نوشته شود تا عنوان از آن تابع استخراج گردد و در تمامی شیت ها از این تابع استفاده شود و در صورت تغییر به راحتی بتوان با اصلاح تابع تمام اطلاعات به روز آوری شود.
    نام شرکت:

    کد PHP:
    Public Function onvan()
    onvan "شرکت الف"
    End Function 

    نام مدیر عامل:

    کد PHP:
    Public Function name1()
    name1 "مدیر عامل: خانم ب"
    End Function 
    نام تنظیم کننده:

    کد PHP:
    Public Function name2()
    name2 "تنظیم کننده: خانم الف"
    End Function 
    سال مالی:

    کد PHP:
    Public Function salemali()
    salemali "1393"
    End Function 
    ایجاد جمع سند اتوماتیک
    بر روی تیبل ایجاد شده کلیک کنید در نوار ابزار از همانند تصویر بر روی Total Row کلیک کنید:




    و در ردیف اضافه شده گزینه sum را برای بدهکار و بستانکار انتخاب کنید








    از این پس با اضافه شدن هر ردیف جمع کل بدهکار و بستانکار نیز محاسبه می گردد.کلمه جمع را می توانیم خودمان بنویسیم.
    از طریق Name manager نام تیبل را به asnad تغییر می دهیم تا در ادامه از این نام در کد های خود استفاده کنیم.




  6. #5


    آخرین بازدید
    2022/12/05
    تاریخ عضویت
    October 2011
    محل سکونت
    مشهد
    نوشته ها
    4,374
    امتیاز
    12614
    سپاس
    4,596
    سپاس شده
    11,990 در 3,203 پست
    سطح اکسل
    70.00 %


    اضافه کردن یک سطر به تیبل

    در کنار سند یک دکمه گذاشته و آنرا به ماکروی زیر متصل میکنیم
    کد:
    Public Sub addroww() Dim sheet As Worksheet Dim table As ListObject Set sheet = Application.ActiveWorkbook.Worksheets("asnad") Set table = sheet.ListObjects.Item("asnad") table.ListRows.Add End Sub


    در خط زیر asnad نام شیت حاوی سند حسابداری است
    کد:
    Set sheet = Application.ActiveWorkbook.Worksheets("asnad")


    و در خط زیر ansad نام تیبل حاوی سند است
    کد:
    Set table = sheet.ListObjects.Item("asnad")


    حذف سطر انتخاب انتخاب شده

    برای حذف ردیف کد زیر را نوشته و آنرا به دکمه ای جهت حذف سند ارتباط دهید در این کد پس از انتخاب ردیف مورد نظر می توان انرا حذف کرد.
    کد:
    Public Sub dellrow() Dim row1 Dim sheet As Worksheet Dim table As ListObject Set sheet = Application.ActiveWorkbook.Worksheets("asnad") Set table = sheet.ListObjects.Item("asnad") row1 = Application.ActiveCell.Row - table.DataBodyRange.Row + 1 On Error GoTo errhandler table.ListRows(row1).Delete errhandler: If Err.Number = 9 Then UserForm1.Show End If End Sub





    حال اگر دقت کنید مشاهده خواهید کرد کلیه اعتباراتی که در سطر اول از طریق data validation اعمال کرده بودید در سطر های جدید نیز اعمال شده است.
    ایرادی که به هنگام حذف سطر ممکن است با ان روبرو شوید این است که اگر سطر انتخاب شده خارج از تیبل باشد با خطای زیر مواجه می شوید.





    جهت کنترل این خطا کدهای زیر را در نظر گرفته ایم


    کد:
    On Error GoTo errhandler table.ListRows(row1).Delete errhandler: If Err.Number = 9 Then UserForm1.Show End If


    در صورت بروز خطا کد به لیبل errhandler: منتقل می شود و کد خطا مورد بررسی قرار میگیرد اگر کد خطا 9 بود یوزرفرم1 نمایش داده می شود.




    نکته : شما می توانید بجای فرم از msgbox استفاده کنید.




  7. #6


    آخرین بازدید
    2023/04/24
    تاریخ عضویت
    April 2014
    محل سکونت
    كرج
    نوشته ها
    892
    امتیاز
    4526
    سپاس
    2,297
    سپاس شده
    2,910 در 801 پست
    سطح اکسل
    64.00 %

    مهدي جان ممنون از مطلب خوبت ، مخصوصا كه كل كارو با حوصله توضيح دادي .
    من چند تا سوال برام پيش اومد كه جواب بعضياشو هر چي گشتم پيدا نكردم ، گفتم از خودت بپرسم .
    اين عبارت set كه مثل زير آوردي ، دقيقا چيكار ميكنه ؟
    کد PHP:
    Set table sheet.ListObjects.Item("asnad"
    سوال بعديم اينكه ، در آخر تو طراحي فايلت قرار كلا يه دكمه براي حذف سطر سند و يه دكمه هم براي اضافه كردن سطر سند باشه يا براي هر سند قراره يه دكمه گذاشته بشه ؟
    بازم ممنونم


  8. #7


    آخرین بازدید
    2022/12/05
    تاریخ عضویت
    October 2011
    محل سکونت
    مشهد
    نوشته ها
    4,374
    امتیاز
    12614
    سپاس
    4,596
    سپاس شده
    11,990 در 3,203 پست
    سطح اکسل
    70.00 %

    نقل قول نوشته اصلی توسط misammisam نمایش پست ها
    مهدي جان ممنون از مطلب خوبت ، مخصوصا كه كل كارو با حوصله توضيح دادي .
    من چند تا سوال برام پيش اومد كه جواب بعضياشو هر چي گشتم پيدا نكردم ، گفتم از خودت بپرسم .
    اين عبارت set كه مثل زير آوردي ، دقيقا چيكار ميكنه ؟
    کد PHP:
    Set table sheet.ListObjects.Item("asnad"
    سوال بعديم اينكه ، در آخر تو طراحي فايلت قرار كلا يه دكمه براي حذف سطر سند و يه دكمه هم براي اضافه كردن سطر سند باشه يا براي هر سند قراره يه دكمه گذاشته بشه ؟
    بازم ممنونم
    خواهش می کنم میثم جان
    ببین ما تو VBA میتونیم اشیاء رو به متغیر ها نسبت بدیم مواردی مثل سلول ها ، رنج ها ، سطر ها ، ستون ها ، نمودار ها ، تیبل ها، شیت ها و... از این دسته هستند که باید توسط set به متغیر اختصاص داده بشن

    بخش دوم سوالت ، برای ثبت سند ما همین یک تیبل رو ایجاد خواهیم کردم برای اسناد جدید در شیتی به عنوان بک آپ سند رو ذخیره میکنیم تیبل رو پاک میکنیم و سند جدید رو ایجاد میکنیم که در آینده توضیح میدم




  9. #8


    آخرین بازدید
    2022/12/05
    تاریخ عضویت
    October 2011
    محل سکونت
    مشهد
    نوشته ها
    4,374
    امتیاز
    12614
    سپاس
    4,596
    سپاس شده
    11,990 در 3,203 پست
    سطح اکسل
    70.00 %


    اضافه کردن شماره ردیف
    روش اول برای گذاشتن شماره ردیف استفاده از تابع row است





    عدد 4 ناشی از 4 ردیفی بالایی است که در سند مورد استفاده قرار نگرفته است ، ایراد این روش این است که در صورت کم یا زیاد شدن ردیف این ترتیب به هم می ریزد

    روش دوم

    در این روش از تابعی با کد زیر استفاده میکنیم

    کد:
    Public Function rownumber(r1 As Range) Dim sheet As Worksheet Dim table As ListObject Set sheet = Application.ActiveWorkbook.Worksheets("asnad") Set table = sheet.ListObjects.Item("asnad") rownumber = r1.Row - table.DataBodyRange.Row + 1 End Function



    این تابع را در سند به شکل زیر بکار میگیریم:




    در سلول اول ردیف تابع را فراخوانی می کنیم و در متغیر ورودی تابع یکی از ستون های روبروی ردیف اول مانند عنوان حساب را وارد می کنیم
    در این صورت تمام ردیف ها به ترتیب شماره گذاری می شود و با حذف یا اضافه ردیف نیز این ترتیب به هم نمی ریزد




  10. #9


    آخرین بازدید
    2022/12/05
    تاریخ عضویت
    October 2011
    محل سکونت
    مشهد
    نوشته ها
    4,374
    امتیاز
    12614
    سپاس
    4,596
    سپاس شده
    11,990 در 3,203 پست
    سطح اکسل
    70.00 %



    تهیه پشتیبان از سند

    در این نمونه اسناد با همان فرمتی که تهیه شده اند بکاپ گیری می شوند ، در روش دیگر میتوان با فرمت یک دیتابیس از داده ها پشتیبان تهیه کرد به این نحو که برای هر فاکتور فیلدی(ستونی) در نظر گرفته و داده ها را ذخیره کرد
    شیت جدیدی با نام bankasnad ایجاد می کنیم سپس در ماژولی کدهای زیر را می نویسیم
    کد PHP:

    Public  sheet As Worksheetsh As Worksheethesab As Worksheet
    Public  shomaresanad As Integer
    Public Sub backup()
     
    With Application
            
    .ScreenUpdating False
            
    .EnableEvents False
    End With
    Set sheet 
    Application.ActiveWorkbook.Worksheets("asnad")
    Set sh Application.ActiveWorkbook.Worksheets("bankasnad"(
    Set hesab Application.ActiveWorkbook.Worksheets("hesab")
    Dim shsanad As Rangeshsanadback As Range
    Set shsanad 
    sheet.Range("h2")
    Set shsanadback hesab.Range("d1")
    If 
    sheet.Range("sumbed") <> sheet.Range("sumbes"Then
    MsgBox    
    "سند تراز نیست"
    GoTo ExitTheSub:
    End If
    On Error Resume Next
    With sh
        fin 
    = .Cells.Find(shomaresanadSearchOrder:=xlByRowsSearchDirection:=xlPrevious).Row
    End With
    If fin <> "" Then
    MsgBox    
    "این سند قبلا ذخیره شده"
    GoTo ExitTheSub:
    End If
    Dim lrow As Integershlrow As IntegerStartRow
    Dim lcol 
    As Integer
    Dim CopyRng 
    As Range
    On Error 
    GoTo errhandler
    lrow 
    LastRow(sheet(
    shlrow LastRow(s)
    errhandler:
    If 
    Err.Number 9 Then
    UserForm2
    .Show
    End 
    If
    StartRow 2
    Set CopyRng 
    sheet.Range(sheet.Rows(StartRow), sheet.Rows(lrow))
                    If 
    shlrow CopyRng.Rows.Count sh.Rows.Count Then
                        MsgBox  
    "ردیف های موجود در شیت bankasnad کافی نیست"
                        
    GoTo ExitTheSub
                    End 
    If
                   
    CopyRng.copy
                    With sh
    .Cells(shlrow 2"A")
                        .
    PasteSpecial xlPasteValues
                        
    .PasteSpecial xlPasteFormats
                        Application
    .CutCopyMode False
                    End With
        Application
    .GoTo sh.Cells(1)
        
    sh.Columns.AutoFit
        With Application
            
    .ScreenUpdating True
            
    .EnableEvents True
       End With
    ExitTheSub
    :
    Exit 
    Sub
    End Sub 
    در قسمت declaration ماژول متغیرهای زیر را به صورت public تعریف میکنیم دلیل این کار این است که که در طول ماژول به مقادیر این متغیرها نیاز داریم و اگر دامنه (طول عمر) آنها محدود به سابروتین شود برنامه خواسته مارا محقق نخواهد کرد
    کد PHP:

    Public sheet As Worksheetsh As Worksheethesab As Worksheet
    Public shomaresanad As Integer 
    قبلا از عمل پشتیبان گیری باید از تراز بودن سند مطمئن شویم تراز بودن به معنای برابر بودن حاصل جمع مقادیر بدهکار و بستانکار است
    کد PHP:

    If sheet.Range("sumbed") <> sheet.Range("sumbes"Then
    MsgBox    
    "سند تراز نیست"
    GoTo ExitTheSub:
    End If 
    در شیت asnad سلول حاصل جمع بدهکار را sumbed و سلول حاصلجمع بستانکار را sumbes نامیده ایم عدم تساوی این دو به مفهوم تراز نبودن سند است لذا در صورت بروز این خطا کد متوقف شده و تا رفع خطا و تراز کردن سند امکان تهیه پشتیبان نمی دهد.
    مورد بعد اطمینان از این است که سند تکراری نباشد ، قبلا گفتیم هر سند شماره منحصر به فردی دارد لذا قبلا از ذخیره سند این شما در شیت بکاپ مورد جستجو قرار میگیرد و در صورتی که وجود داشت پیغام خطا صادر می شود.

    کد PHP:
    On Error Resume Next
    With sh
        fin 
    = .Cells.Find(shomaresanadSearchOrder:=xlByRowsSearchDirection:=xlPrevious).Row
    End With
    If fin <> "" Then
    MsgBox    
    "این سند قبلا ذخیره شده"
    GoTo ExitTheSub:
    End If 

    شیت asnad را در این کد به متغیر sheet اختصاص داده ایم و شیت backupasnad را به شیت sh


    کد PHP:
    Set sheet Application.ActiveWorkbook.Worksheets("asnad")
    Set sh Application.ActiveWorkbook.Worksheets("bankasnad"


    روال کار این است که کد محدوده سند را در شیت asnad کپی کرده و در شیت backupasnsd پیست میکند لذا متغیر هایی به شرح زیر نیاز داریم
    Lrow : آخرین ردیف بکار رفته در شیت asnad
    Shlrow : آخرین ردیف استفاده شده در شیت backupasnad
    Startrow : ردیفی است که هر سند از آن ردیف شروع شده است در نمونه ما سند از ردیف 2 شروع شده است
    Copyrng : محدوده ای از سند در شیت asnad که باید کپی شود
    کد PHP:

    Dim lrow 
    As Integershlrow As IntegerStartRow
    Dim CopyRng 
    As Range 
    تابع زیر آخرین ردیف بکار رفته شده در هر شیت را تعیین می کند:

    کد PHP:

    Function LastRow(sh As Worksheet)
        
    On Error Resume Next
        LastRow 
    sh.Cells.Find(what:="*"_
                                after
    :=sh.Range("A1"), _
                                Lookat
    :=xlPart_
                                LookIn
    :=xlFormulas_
                                SearchOrder
    :=xlByRows_
                                SearchDirection
    :=xlPrevious_
                                MatchCase
    :=False).Row
        On Error 
    GoTo 0
    End 
    Function 
    برای تعین آخرین ردیف بکار رفته در هر شیت کافیست نام متغیری که به هرشیت اختصاص داده ایم با این تابع فراخوانی نموده و مقدار آن را در ذخیره کنیم
    کد PHP:


    lrow 
    LastRow(sheet)
    shlrow LastRow(sh

    حال در شیت asnad از ردیف 2 تا ردیف lrow انتخاب کرده و به متغیر copyrng اختصاص می دهیم

    کد PHP:

    StartRow 
    2
    Set CopyRng 
    sheet.Range(sheet.Rows(StartRow), sheet.Rows(lrow))
                    If 
    shlrow CopyRng.Rows.Count sh.Rows.Count Then
                        MsgBox  
    "ردیف های موجود در شیت bankasnad کافی نیست"
                        
    GoTo ExitTheSub
                    End 
    If
                   
    CopyRng.copy 
    ممکن است در شیت backupasnad تعداد ردیف های شیتی که استفاده کردیم تمام شده باشد که البته احتمال کمی دارد اما می توان آنرا چک کرد

    کد PHP:


                    
    If shlrow CopyRng.Rows.Count sh.Rows.Count Then
                        MsgBox  
    "ردیف های موجود در شیت bankasnad کافی نیست"
                        
    GoTo ExitTheSub
                    End 
    If 

    حال محدوده copyrng را کپی کرده و بر اساس آخرین ردیف شیت backupasnad پیست می کنیم

    کد PHP:

    CopyRng
    .copy
                    With sh
    .Cells(shlrow 2"A")
                        .
    PasteSpecial xlPasteValues
                        
    .PasteSpecial xlPasteFormats
                        Application
    .CutCopyMode False
                    End With 

    بین هر سند دو ردیف فاصله گذاشته ایم تا تداخلی پیش نیاید.
    نکته: برای اجرای این کد فایل برنامه بایستی فعال باشد یعنی در حالت انتخاب قرارداشته باشد در غیر این صورت خطای زیر صادر می شود:
    کد PHP:

    Subscript out of range 
    (Error 9



    می توان این خطا را کنترل کرد

    کد PHP:

    errhandler
    :
    If 
    Err.Number 9 Then
    UserForm2
    .Show
    End 
    If 

    در یوزرفرم 2 پیغامی مبنی بر فعال کردن فایل صادر می شود اما پیشنهاد ما این است که فایل را فعال کنید و سپس کد را اجرا کنید تا مکررا با این پیغام روبرو نشوید.
    برای اجرای این کد کلیدی به نام تهیه پشتیبان در نظر گرفته و کد را به آن اختصاص می دهیم.








  11. #10


    آخرین بازدید
    2022/12/05
    تاریخ عضویت
    October 2011
    محل سکونت
    مشهد
    نوشته ها
    4,374
    امتیاز
    12614
    سپاس
    4,596
    سپاس شده
    11,990 در 3,203 پست
    سطح اکسل
    70.00 %



    حذف سند


    بعد از پکاب گیری سند جاری می بایست حذف شده و تیبل برای ثبت اطلاعات جدید آماده گردد، برای اینکار کد زیر را می نویسیم:

    کد PHP:
    Sub del()
    Dim shsanad As Rangeshsanadback As Range
     With Application
            
    .ScreenUpdating False
            
    .EnableEvents False
        End With
    Set hesab 
    Application.ActiveWorkbook.Worksheets("hesab")
    Set sheet Application.ActiveWorkbook.Worksheets("asnad")
    Set shsanadback hesab.Range("d1")
    Set shsanad sheet.Range("h2")
    shomaresanad shsanadback.Value
    Range
    ("asnad[[بستانکار]:[عنوان حساب]]").Select
        Selection
    .ClearContents
    shomaresanad 
    shomaresanad 1
    errhandler
    :
    If 
    Err.Number 9 Then
    UserForm2
    .Show
    End 
    If
    shsanadback.Value shomaresanad
    shsanad
    .Value shsanadback.Value
    End Sub 
    گفته شد هر سند شماره سند منحصر به فردی دارد ، قصد داریم این شماره به صورت اتوماتیک ایجاد گردد در شیت حساب سلولی در نظر میگیریم

    کد PHP:
    Set shsanadback hesab.Range("d1"




    عدد یک را در این سلول وارد میکنیم که نمایان گر شماره اولین سند است ، در شیت asnad در سلول h2 شماره سند وارد می شد

    کد PHP:

    Set shsanad 
    sheet.Range("h2"
    در بخش declaration ماژول متغیری از نوع public جهت ذخیره این شماره تعریف کردیم
    کد PHP:

    Public shomaresanad As Integer 
    حال مقدار سلول d1 را به این متغیر نسبت می دهیم
    کد PHP:

    shomaresanad 
    shsanadback.Value 
    محدوده سند را انتخاب نموده و پاک می کنیم
    کد PHP:

    Range
    ("asnad[[بستانکار]:[عنوان حساب]]").Select
        Selection
    .ClearContents 
    یک واحد به شماره سند می افزاییم

    کد PHP:

    shomaresanad 
    shomaresanad 

    مقدار سلول h2 در شیت asnad را برابر با متغیر shomaresanad قرار می دهیم

    کد PHP:
    shsanadback.Value shomaresanad 
    همین مقدار را در شیت hesab و سلول d1 نیز ذخیره می کنیم تا برای سند بعدی مورد استفاده قرار گیرد
    کد PHP:

    shsanad
    .Value shsanadback.Value 

    برای اجرای کد آنرا به کلیدی تحت عنوان پاک کردن سند وصل می کنیم





    پایان

    لطفا دوستان نظرات و پیشنهادات خودشون رو در رابطه با این آموزش مطرح کنند
    فايل هاي پيوست شده فايل هاي پيوست شده





صفحه 1 از 3 123 آخرینآخرین

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

بازدید کنندگان با جستجو های زیر این صفحه را پیدا کرده اند

سند حسابداری

آموزش سند زدن در حسابداری

نحوه سند زدن در حسابداری

سند زدن در حسابداری

نمونه سند حسابداریآموزش ثبت سند حسابداریسند حسابداری در اکسلسندحسابداریآموزش سند زدن حسابداریسند زدنطریقه سند زدن در حسابداریثبت سند حسابداریروش سند زدن در حسابدارینحوه سند زدننحوه ثبت سند حسابداریسند زدن حسابدارینحوه تهیه سند حسابداریسند حسابداريآموزش تهیه یک سند حسابداری سادهنحوه نوشتن سند حسابدارینمونه سند حسابداری در اکسلآموزش ثبت زدن در حسابدارینمونه سند حسابداری دستیثبت اسناد حسابداریاسناد حسابداری

کلمات کلیدی این موضوع

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
  • BB code ها فعال هستند
  • شکلک ها فعال هستند
  • کد [IMG] فعال است
  • کد [VIDEO] فعال است
  • کد HTML غیر فعال است