oosta Excel اوستا اکسل

فاز یک --> فلوچارت

oosta Excel اوستا اکسل

فاز یک --> فلوچارت

oosta Excel اوستا اکسل

در این سایت ما سعی داریم همه چیز درباره برنامه سازی و کار با محیط های مختلف اکسل داشته باشیم
ما از آموزش فلوچارت شروع کردیم که مبنا و مبانی اولیه است.

فلوچارت ها معمولا با جواب هستند
در مسایل و فلوچارت هایی که جواب ندارند می توانید مشارکت نمایید.

لینک گروه پرسش و پاسخ در تلگرام:
https://t.me/joinchat/CCrOQRL0g-iG3tIeTxPmPQ

۹ مطلب با موضوع «برنامه نویسی :: VBA اکسل» ثبت شده است


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

این برنامه تا 702 ستون اول در اکسل نوشته شده است.

برای سفارش کامل با آیدی تیم اوستا اکسل با نام

 @Jalil_Abbasi 

در تلگرام تماس بگیرید.


Function charCol(num As Integer) As String

    ' one char  A_Z

    If num <= 26 Then

        charCol = Chr(64 + num)

    Else

        ' two char AA_ZZ

        If num <= 26 Then

            charCol = IIf(num Mod 26 = 0, _

            Chr(Int(64 + (num / 26) - 1)), _

            Chr(Int(64 + num / 26))) & _

            IIf(num Mod 26 = 0, Chr(64 + 26), _

            Chr(64 + num Mod 26))

        End If

    End If

End Function

جلیل عباسی سیوکی
۲۲ خرداد ۹۷ ، ۲۰:۰۱ ۰ نظر

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

برای دریافت این برنامه و سفارشی نمودن آن برای کاربرد شما به آیدی @jalil_abbasi در تلگرام مراجعه نمایید.

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

برای اطلاع از آخرین تکنیک های ارتباطی با دیتابیس از طریق اکسل با تیم اوستااکسل تماس بگیرید


جلیل عباسی سیوکی
۲۲ خرداد ۹۷ ، ۱۱:۰۳ ۰ نظر

TabasTel

شروع پروژه: 29 بهمن 1395 مشهد


طبس تل

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


     1- هر ورودی تماس اعتبار داشته باشد و بعد از مدت اعتبار سیستم بصورت اتومات حذف نماید. 

          (مثلاً خیلی از افراد می خواهند شماره پیک را تا مدت زمانی خاص داشته باشند ولی وقتی غذا یا وسیله را از پیک دریافت نمودند، آن شماره و مشخصات ثبت شده را لازم ندارند!)

     2- بتوان به تعداد دلخواه شماره تماس برای یک شخص ثبت کرد.

          (محدودیت ثبت تعداد تماس نداشته باشد)

. به یاری پروردگار بزودی اولین نسخه را آپلود می کنیم.


جلیل عباسی سیوکی
۲۹ بهمن ۹۵ ، ۱۸:۵۳ ۰ نظر

نرم افزار محاسبه کیلومتراژ مأمورین راه آهن جمهوری اسلامی ایران توسط اکسل و با برنامه نویسی VBA ساخته شده است.


شروع پروژه:1387

ساخت برنامه ساده اولیه: 1387

بهره برداری اولیه در ناحیه راه آهن طبس: 1387

طراحی و ساخت برنامه تحت شبکه: 1394

بهره برداری برنامه چند کاربره تحت شبکه در ناحیه راه آهن طبس: بهار 1395

معرفی به معاونت راه آهن در تهران: فروردین 1395 (در حال بررسی، امیدواریم این زحمات چندساله به ثمر بنشیند)



کیلومتراژ مامورین راه آهن


بخش ها: 

  • مأمورین
  • کارنامه ها
  • مأموریت ها
  • پیک و پیک ویژه
  • گزارشات
  • پارامترها
  • پشتیبان گیری
  • بروزرسانی

خصوصیات:

  • ورودی انواع مأموریت ها (باری، مسافری، مسافری ویژه، رزرو، کشیک و ...)
  • محاسبه تمام اتومات کیلومتراژ کارنامه
  • محاسبه فراخوان زیر استراحت
  • محاسبه اتومات خوابگاه و استراحت
  • محاسبه اتومات پیک و پیک ویژه
  • محاسبه کیلومتراژ از مبدأ تا مقصد بصورت اتومات براساس فاصله و گراف
  • تغییر تمام محاسبات بعد از حذف یا تغییر
  • گزارش های ویژه محاسبه ساعت مفید و غیر مفید
  • امکان تغییر مبناهای کیلومتر مثلاً کیلومتر امداد
  • نصب تحت شبکه و در صورت درخواست با مقداری تغییر بصورت آنلاین و در شبکه اینترنت
  • امکان تعریف و تغییر دسترسی های هر کاربر
  • و بسیاری از امکانات دیگر که لازمه محاسبه کیلومتراژ مأمورین قطار می باشد.

توسط اوستا اکسل

جلیل عباسی سیوکی
۲۸ ارديبهشت ۹۵ ، ۱۹:۳۸ ۰ نظر

اکسل به سادگی می تواند به پایگاه داده MySQL دسترسی داشته و عملیات های مختلف را برای خواندن، ایجاد، تغییر و حذف داده ها انجام دهد.

بدین منظور لازم است که ابتدا برنامه به پایگاه داده متصل شود و دستورات تراکنشی برای دسترسی و ویرایش اطلاعات ارسال شود.


Public cn As ADODB.Connection

Public rs As ADODB.Recordset

Public strSql As String

'Connection module:

Public Function connectDB()

    Dim strServer_Name As String

    Dim strDB_Name As String

    Dim strUser_ID As String

    Dim strPassword As String

    With Sheet2

        strServer_Name = .Range("B2").Value

        strDB_Name = .Range("B3").Value

        strUser_ID = .Range("B4").Value

        strPassword = .Range("B5").Value

    End With

    Set cn = New ADODB.Connection

    Set rs = CreateObject("ADODB.Recordset") 'EBGen-Daily

    Server_Name = strServer_Name

    Database_Name = strDB_Name ' Name of database

    User_ID = strUser_ID 'id user or username

    Password = strPassword 'Password

    Port = "3306"

    conStr = "DRIVER={MySQL ODBC 5.2 Unicode Driver};SERVER=" & _

            Server_Name & ";PORT=" & Port & ";DATABASE=" & Database_Name & _

            ";UID=" & User_ID & "; PWD=" & Password & "; Option=3"

    cn.Open conStr

End Function


'

'Sub module():

خواندن از دیتابیس

Sub request()

    Dim fTimeEnd As Date

    Dim fTimeStart As Date

    Call connectDB

    fTimeStart = Timer

    strSql = "SELECT * FROM tb1"  ' tb1 نام جدول

    Set rs = New ADODB.Recordset

    rs.Open strSql, cn, adOpenDynamic

    With Sheet1.Range("A1")

        .ClearContents

        .CopyFromRecordset rs

    End With

    fTimeEnd = Timer

    Sheet1.Cells(1, 3) = Format$((fTimeEnd - fTimeStart) * 100!, "0.00 "" Centiseconds Elapsed""")

    cn.Close

    Set cn = Nothing

End Sub

سروری که از آن استفاده می کنید لازم است پورت 3306 باز باشد

و اجازه دسترسی ریموت به دیتابیس را در پنل هاست بدهید

ابتدا درایور اتصال به MySQL را بر روی ویندوز نصب نمایید 

 درایور X64 را از دریافت کنید

عنوان: درایور اتصال به mysql
حجم: 4.21 مگابایت
توضیحات: درایور اتصال به mysql 

لطفا سوالات خود را ارسال نمایید تا پاسخ لازم را بفرستیم

در مثال فوق زمان خواندن را هم محاسبه می کند تا بتوانید با مقایسه سرورهای مختلف، بهترین انتخاب را داشته باشید.

سرور پیشنهادی ما که پورت 3306 باز دارد، mashhadhost.com  می باشد.

جلیل عباسی سیوکی
۰۸ اسفند ۹۴ ، ۱۹:۲۱ ۰ نظر
بهتره از حلقه for برای پیمایش یک شیت استفاده نکنید بدلیل اینکه در حجم بالای اطلاعات سرعت کار را پایین می آورد.
روش خود اکسل برای جستجو را آورده ایم تا مورد استفاده علاقمندان قرار گیرد.


val  مقدار عددی که بدنبال آن می گردد
ws نام sheet
col ستونی که بدنبال مقدار می گردد مانند "A"
firstCellAsCol  اگر ستون عنوان داشته باشد و یا بخواهید از سطر خاصی شروع کند شماره اولین سطر را وارد نمایید


نتیجه یک مقدار منطقی است

Public Function searchValueIsExist(val As Long, ws As Worksheet, col As String, firstCellAsCol As Integer) As Boolean
    Dim boolVal As Boolean
    boolVal = False
    Dim lrow As Long
    lrow = ws.Cells(ws.Rows.Count, col).End(xlUp).row
    Dim c As Range
    Dim str1 As String
    str1 = col & firstCellAsCol & ":" & col & lrow
    With ws.Range(str1)
        Set c = .Find(val, LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then
            boolVal = True
        End If
    End With
    searchValueIsExist = boolVal
End Function

موفق باشید

اوستا اکسل

جلیل عباسی سیوکی
۱۱ بهمن ۹۴ ، ۲۰:۵۹ ۰ نظر

اگه قصد دارید نام صفحه ها یا شیت های اکسل دیده نشود یا نتوانند صفحه ای اضافه کنند.

ActiveWindow.DisplayWorkbookTabs = False


اگه قصد دارید منو های اکسل دیده نشود.

Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"


اگه قصد دارید اسکرول افقی اکسل دیده نشود.

ActiveWindow.DisplayHorizontalScrollBar = False


اگه قصد دارید اسکرول عمودی اکسل دیده نشود.

ActiveWindow.DisplayVerticalScrollBar = False


اگه قصد دارید شماره های عمودی و حروف افقی اکسل دیده نشود.

ActiveWindow.DisplayHeadings = False


اگه قصد دارید خطوط پیش فرض خانه های یک صفحه از اکسل دیده نشود.

ActiveWindow.DisplayGridlines = False


اگه قصد دارید اکسل به صورت تمام صفحه دیده شود.

Application.DisplayFullScreen = True


اگه قصد دارید نوار وضعیت افقی پایین اکسل دیده نشود.

Application.DisplayStatusBar = Not Application.DisplayStatusBar


اگه قصد دارید پنجره بصورت حداکثر دیده شود.

Application.WindowState = xlMaximized


اگه قصد دارید در این فایل اکسل پنجره بصورت حداکثر دیده شود.

ActiveWindow.WindowState = xlMaximized


اگه قصد دارید نوار فرمول اکسل دیده نشود.

Application.DisplayFormulaBar = False


اگه قصد دارید نوار زوم پایین دیده نشود و کاربر نتواند زوم را تغییر دهد.

ActiveWindow.Zoom = 100


اگه قصد دارید در نوار عنوان نام اکسل دیده نشود و بجای آن متن دلخواه خود را بنویسید.

Application.Caption = "DayaAfzar.ir"

جلیل عباسی سیوکی
۰۳ دی ۹۴ ، ۱۹:۲۵ ۰ نظر

کپی یک TextBox در یک شیت

Sub copy_textboxInSheet(row1 As Integer, col1 As Integer)
    Sheet2.Shapes("TextBox 1").Copy
    Application.Goto Reference:=Worksheets("Sheet2").Cells(row1, col1), Scroll:=True
    Sheet2.Paste
End Sub

سطر و ستون را بصورت عددی به این تابع بدهید تا در مکان مورد نظر textBox 1 را کپی نماید.

نکته: بین کلمه TextBox و عدد 1 که هر دو مربوط به نام TextBox می باشد یک فاصله قرار دارد و اگر آن را بچرخانید نقطه موس و بالا را در نظر می گیرد.

حذف همه TextBox ها از یک شیت بجز TextBox 1

Sub del_textboxInSheet()
Dim tb As Object
    For Each tb In ActiveSheet.TextBoxes
        If tb.Name <> "TextBox 1" Then
            tb.Delete
        End If
    Next
End Sub

نکته: این تابع غیر از TextBox 1 بقیه را حذف می نماید.


حذف همه TextBox ها از یک شیت

Sub del_textboxInSheet()
Dim tb As Object
    For Each tb In ActiveSheet.TextBoxes
            tb.Delete
    Next
End Sub


جلیل عباسی سیوکی
۲۰ آذر ۹۴ ، ۱۲:۵۸ ۰ نظر

    Dim str1 As String

    str1 = ""
    str1 = TextBox.Text
    str1 = Replace(str1, vbCr, "")
    str1 = Replace(str1, vbCrLf, Chr(10))
    Sheet1.Cells(2, 8).Value = str1

بدین طریق توانستم مشکل ایجاد خط اضافه در سلول اکسل بهمراه مشکل رفتن کلمه آخر خط (قبل از اینتر) را حل نمایم

بهتر است به vbLf کاری نداشته باشیم.

نکته: بهتر است قبل از هر کاری مقدار آبجکت را که در اینجا TextBox است در یک متغیر قرار دهیم. چون آبجکت ها اعمالی را انجام می دهند که ناخواسته و بدون اطلاع ماست.

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


اکسل خطا در خط جدید

تصویر 1: قبل از تصحیح خطا


اکسل بعد از رفع خطا در خط جدید

تصویر 2: بعد از تصحیح خطا

نتیجه:

Chr(13) = Chr$(13) = vbCr

Chr(10) = Chr$(10) = vbLf

vbNewLine = vbCrLf = Chr(13)Chr(10) = Chr$(13)Chr$(10)

جلیل عباسی سیوکی
۲۰ آذر ۹۴ ، ۱۲:۴۰ ۰ نظر