Excel でチェックボックスを配置したはいいものの、セルの高さを変えると、折角高さのセンタリングをしていたのに位置がずれてしまいますね。
一応は、セル内の上位置は維持しているものの、やりたいのはチェックボックスを配置したセル内での高さセンタリングだったりします。
この場合、単純にはできず VBA で処理を書く必要があるのですが、簡単に適用できる方法を見つけたので記事にします。
まず、"target"シートにチェックボックスを3つ並べます。
そして、"config"シートの A列にチェックボックスのキャプション名を、B列にチェックボックスを配置したいセル番号を記入して、マクロを実行するボタンを配置します。
続いて肝心の VBA は以下のようになります。この VBA をボタンに割り当てます。
Sub AdjustCheckboxPosition() Dim sheet As Worksheet Dim myCheck As checkbox Dim cellName As String Set sheet = ThisWorkbook.Worksheets("target") For Each myCheck In sheet.CheckBoxes cellName = GetTargetCell(myCheck.caption) If cellName <> "" Then myCheck.Top = sheet.Range(cellName).Top + (sheet.Range(cellName).Height / 2) - (myCheck.Height / 2) myCheck.Left = sheet.Range(cellName).Left End If Next Set sheet = Nothing End Sub Function GetTargetCell(caption) Const MAX_INDEX = 100 'Checkbox定義の最大セル Dim configSheet As Worksheet Dim i As Integer Dim cellName As String cellName = "" Set configSheet = ThisWorkbook.Worksheets("config") For i = 1 To MAX_INDEX If configSheet.Cells(i, 1).Value = caption Then cellName = configSheet.Cells(i, 2).Value Exit For End If Next Set configSheet = Nothing GetTargetCell = cellName End Function
セルの高さを広げた状態で、「センタリング」ボタンを押すと。。。
指定セルで、高さのセンタリングでチェックボックスが配置されました。