вставить значение и строки, зависящие от двух значений ячеек — от листа к листу VBA

#excel #vba

#excel #vba

Вопрос:

Я создаю таблицу Excel с большим количеством информации для поддержки проекта. это работает как список всех опций для этого продукта.

проблема заключается в том, чтобы поместить некоторые диапазоны данных в определенные ячейки в SiDAQ sheet из SiDAQ_Template Sheetet. диапазоны могут варьироваться от 1 строки до 51 строки, и они также должны быть вставлены и удалены динамически снова (как занавес, который вы поднимаете и опускаете, зависит от выбора на листе SiDAQ)

я пытался записать некоторые из них, но для меня ничего не имеет смысла.

 Sub test()
defining the worksheets used for the copy/paste of templates.
Dim ws1 As Worksheet: Set ws1 = ActiveWorkbook.Sheets("SiDAQ")
Dim ws2 As Worksheet: Set ws2 = ActiveWorkbook.Sheets("SiDAQ_Template")
defining the ranges of the templates, easier naming in the code
With ws2
    Dim rng1 As Range: Set rng1 = Range("E2:F2") 'Speed
    Dim rng2 As Range: Set rng2 = Range("E4:F4") 'Count
    Dim rng3 As Range: Set rng3 = Range("E8:F8") 'EL2202 (1 ms)
    Dim rng4 As Range: Set rng4 = Range("E9:F9") 'EL2202 (1 sec)
    Dim rng5 As Range: Set rng5 = Range("E10:F10") 'EL2202 (1 hour)
    Dim rng6 As Range: Set rng6 = Range("E11:F11") 'PPS
    Dim rng7 As Range: Set rng7 = Range("E13:F13") 'I 4…20mA
    Dim rng8 As Range: Set rng8 = Range("E16:F16") 'I 0...20mA
    Dim rng9 As Range: Set rng9 = Range("E18:F18") 'V ±30V
    Dim rng10 As Range: Set rng10 = Range("E19:F19") 'V ±10V
    Dim rng11 As Range: Set rng11 = Range("E21:F21") 'V ±5V
    Dim rng12 As Range: Set rng12 = Range("E23:F23") 'V ±2.5V
    Dim rng13 As Range: Set rng13 = Range("E24:F24") 'V ±1.25V
    Dim rng14 As Range: Set rng14 = Range("E25:F25") 'V ±640mV
    Dim rng15 As Range: Set rng15 = Range("E26:F26") 'V ±320mV
    Dim rng16 As Range: Set rng16 = Range("E27:F27") 'V ±160mV
    Dim rng17 As Range: Set rng17 = Range("E28:F28") 'V ±80mV
    Dim rng18 As Range: Set rng18 = Range("E29:F29") 'V ±40mV
    Dim rng19 As Range: Set rng19 = Range("E30:F30") 'I ±20mA
    Dim rng20 As Range: Set rng20 = Range("E31:F31") 'R 2W Ohm
    Dim rng21 As Range: Set rng21 = Range("E32:F32") 'R 3W Ohm
    Dim rng22 As Range: Set rng22 = Range("E33:F33") 'R 4W Ohm
    Dim rng23 As Range: Set rng23 = Range("E34:F34") 'RTD 3W °C
    Dim rng24 As Range: Set rng24 = Range("E36:F36") 'RTD 4W °C
    Dim rng25 As Range: Set rng25 = Range("E37:F37") 'SG 1/4 3W 350Ohm mV/V
    Dim rng26 As Range: Set rng26 = Range("E38:F38") 'SG 1/4 3W 120Ohm mV/V
    Dim rng27 As Range: Set rng27 = Range("E39:F39") 'SG 1/2 3W mV/V
    Dim rng28 As Range: Set rng28 = Range("E40:F40") 'SG 1/2 5W mV/V
    Dim rng29 As Range: Set rng29 = Range("E41:F41") 'SG 1/1 4W mV/V
    Dim rng30 As Range: Set rng30 = Range("E42:F42") 'SG 1/1 6W mV/V
    Dim rng31 As Range: Set rng31 = Range("E43:F43") 'IEPE
    Dim rng32 As Range: Set rng32 = Range("E44:F44") 'Thermocouples
    Dim rng33 As Range: Set rng33 = Range("E46:F54") 'Power
    Dim rng34 As Range: Set rng34 = Range("E55:F78") 'Corrosion
    Dim rng35 As Range: Set rng35 = Range("E103:F104") 'ComNav
    Dim rng36 As Range: Set rng36 = Range("E107:F129") 'RisoDau
    Dim rng37 As Range: Set rng37 = Range("E153:F160") 'GPS
    Dim rng38 As Range: Set rng38 = Range("E169:F178") 'RotorAzimut
    Dim rng39 As Range: Set rng39 = Range("E189:F239") 'Camilla Bauer
    Dim rng40 As Range: Set rng40 = Range("E291:F298") 'PTP
End With

Application.ScreenUpdating = False 'for quicker operation
    For Each Cells In Column(5)
        If Cells(Column, 5) = "EL*" Then

    Next

Application.ScreenUpdating = True
End Sub
  

Разные диапазоны зависят от того, есть ли «EL something» в столбце 5 (E)
на листе SiDAQ и, если слово соответствует rngXX в столбце 15 (O), также на листе SiDAQ

затем вставьте диапазоны в ту же строку, что и EL в столбце 5, и столбец 15 в столбце 37 (AK) и ниже, вставляя пустые строки, соответствующие строкам диапазона, вставленного в столбец AK (37)

Комментарии:

1. Set rng1 = Range("E2:F2") должно быть Set rng1 = .Range("E2:F2") — обратите внимание на точку перед Range — это позволяет применить ваше With .

2. Кроме того, не используйте = для тестирования подстановочные знаки — используйте Like .