VBA備忘録

VBAソースの備忘録。当面Excelのみ。

セル書式を書き出す

この表の各セルの書式を赤い罫線内に書き出す

A列:文字列(A4のみ標準)、B列:数値、C列:通貨

1行目はタイトルなので値をコピー

 

 

    Dim lngMaxRow As Long
    Dim lngMaxCol As Long
    
    Dim i As Integer
    Dim j As Integer

    '表内最大行を取得
    lngMaxRow = lngGetMaxRow(ActiveSheet)
    
    '表内最大列を取得
    lngMaxCol = lngGetMaxCol(ActiveSheet)
    
    
    For i = 1 To lngMaxRow  '最大行まで繰り返す
    
        For j = 1 To lngMaxCol  '最大列まで繰り返す
        
            If i = 1 Then
                '1行目はタイトルなので値をコピー
                ActiveSheet.Cells(i, j + 5).Value = ActiveSheet.Cells(i, j).Value
            Else
                '2行目以降は1セルずつ書式を記述する(5列先)
                Call WriteRangeFormat(ActiveSheet.Cells(i, j), ActiveSheet.Cells(i, j + 5))
            End If
            
        Next j
        
    Next i

【呼び出し関数】

'------------------------------------------------------
'セルの書式設定を書き出す
'
'   戻値:なし
'
'   引数:コピー元セル(範囲指定は不可)
'       :コピー先セル(範囲指定可)
'
'   注意:コピー元セルが複数指定されている場合エラーとする
'-------------------------------------------------------
Sub WriteRangeFormat(rngMoto As Range, rngSaki As Range)
    
    If rngMoto.Count > 1 Then
    
        'エラー処理を行う(ログを出す、セルを色づけする等)
        
        Exit Sub
        
    End If
    
    rngSaki.Value = rngMoto.NumberFormatLocal
    
End Sub

 

【結果】