2016-07-21 2 views
0

У меня есть требование добавить новый столбец рядом с последней ячейкой заголовка с данными и заполнить новый столбец некоторым случайным значением, например «Cool! " в данном листе.Макрос для добавления столбца с определенным заголовком и заполнения значения по умолчанию во всех строках

Ниже мой макрос:

Sub sbInsertingColumns(sourceFile As String, Worksheet As String) 
Dim lastColName As String 
Dim LastColumn As Long 
    With ActiveSheet 
     LastColumn = Workbooks(sourceFile).Worksheets(Worksheet).Range("A1").End(xlToRight).Column 
    End With 
    Dim nextCell As Integer 
    nextCell = Val(LastColumn) + Val(1) 

    lastColName = Replace(Replace(Cells(1, nextCell).Address, "1", ""), "$", "") 
    Workbooks(sourceFile).Worksheets(Worksheet).Range(lastColName & 1).Value = "New Header" 
    MsgBox "New Column has been added : [ " & lastColName & 1 & "]" 
End Sub 

Добавление значений:

Sub Add() 
    Dim cellVal As String 
    Dim cell As Range 
    cellVal = .Range("E") 
    For Each cell In Sheets("Sheet1").Range("E:e").SpecialCells(xlCellTypeConstants, xlNumbers) 
     cell.Value = "Cool !" 
    Next cell 
End Sub 

я смог добавить новый столбец с некоторым заголовком, но выше логики для добавления значения в новом столбце не работает. Кто-нибудь может помочь мне. Спасибо за ваше время!

ответ

1
Sub sbInsertingColumns(sourceFile As String, Worksheet As String) 

    Dim sht As Worksheet 
    Set sht = Workbooks(sourceFile).Worksheets(Worksheet) 

    With sht.Range("A1").End(xlToRight).Offset(0, 1) 
     Application.Intersect(sht.UsedRange.EntireRow, .EntireColumn).Value = "Cool !" 
     .Value = "New Header" 
    End With 

End Sub 
1

Я бы как следует:

Sub sbInsertingColumns(sourceFile As String, sheetName As String, headerName As String) 
    With Workbooks(sourceFile).Worksheets(sheetName).UsedRange 
     With .Columns(.Columns.Count).Offset(, 1) 
      .Value = "Cool !" 
      .Cells(1, 1) = headerName 
     End With 
    End With 
End Sub 

для использования некоторых «основного» суб следующим образом:

Sub main() 
    sbInsertingColumns ActiveWorkbook.Name, ActiveSheet.Name, "newheader" 
End Sub 

вы можете также сократить вниз список параметров следующим образом :

Sub sbInsertingColumns(ws As Worksheet, headerName As String) 
    With ws.UsedRange 
     With .Columns(.Columns.Count).Offset(, 1) 
      .Value = "Cool" 
      .Cells(1, 1) = headerName 
     End With 
    End With 
End Sub 

и называйте это как follo ws

Sub main() 
    sbInsertingColumns ActiveSheet, "newheader" 
End Sub 
Смежные вопросы