فراخوان متن از سلول‌های متعدد به تكس باكس

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • ظهور 313

    • 2017/01/20
    • 244

    پرسش فراخوان متن از سلول‌های متعدد به تكس باكس

    سلام خدمت اساتید محترم
    یه مشكل كوچیك دارم
    دارم متن حدود 50 تا سلول در اكسل را به یك تكس باكس فراخوانی میكنم برای این كار از یك فرمول ساده استفاده میكنم كه بین اون‌ها هم دو تا اینتر میزنه.
    TEXTBOX1.TEXT = Sheets("MATN").Range ("T21") + Chr(13) + Chr(13) + Sheets("MATN").Range("T22") + Chr(13) + Chr(13) +...
    الان مشكلم اینه كه چون فرمولش خیلی طولانی میشه، تا یه اندازه‌ای بیشتر نمیتونم بنویسم و باقی سلول‌ها در خط فرمول قرار نمیگیره
    الان باید چه كار كنم؟
    ممنون میشم اگه اساتید محترم راهنمایی بفرمایند
  • M_ExceL

    • 2018/04/23
    • 677

    #2
    نوشته اصلی توسط ظهور 313
    سلام خدمت اساتید محترم
    یه مشكل كوچیك دارم
    دارم متن حدود 50 تا سلول در اكسل را به یك تكس باكس فراخوانی میكنم برای این كار از یك فرمول ساده استفاده میكنم كه بین اون‌ها هم دو تا اینتر میزنه.
    TEXTBOX1.TEXT = Sheets("MATN").Range ("T21") + Chr(13) + Chr(13) + Sheets("MATN").Range("T22") + Chr(13) + Chr(13) +...
    الان مشكلم اینه كه چون فرمولش خیلی طولانی میشه، تا یه اندازه‌ای بیشتر نمیتونم بنویسم و باقی سلول‌ها در خط فرمول قرار نمیگیره
    الان باید چه كار كنم؟
    ممنون میشم اگه اساتید محترم راهنمایی بفرمایند
    سلام،
    می تونید از تابعی که برای این منظور نوشتم استفاده کنید :
    کد:
    Function MRG(rng As Range) As String
    Dim ss()
    Dim cel As Range
        st = WorksheetFunction.CountA(rng) + WorksheetFunction.CountBlank(rng)
        ReDim Preserve ss(1 To st) As Variant
        i = 1
            For Each cel In rng
                ss(i) = cel
                i = i + 1
            Next cel
    MRG = Join(ss, " ")
    End Function
    داخل فایل روی باتن روی فرم کلیک کنید سپس رنج مورد نظر رو انتخاب کنید.
    فایل های پیوست شده
    [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
    [/CENTER]

    کامنت

    • ظهور 313

      • 2017/01/20
      • 244

      #3
      نوشته اصلی توسط M_ExceL
      سلام،
      می تونید از تابعی که برای این منظور نوشتم استفاده کنید :
      کد:
      Function MRG(rng As Range) As String
      Dim ss()
      Dim cel As Range
          st = WorksheetFunction.CountA(rng) + WorksheetFunction.CountBlank(rng)
          ReDim Preserve ss(1 To st) As Variant
          i = 1
              For Each cel In rng
                  ss(i) = cel
                  i = i + 1
              Next cel
      MRG = Join(ss, " ")
      End Function
      داخل فایل روی باتن روی فرم کلیک کنید سپس رنج مورد نظر رو انتخاب کنید.

      ممنون دوست عزیز
      كدتون جالب بود اما این مشكل من رو حل نمیكنه
      اولا اینكه من كاملا با فرم كار میكنم و اصلا فضای اكسل دیده نمیشه، یعنی رنج باید خودش انتخاب بشه (پیش‌فرض از سلول 2 تا 50 مثلا)
      دوما: چون متنی كه فراخوانی میكنم خیلی طولانیه، لازمه تا بین متن هر سلول، دوتا اینتر ثبت بشه تا خوندنش راحت تر باشه

      کامنت

      • M_ExceL

        • 2018/04/23
        • 677

        #4
        نوشته اصلی توسط ظهور 313
        ممنون دوست عزیز
        كدتون جالب بود اما این مشكل من رو حل نمیكنه
        اولا اینكه من كاملا با فرم كار میكنم و اصلا فضای اكسل دیده نمیشه، یعنی رنج باید خودش انتخاب بشه (پیش‌فرض از سلول 2 تا 50 مثلا)
        دوما: چون متنی كه فراخوانی میكنم خیلی طولانیه، لازمه تا بین متن هر سلول، دوتا اینتر ثبت بشه تا خوندنش راحت تر باشه
        سلام،
        خواهش میکنم،
        تفاوتی نداره، چه در سطح اکسل و چه در داخل فرم می تونید از تابعی که قرار دادم استفاده کنید. کافیست رنج مورد نظرتون را داخل تابع قرار بدید.
        منظورتون رو از دو تا اینتر متوجه نشدم، منظورتون دو تا فاصله هست؟
        [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
        [/CENTER]

        کامنت

        • ظهور 313

          • 2017/01/20
          • 244

          #5
          نوشته اصلی توسط M_ExceL
          سلام،
          خواهش میکنم،
          تفاوتی نداره، چه در سطح اکسل و چه در داخل فرم می تونید از تابعی که قرار دادم استفاده کنید. کافیست رنج مورد نظرتون را داخل تابع قرار بدید.
          منظورتون رو از دو تا اینتر متوجه نشدم، منظورتون دو تا فاصله هست؟
          بله منظورم اینه كه متن سلول بعدی، دو خط پایین‌تر از سلول اول درج بشه
          درضمن خیلی برنامه‌نویسی بلد نیستم، رنج رو كجای این تابع باید قرار بدم؟

          کامنت

          • M_ExceL

            • 2018/04/23
            • 677

            #6
            نوشته اصلی توسط ظهور 313
            بله منظورم اینه كه متن سلول بعدی، دو خط پایین‌تر از سلول اول درج بشه
            درضمن خیلی برنامه‌نویسی بلد نیستم، رنج رو كجای این تابع باید قرار بدم؟
            سلام،
            تابع رو بصورت زیر اصلاح کنید :
            کد:
            Function MRG(rng As Range) As String
            Dim ss()
            Dim cel As Range
                st = WorksheetFunction.CountA(rng) + WorksheetFunction.CountBlank(rng)
                ReDim Preserve ss(1 To st) As Variant
                i = 1
                    For Each cel In rng
                        ss(i) = cel
                        i = i + 1
                    Next cel
            MRG = Join(ss, vbCrLf & vbCrLf)
            End Function
            برای عملکرد باتن مورد نظر، کد های زیر رو به آن اضافه کنید :
            کد:
            TextBox1.MultiLine = True
            TextBox1.Text = MRG(Range("a1:f1"))
            نکته : می تونید رنج رو تغییر بدید.
            یوزرفورم رو اجرا کرده سپس با کلیک روی باتن قرار داده شده، نتیجه را خواهید دید.
            یا حق.
            فایل های پیوست شده
            [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
            [/CENTER]

            کامنت

            چند لحظه..