Lean 56956 اشتراک گذاری ارسال شده در 7 تیر، ۱۳۹۳ درود در این تایپیک نحوه ایجاد یک سند حسابداری ساده قرار داده میشه ، با توجه به اینکه رشته بنده حسابداری نیست امیدوارم دوستان گرامی ایرادات احتمالی این آموزش رو اصلاح و راهکار های بهتری نیز ارائه کنند بخش اول: مقدمات در حسابداری سنتی سند حسابداری(Journal Voucher) برگه ای است که حداقل یک تراکنش مالی(شامل یک طرف بدهکار و یک طرف بستانکار) در آن نوشته می شده است. و چنین مدرکی پس از امضای مرجع ذی صلاح و صدور آن قابل ثبت در دفاتر کل، معین و روزنامه است. با استفاده فراگیر از کامپیوتر در ثبت تراکنشهای مالی این دیدگاه نیز به طور کلی تغییر یافته است. سند حسابداری در ثبت رایانه ای رویدادهای مالی، عبارت است از یک فرم که کاربر می تواند یک/چند تراکنش مالی را در آن وارد نماید. هر تراکنش مالی مرکب از دو آرتیکل و هر آرتیکل در بردارنده حداقل یک کد حساب و مبلغ(بدهکار/بستانکار) می باشد به علاوه هر سند مالی الزاما دارای شماره سریال و تاریخ نیز هست. حساب چیست؟ برای اینکه در هر زمان وضعیت مربوط به هر یک از اقلام حسابداری مشخص باشد ، آن قلم و کلیه تغییرات مربوط به آن در یک صفحه یا کارت به طور جداگانه نوشته می شود که به آن حساب می گویند . هر حساب شامل سه بخش می باشد که بخش اول عنوان حساب ، بخش دوم طرف بدهکار و بخش سوم طرف بستانکار است . عنوان حساب که مشخص می نماید اطلاعات مندرج در آن حساب متعلق به کدامیک از اقلام دارایی ، بدهی ، حقوق صاحبان سرمایه ، درآمد و هزینه می باشد. طرف راست حساب که در اصطلاح حسابداری آن را طرف بدهکار می نامند و طرف چپ حساب که در اصطلاح حسابداری آن را طرف بستانکار می نامند . در اصطلاح حسابداری ثبت رقمی در سمت راست یک حساب را بدهکار کردن و ثبت رقمی در سمت چپ حساب را بستانکار کردن آن حساب می گویند . ساده ترین شکل حساب به دلیل شباهتی که با حرف لاتین ( T ) دارد به نام " شکل تی " خوانده می شود که یک فرم ابتدایی می باشد و فقط توسط حسابداران به منظور تجزیه و تحلیل مسایل حسابداری و نیز توسط استادان در هنگام تدریس درس حسابداری مورد استفاده قرار می گیرد و الا در واحد های اقتصادی فرمهای کامل چاپی که دارای ستونهای متعدد می باشند به صورت اوراق جداگانه یا دفتر به کار می رود . حسابهای موجود در یک موسسه را از جهتی می توان به سه دسته تقسیم نمود : حسابهای دائمی این حسابها همانطوری که از نامشان پیداست ، دائمی هستند . یعنی ، فقط مربوط به یک دوره مالی نبوده ، مانده آنها به دوره مالی بعد انتقال می یابد . حسابهای ترازنامه ، از نوع حسابهای دائمی می باشند . در پایان هر دوره مالی ، حسابهای دائمی مانده گیری می شوند . سپس مانده های جدید در ترازنامه پایان دوره منعکس گردیده ، به دوره مالی بعد نقل می گردند . به حسابهای دائمی ، حسابهای واقعی نیز گفته می شود . حسابهای موقتی این حسابها ، که حسابهای اسمی نیز خوانده می شوند ، با پایان یافتن دوره مالی بسته شده ، در نتیجه مانده آنها به دوره مالی بعد انتقال نمی یابد . کلمه موقتی ، توصیف کننده خوبی برای این حسابهاست زیرا آنها فقط در طی یک دوره مالی و به منظور طبقه بندی و محاسبه تغییرات حاصله در حساب حقوق صاحبان سرمایه افتتاح گردیده ، در طی این مدت ، تنها افزایشها را نشان می دهند و نمی توانند کاهشها را نشان دهند و سر انجام در پایان دوره مالی نیز بسته می شوند . حسابهای مربوط به صورت سود و زیان جزء حسابهای موقتی می باشند . زیرا همانطوری که گفته شد ، مانده این حسابها ( درآمد فروش ، خرید ، هزینه های مستقیم خرید ، برگشت از فروش و تخفیفات ، برگشت از خرید و تخفیفات ، تخفیفات نقدی خرید و فروش و کلیه هزینه ها ) به حساب خلاصه سود و زیان بسته می شوند . مانده حساب اخیر ، سود یا زیان ویژه دوره مالی است که به حساب سرمایه انتقال می یابد . در نتیجه در پایان دوره مالی ، مانده ای از این حسابها وجود ندارد که به دوره مالی بعد منتقل گردد. حسابهای مخلوط این حسابها ، همانطوری که از نامشان پیداست ، مخلوطی از حسابهای دائمی و موقتی می باشند . بدین ترتیب ، در پایان دوره مالی ، با استفاده از تعدیلات ، آن قسمت از مانده حساب را که جزء حسابهای موقتی است ( باید به صورت سود و زیان انتقال یابد ، یعنی در محاسبه سود یا زیان ویژه دوره مالی موثر است و به حساب خلاصه سود و زیان بسته می شود ) ، از آن جدا می نمایند و مابقی را که جزء حسابهای دائمی است ، به ترازنامه پایان دوره انتقال می دهند . پیش پرداختهای هزینه ، پیش دریافتهای درآمد از حسابهای مخلوط می باشند . 7 نقل قول لینک به دیدگاه
Lean 56956 مالک اشتراک گذاری ارسال شده در 8 تیر، ۱۳۹۳ داده هایی که برای یک سند حسابداری نیاز داریم تاریخ سند: تاریخ ایجاد سند است که یک بار وارد می شود. شماره سند: شماره سند بر اساس سند هایی که تاکنون داشته ایم به صورت یک سریال منحصر به فرد وارد می شود عنوان حساب: عناوینی مانند خرید، فروش، بدهی، حقوق و... بدهکار: با توجه به عنوان حساب ها مشخص می شود و به تعداد عنوان حساب ردیف نیاز دارد بستانکار: با توجه به عنوان حساب ها مشخص می شود و به تعداد عنوان حساب ردیف نیاز دارد جمع: مجموع دو ستون بدهکار و بستانکار شرح سند: توضیحی برای سند است که یکبار به عنوان اطلاعات کلی مطرح می شود نام مؤسسه: یکبار مطرح شده و نام مؤسسه مربوطه است شرح ردیف: به تعداد عنوان حساب ردیف نیاز دارد و جهت این است که شخص مراجعه کننده به راحتی اطلاعاتی در رابطه با آن حساب بدست آورد شماره مدرک: جهت دسترسی راحت به اطلاعات استفاده می شود و به تعداد عنوان حساب ردیف نیاز دارد تاریخ مدرک: گاهی ممکن است تاریخ سند با تاریخ مدرک مطابق نباشد لذا ستونی جهت تاریخ مدرک در نظر گرفته می شود نام مشتری یا عطف: در یک مؤسسه مشتریان متعددی خرید و فروش انجام می دهند جهت دسترسی راحت تر به جزئیات مدرک برای اسامی مشتریان نیز ستونی در نظر گرفته می شود. ردیف: تعداد خط های سند را مشخص می کند سال مالی: سالی مربوط به سند نام مدیر عامل: جهت درج و پرینت در انتهای حساب قرار میگیرد نام تنظیم کننده سند: جهت درج در انتهای سند استفاده می شود [TABLE=class: ncode_imageresizer_warning, width: 800][TR] [TD=class: td2][/TD] [/TR] [/TABLE] 6 نقل قول لینک به دیدگاه
Lean 56956 مالک اشتراک گذاری ارسال شده در 8 تیر، ۱۳۹۳ [TABLE=class: ncode_imageresizer_warning, width: 800][TR] [TD=class: td2][/TD] [/TR] [/TABLE] تبدیل جدول اطلاعات به Table ابتدا بایستی ردیف اول و عنوان ستون ها را انتخاب و از تب insert گزینه table را انتخاب کنیم به نحوی که نتیجه همانند شکل زیر گردد ،دقت کنید حتما در ابتدا یک خط برای سند انتخاب کنید تا پس از اعمال تنظیمات لازم برای همان یک خط به محض ایجاد یک خط جدید برای سند کلیه تنظیمات اعمال شده به خط جدید منتقل گردد. این نکته از اهمیت زیادی برای ما برخوردار است چون نمیدانیم سند چند خط خواهد داشت. [TABLE=class: ncode_imageresizer_warning, width: 800] [TR] [TD=class: td2][/TD] [/TR] [/TABLE] دقت کنید گزینه my table has headers تیک خورده باشد. [TABLE=class: ncode_imageresizer_warning, width: 800] [TR] [TD=class: td2][/TD] [/TR] [/TABLE] بر روی table ایجاد شده کلیک کنید و از تب data گزینه فیلتر را غیر فعال نمایید تا زبانه های فیلتر نمایش داده نشوند. لیست کردن عنوان های حساب و نام مشتریان در شیت مجزایی عنوان های حساب و نام مشتریان خود را وارد نموده آنهارا از طریق data validation به لیست فروریز تبدیل کنید برای آموزش این بخش به لینک زیر مراجعه کنید آموزش تصویری نام گذاری سریع یک محدوده و ایجاد لیست فروریز از طریق دیتا ولیدیشن در صورت وارد کردن عنوان و حساب و مشتری مغایر با لیست شما پیغامی تنظیم نمایید تا خطا صادر شود (شکل زیر) شماره مدرک و بدهکار و بستانکار این سه می بایست عدد باشند و بزرگتر از صفر لذا ابتدا بر روی سلول مربوط به هر کدام کلیک کرده CTRL+1 را فشار دهید و تنظیمات زیر را اعمال کنید. سپس از طریق Datevalidation محدوده ای معتبر برای این اعداد تعریف نموده و پیغام خطای مناسب نیز وارد نمایید. 4 نقل قول لینک به دیدگاه
Lean 56956 مالک اشتراک گذاری ارسال شده در 9 تیر، ۱۳۹۳ تاریخ سند و مدرک برای تاریخ دو کار می توانید انجام دهید الف: از طریق format cell با فشردن ctrl+1 همانند تصویر می توانید فرمت تاریخ را تعریف نمایید: 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 تغییر می دهیم تا در ادامه از این نام در کد های خود استفاده کنیم. 5 نقل قول لینک به دیدگاه
Lean 56956 مالک اشتراک گذاری ارسال شده در 11 تیر، ۱۳۹۳ اضافه کردن یک سطر به تیبل در کنار سند یک دکمه گذاشته و آنرا به ماکروی زیر متصل میکنیم 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 [TABLE=class: ncode_imageresizer_warning, width: 800] [TR] [TD=class: td1, width: 20][/TD] [TD=class: td2][/TD] [/TR] [/TABLE] حال اگر دقت کنید مشاهده خواهید کرد کلیه اعتباراتی که در سطر اول از طریق data validation اعمال کرده بودید در سطر های جدید نیز اعمال شده است. ایرادی که به هنگام حذف سطر ممکن است با ان روبرو شوید این است که اگر سطر انتخاب شده خارج از تیبل باشد با خطای زیر مواجه می شوید. جهت کنترل این خطا کدهای زیر را در نظر گرفته ایم کد: On Error GoTo errhandler table.ListRows(row1).Delete errhandler: If Err.Number = 9 Then UserForm1.Show End If در صورت بروز خطا کد به لیبل errhandler: منتقل می شود و کد خطا مورد بررسی قرار میگیرد اگر کد خطا 9 بود یوزرفرم1 نمایش داده می شود. نکته : شما می توانید بجای فرم از msgbox استفاده کنید. 4 نقل قول لینک به دیدگاه
Lean 56956 مالک اشتراک گذاری ارسال شده در 16 تیر، ۱۳۹۳ اضافه کردن شماره ردیف روش اول برای گذاشتن شماره ردیف استفاده از تابع 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 این تابع را در سند به شکل زیر بکار میگیریم: در سلول اول ردیف تابع را فراخوانی می کنیم و در متغیر ورودی تابع یکی از ستون های روبروی ردیف اول مانند عنوان حساب را وارد می کنیم در این صورت تمام ردیف ها به ترتیب شماره گذاری می شود و با حذف یا اضافه ردیف نیز این ترتیب به هم نمی ریزد 4 نقل قول لینک به دیدگاه
Lean 56956 مالک اشتراک گذاری ارسال شده در 18 تیر، ۱۳۹۳ اضافه کردن شماره ردیف روش اول برای گذاشتن شماره ردیف استفاده از تابع 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 این تابع را در سند به شکل زیر بکار میگیریم: در سلول اول ردیف تابع را فراخوانی می کنیم و در متغیر ورودی تابع یکی از ستون های روبروی ردیف اول مانند عنوان حساب را وارد می کنیم در این صورت تمام ردیف ها به ترتیب شماره گذاری می شود و با حذف یا اضافه ردیف نیز این ترتیب به هم نمی ریزد 3 نقل قول لینک به دیدگاه
Lean 56956 مالک اشتراک گذاری ارسال شده در 19 تیر، ۱۳۹۳ تهیه پشتیبان از سند در این نمونه اسناد با همان فرمتی که تهیه شده اند بکاپ گیری می شوند ، در روش دیگر میتوان با فرمت یک دیتابیس از داده ها پشتیبان تهیه کرد به این نحو که برای هر فاکتور فیلدی(ستونی) در نظر گرفته و داده ها را ذخیره کرد شیت جدیدی با نام bankasnad ایجاد می کنیم سپس در ماژولی کدهای زیر را می نویسیم کد PHP: Public sheet As Worksheet, sh As Worksheet, hesab 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 Range, shsanadback 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(shomaresanad, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row End With If fin <> "" Then MsgBox "این سند قبلا ذخیره شده" GoTo ExitTheSub: End If Dim lrow As Integer, shlrow As Integer, StartRow 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 Worksheet, sh As Worksheet, hesab 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(shomaresanad, SearchOrder:=xlByRows, SearchDirection:=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 Integer, shlrow As Integer, StartRow 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 پیغامی مبنی بر فعال کردن فایل صادر می شود اما پیشنهاد ما این است که فایل را فعال کنید و سپس کد را اجرا کنید تا مکررا با این پیغام روبرو نشوید. برای اجرای این کد کلیدی به نام تهیه پشتیبان در نظر گرفته و کد را به آن اختصاص می دهیم. 2 نقل قول لینک به دیدگاه
Lean 56956 مالک اشتراک گذاری ارسال شده در 21 تیر، ۱۳۹۳ حذف سند بعد از پکاب گیری سند جاری می بایست حذف شده و تیبل برای ثبت اطلاعات جدید آماده گردد، برای اینکار کد زیر را می نویسیم: کد PHP: Sub del() Dim shsanad As Range, shsanadback 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 + 1 مقدار سلول h2 در شیت asnad را برابر با متغیر shomaresanad قرار می دهیم کد PHP: shsanadback.Value = shomaresanad همین مقدار را در شیت hesab و سلول d1 نیز ذخیره می کنیم تا برای سند بعدی مورد استفاده قرار گیرد کد PHP: shsanad.Value = shsanadback.Value برای اجرای کد آنرا به کلیدی تحت عنوان پاک کردن سند وصل می کنیم پایان دانلود فایل مربوطه 1 نقل قول لینک به دیدگاه
ارسال های توصیه شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .