2016-07-21 11 views
0

Ich habe eine Anforderung, eine neue Spalte neben der letzten Header-Zelle mit Daten hinzuzufügen und füllen Sie die neue Spalte mit einem zufälligen Wert sagen "Cool! " in einem bestimmten Arbeitsblatt.Makro zum Hinzufügen einer Spalte mit einem bestimmten Header und Auffüllen eines Vorschlagswerts in allen Zeilen

Unten ist mein Makro:

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 

Hinzufügen Werte:

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 

ich in der Lage kann eine neue Spalte mit einigen Header hinzufügen, aber die oben genannten Logikwert in die neue Spalte für das Hinzufügen ist funktioniert nicht. Kann mir bitte jemand helfen. Danke für Ihre Zeit!

Antwort

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

ich gehen würde, wie folgt:

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 

durch einige "main" sub verwendet werden wie folgt:

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

Sie auch Ihre Parameterliste verkürzen unten lassen sich wie folgt :

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 

und nennen Sie es wie folgt ws

Sub main() 
    sbInsertingColumns ActiveSheet, "newheader" 
End Sub