午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

複数行のセルの値をまとめて1つのテキストボックスにするマクロ

 
 
複数行のセルの値をまとめて1つのテキストボックスにする
イメージ 6
こういうマクロを作ってみた
 
セルにつけるコメント機能
イメージ 1
これはサイズの自動調整機能がないんだよねえ
 
 
イメージ 2
テキストボックス(図形)ならサイズの自動調整がある
 
複数行のセルの値をテキストボックスにするマクロ
Sub AddTextBoxFromCellsValue2()
  '選択されているのがセル以外なら何もしないで終了
    If TypeName(Selection) <> "Range" Then Exit Sub
    
    Dim myCells As Range
    Set myCells = Selection
    Set myCells = myCells.Resize(myCells.Rows.Count, 1) '左端の一列
    Dim tlCell As Range
    Set tlCell = myCells.Cells(1) '左上のセル
    
     'テキストボックスに表示する文字列を作成
    Dim str As String: str = tlCell.text
    Dim i As Integer
    For i = 2 To myCells.Cells.Count
        str = str & vbNewLine & myCells.Cells(i).text
    Next
    
    'テキストボックス作成
    Dim myTB As Shape
    Set myTB = ActiveSheet.Shapes.AddTextbox( _
                msoTextOrientationHorizontal, _
                tlCell.Left, tlCell.Top, 100, 10)
    myTB.TextFrame.AutoSize = True 'オートサイズを有効にする
    myTB.Placement = xlMove 'セルに合わせて移動するけどサイズ変更しない
'    myTB.Placement = xlFreeFloating '移動もサイズ変更もしない
    
    With myTB.TextFrame2.TextRange
        .text = str
'       フォントの指定(選択セルのフォントと同じ)
        Dim myFont As Font: Set myFont = tlCell.Font
        With .Font
            .Name = myFont.Name
            .NameFarEast = myFont.Name
            .Size = myFont.Size
        End With
    End With
End Sub
 
 
このマクロは選択したセルの左1列の値を使ってテキストボックスを作成する
作成されるテキストボックの書式設定やプロパティは
  • フォントとフォントサイズは選択セルの左上と同じものになる
  • テキストに合わせてサイズを調整するにチェックが入った状態になる
  • セルに合わせて移動するがサイズ変更はしない
これ以外は指定していないから初期値になるはず
 
 
 
イメージ 4
フォントサイズ
 
 
イメージ 3
セルに合わせて移動するけどサイズ変更しない
 
 
イメージ 5
フォントカラーは無視されて
すべて黒(自動)になる
背景色も無視されて白になるなあ
これは引き継ぐようにしようかなあ
フォントカラーや背景書に対応は翌日
複数行のセルの値をまとめて1つのテキストボックスにするマクロその2 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/14676410.html
 
関連記事、テキストボックスの文字列をセルにコピーするマクロは23日後
図形のテキストボックスの段落のタブの配置をVBAで正確に取得できないことがあったので調べてみた ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/14718810.html