ボタンを押すとインターフェース用の指定したデータを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
コメント