- ベストアンサー
エクセルマクロでチェックボックスを作成する際の縦距離がずれる問題
- エクセルマクロを使ってチェックボックスを指定の位置に移動しようと思ったのですが、なぜか縦距離がずれます。
- 数式上縦距離が正しく設定されているにもかかわらず、実行してみるとチェックボックスが予想とは異なる位置に作られます。
- この問題の修正方法やアドバイスをお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
やってみると 縦に 間隔 6個 間隔 6個 間隔 6個 となるが良いか。 'left=444 top=変動 width=24 height=18 だから縦に一列になるが。 ーーー Sub test01() For i = 0 To 2 'Step 1 For j = 1 To 6 'Step 1 'Cells(i+1, j) = 444 Cells(i + 1, j) = 153 + j * 18 + i * 198 'Cells(i+1, j) = 24 'Cells(i+1, j) = 18 Next j Next i End Sub を実行すると、TOPの値は 171 189 207 225 243 261 369 387 405 423 441 459 567 585 603 621 639 657 となるが。小数点は出てこないが。 ーー またはチェックボックスのシートの位置関係に対応すると Sub test03() For i = 0 To 2 'Step 1 For j = 1 To 6 'Step 1 x = i * 6 + j 'Cells(i+1, j) = 444 Worksheets("Sheet2").Cells(x, "A") = 153 + j * 18 + i * 198 'Cells(i+1, j) = 24 'Cells(i+1, j) = 18 Next j Next i End Sub で、TOPの値は 171 423 189 441 207 459 225 567 243 585 261 603 369 621 387 639 405 657 右列が左列の下に続く がおかしいか。 こういう風にチェックルーチンを作って自分でテストして、自分で考えること。 ーーー エクセルで在れば、セルの状態にあわせて(全セル等しい高さとして) Sub test04() 'left=G列のLEFT, top=変動 width=24 height= セルの高さ ActiveSheet.DrawingObjects = Delete For i = 0 To 2 'Step 1 For j = 1 To 6 'Step 1 lt = Cells(1, "G").Left r = 10 + i * (6 + 5) + j tp = Cells(r, "A").Top ht = Cells(r, "A").Height ActiveSheet.CheckBoxes.Add(lt, tp, 24, ht).Select Selection.Characters.Text = "" Next j Next i End Sub のような方法もあると思う。
お礼
なるほど~こんなやり方もあるんですね~ いじ繰り回して原因がわかりました。 画面のサイズをctrl+ドラッグで操作しているんですが、これが小さくなっているとずれるみたいです。 ご回答ありがとうございました!