کپی متوالی از یک رنج، بدون تغییر فرمت

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • karbar

    • 2011/08/20
    • 37
    • 26.00

    [حل شده] کپی متوالی از یک رنج، بدون تغییر فرمت

    با عرض سلام، جدولی از افراد داریم که می خواهیم، برای هر فرد یک کارنامه صادر شود،
    کد آن را نوشته ام:
    کد:
    Sub moghayese_va_darj_Range_motanazer()
        Dim file_digar As Workbook
        Dim Sheet_digar As Worksheet
        Dim Sheet_hazer As Worksheet, Sheet_hazer2 As Worksheet
        Dim rng As Range, rng2 As Range
        tedade_peida_shode = 0
        
    'Set file_digar = Workbooks.Open("D:\___ziafat\___Modarresin\modarresin-hamayesh-98.xlsx")
    
    Set Sheet_hazer = ThisWorkbook.Worksheets("yek_modares")
    Set Sheet_digar = ThisWorkbook.Worksheets("modar_ama")
    Set Sheet_digar2 = ThisWorkbook.Worksheets("asatid")
    
    ThisWorkbook.Activate
          
    LastRow = Sheet_hazer.Range("D" & Rows.Count).End(xlUp).Row
    LastRow2 = Sheet_digar2.Range("L" & Rows.Count).End(xlUp).Row
          i = 1
          
          For j = 2 To 4
                 modarres = Sheet_digar.Cells(j, 12).Value
                 hozoor = Sheet_digar.Cells(j, 39).Value
                 
                ' shomarandeh
                 Sheet_hazer.Cells(1, 5).Value = "j: " & j
                 Sheet_hazer.Cells(1, 6).Value = "i: " & i
                 Sheet_hazer.Cells(1, 7).Value = "modarres: " & modarres
                 
                 j2 = (j - 1) * 26
              
                 Sheet_hazer.Cells(1, 1).Copy _
                       Sheet_hazer.Cells(1 + j2, 1)
                 Sheet_hazer.Cells(1, 2).Copy _
                       Sheet_hazer.Cells(1 + j2, 2)
                 Sheet_hazer.Cells(1, 3).Copy _
                       Sheet_hazer.Cells(1 + j2, 3)
                       
                 Sheet_hazer.Cells(2, 1).Copy _
                       Sheet_hazer.Cells(2 + j2, 1)
                 Sheet_hazer.Cells(2 + j2, 2) = modarres
                 Sheet_hazer.Cells(2, 3).Copy _
                       Sheet_hazer.Cells(2 + j2, 3)
           
    For i = 3 To 25
              
                 Sheet_hazer.Cells(i + j2, 1).Value = Sheet_hazer.Cells(i, 1)
                 Sheet_hazer.Cells(i + j2, 2) = Sheet_hazer.Cells(i, 2)
                 Sheet_hazer.Cells(i, 3).Copy _
                       Sheet_hazer.Cells(i + j2, 3)
            Next i
        Next j
        
    End Sub
    اما جواب به این صورت دیده می شود:
    Click image for larger version

Name:	soal-excel-2.png
Views:	1
Size:	24.6 کیلو بایت
ID:	147736Click image for larger version

Name:	soal-excel-2.png
Views:	1
Size:	24.6 کیلو بایت
ID:	147736
    چه تغییر در کد، بالاخص دو خط
    کد:
    Sheet_hazer.Cells(i + j2, 1).Value = Sheet_hazer.Cells(i, 1)
                 Sheet_hazer.Cells(i + j2, 2) = Sheet_hazer.Cells(i, 2)
    بدهم که فرمت سلول های مرج شده را به همان شکل و رنگ نشان بدهد؟
    فایل های پیوست شده
  • karbar

    • 2011/08/20
    • 37
    • 26.00

    #2
    منظورم این است که قسمت سمت راست، جدول بالا، که می خواهیم برای چندین مدرس کپی کنیم، چرا با فرمت صحیح کپی نمی شود؟
    Click image for larger version

Name:	soal-excel-2.png
Views:	1
Size:	44.7 کیلو بایت
ID:	135472

    کامنت

    • M_ExceL

      • 2018/04/23
      • 677

      #3
      نوشته اصلی توسط karbar
      با عرض سلام، جدولی از افراد داریم که می خواهیم، برای هر فرد یک کارنامه صادر شود،
      چه تغییر در کد، بالاخص دو خط
      کد:
      Sheet_hazer.Cells(i + j2, 1).Value = Sheet_hazer.Cells(i, 1)
                   Sheet_hazer.Cells(i + j2, 2) = Sheet_hazer.Cells(i, 2)
      بدهم که فرمت سلول های مرج شده را به همان شکل و رنگ نشان بدهد؟
      سلام،
      فایلتون بررسی بشه بهتر میشه راهنمایی کرد.
      شما دو خط فوق رو بصورت زیر اصلاح کنید سپس چک کنید :
      کد:
      Sheet_hazer.Cells(i, 1).Copy
      Sheet_hazer.Cells(i + j2, 1).PasteSpecial (xlPasteFormats)
      Sheet_hazer.Cells(i + j2, 1).PasteSpecial (xlPasteValues)
      Sheet_hazer.Cells(i, 2).Copy
      Sheet_hazer.Cells(i + j2, 2).PasteSpecial (xlPasteFormats)
      Sheet_hazer.Cells(i + j2, 2).PasteSpecial (xlPasteValues)
      [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
      [/CENTER]

      کامنت

      • karbar

        • 2011/08/20
        • 37
        • 26.00

        #4
        حل شد
        بجای دو خط
        کد:
        Sheet_hazer.Cells(i + j2, 1).Value = Sheet_hazer.Cells(i, 1)
        Sheet_hazer.Cells(i + j2, 2) = Sheet_hazer.Cells(i, 2)
        این کد را گذاشتم درست شد
        کد:
        Sheet_hazer.Cells(i, 1).Copy _
                             Sheet_hazer.Cells(i + j2 - 1, 1)
                       Sheet_hazer.Cells(i, 2).Copy _
                             Sheet_hazer.Cells(i + j2 - 1, 2)
        - - - Updated - - -

        نوشته اصلی توسط M_ExceL
        سلام،
        فایلتون بررسی بشه بهتر میشه راهنمایی کرد.
        شما دو خط فوق رو بصورت زیر اصلاح کنید سپس چک کنید :
        کد:
        Sheet_hazer.Cells(i, 1).Copy
        Sheet_hazer.Cells(i + j2, 1).PasteSpecial (xlPasteFormats)
        Sheet_hazer.Cells(i + j2, 1).PasteSpecial (xlPasteValues)
        Sheet_hazer.Cells(i, 2).Copy
        Sheet_hazer.Cells(i + j2, 2).PasteSpecial (xlPasteFormats)
        Sheet_hazer.Cells(i + j2, 2).PasteSpecial (xlPasteValues)
        اتفاقا دنبال همین کدی که شما گفتید میگشتم، ممنونم.

        کامنت

        • Amir Ghasemiyan

          • 2013/09/20
          • 4598
          • 100.00

          #5
          دوست عزيز اگر پاسخ سوالتون رو دريافت كرديد لطفا تاپيك رو حل شده كنيد

          کامنت

          چند لحظه..