ボタンを押すとインターフェース用の指定したデータをConfigに作成するマクロです。
コードは美しくはないです。

左上のボタンを押すと下記の様なConfigが作成されます。
・B列のチェックが入っている行のConfigを作成します。
・★の所まで実行します。

マクロ
Dim CkJudge As String
Dim ConfWsName As String
Dim IFWsName As String
Dim OutCell As Integer
Dim ColumnNo As Integer
Dim LastRow As Integer
Dim ConfWs As Worksheet
Dim test As String
'シートが存在するか確認して、無い場合は作成する。関数:fc_WsCkを実行
If fc_WsCk("ConfigSheet") = True Then
'ConfigSheetの中身を削除します
If MsgBox("ConfigSheetのデータを削除します", vbYesNo) = vbYes Then
Worksheets("ConfigSheet").Columns("A:A").EntireRow.Clear
Else
MsgBox "ConfigSheetのデータを確認してください"
Exit Sub
End If
Else
Dim Currentsheet As Worksheet
Set Currentsheet = ActiveSheet ' 現在アクティブなシートを取得する
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "ConfigSheet"
Currentsheet.Activate ' 元のシートをアクティブにする
End If
'シート名を取得
IFWsName = Worksheets("IF").Name
ConfWsName = Worksheets("ConfigSheet").Name
LastRow = Cells(Rows.Count, 2).End(xlUp).Row '2列目のセルのデータが入っている最終行を選択
'Rows.Countは、シートの行数 ・シートの2列の最終行から、上に向かって最初にデータがあるセルを返す
OutCell = 1
For t = 4 To LastRow '4行目から最終行まで回す
'実行する行かチェックする
CkJudge = Worksheets(IFWsName).Cells(t, 2).Value
If CkJudge = "True" Then
ColumnNo = Worksheets(IFWsName).Cells(t, Columns.Count).End(xlToLeft).Column '列の最終行を取得
For tt = 3 To ColumnNo
If IsEmpty(Cells(t, tt).Value) Or Cells(t, tt).Value = "-" Then
Else
Dim insertValue As String
Dim PreCellValue As String
Dim TitleCell As String
PreCellValue = Cells(t, tt - 1).Value '1個前のデータを取得(Port Modeの値を取得するために使用)
TitleCell = Cells(2, tt).Value 'タイトルを取得
insertValue = fc_CellValue(TitleCell, Cells(t, tt).Value, PreCellValue)
Worksheets(ConfWsName).Cells(OutCell, 4).Value = insertValue
OutCell = OutCell + 1
End If
Next
ElseIf CkJudge = "★" Then
MsgBox "完了"
Exit For
Else
End If
Next
End Sub
Function fc_WsCk(ByVal WorkSheetName As String) As Boolean
For Each ConfWs In ActiveWorkbook.Worksheets
If ConfWs.Name = WorkSheetName Then
fc_WsCk = True
Exit Function
End If
Next ConfWs
fc_WsCk = False
End Function
Function fc_CellValue(ByVal tt As String, ByVal CurrentValue As String, ByVal PreValue As String) As String
Select Case tt
Case "Port No"
fc_CellValue = "interface " & CurrentValue
Case "Description"
fc_CellValue = "description " & CurrentValue
Case "Port Mode"
Select Case CurrentValue
Case "no switchport"
fc_CellValue = CurrentValue
Case "access", "trunk"
fc_CellValue = "switchport mode " & CurrentValue
End Select
Case "VLAN" '1個前のPort modeの値によって判断
Select Case PreValue
Case "no switchport"
fc_CellValue = ""
Case "access"
fc_CellValue = "switchport access vlan " & CurrentValue
Case "trunk"
fc_CellValue = "switchport trunk allowed vlan " & CurrentValue
End Select
Case "IP Addr"
fc_CellValue = "ip address " & CurrentValue
Case "Native VLAN"
fc_CellValue = "switchport trunk native vlan " & CurrentValue
Case "Speed"
fc_CellValue = "speed" & CurrentValue
Case "Duplex"
fc_CellValue = "duplex " & CurrentValue
Case "STP"
fc_CellValue = "spanning-tree " & CurrentValue
Case "Shutdown"
fc_CellValue = CurrentValue
Case "Ether Channel"
fc_CellValue = "channel-group " & CurrentValue & " mode on"
Case "fin"
fc_CellValue = CurrentValue
End Select
End Function




コメント