Я пытаюсь, чтобы мой код запустил поиск строки «Номер детали» в ячейке, а затем скопировал весь этот столбец. У меня есть код, работающий, когда я запускаю его без передачи строки и замены переменной, однако, когда я пытаюсь сделать это со строкой, переданной как colName, я получаю сообщение об ошибке 'Set r = ActiveSheet.Range (c .Address) line. '
Вот основная функция
Public Sub PreSE()
Dim SECopy As Workbook, BOM As Workbook: Set BOM = ActiveWorkbook
Dim fname As String, fPathFile As String
Dim BOMsheet As Worksheet: Set BOMsheet = ActiveSheet
fname = InputBox("Enter the file name to use, including file extension exactly as in the next window.")
Set SECopy = Workbooks.Add
fPathFile = Application.GetSaveAsFilename(fname, "Excel Files (*.xlsx), *.xlsx")
SECopy.SaveAs fPathFile
Call FindSelCol("Part Number", BOM, SECopy, fname)
'Call FindSelCol("Manufacturer Part Number", BOM, fname)
'Call FindSelCol("Cage Code", BOM, fname)
'Call FindSelCol("Description", BOM, fname)
End Sub
и подпрограмма для поиска и выбора столбца
Sub FindSelCol(colName As String, BOM As Workbook, SECopy As Workbook, UpCopy As String)
'Currently - selects column in first passed workbook with the header passed as a string
'WIP - trying to get it to copy that header into SECopy workbook
Dim c As Variant
BOM.Activate
With ActiveSheet.UsedRange
Set c = .find(colName, LookIn:=xlValues)
If Not c Is Nothing Then
ActiveSheet.Range(c.Address).Offset(1, 0).Copy
ActiveSheet.Range(c, ActiveSheet.Cells(Rows.Count, c.Column).End(xlUp).Address).Copy
End If
End With
'Paste into SECopy Book first sheet; Passed in, paste into first unoccupied column
If SECopy.Worksheets(1).Range("A1") = "" Then
SECopy.Workshets(1).Cells(1, 0).PasteSpecial xlPasteValues
Else
SECopy.Worksheets(1).Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).PasteSpecial xlPasteValues
End If
End Sub
Есть дополнительный код для что-то еще, что я пытаюсь добавить, поэтому я задам еще один вопрос для этой части.