
No.5ベストアンサー
- 回答日時:
こんにちは。
朝から、ずっと、かなり試行錯誤を繰り返しました。
やっとサマになったのですが、不確定要素がかなりあって、もしかすると、うまく行かないのではないか、と思います。
フォーム・ツールは、コントロールツールよりは軽いけれども、数が多くなると動かなくなる可能性もあります。その場合は、例えば、ダブルクリック・イベントなどに換えてしまったほうが確実ですね。
なお、現在は、「距離」は、G列(7列目)に出力させるようになっております。7列目ではなければ、Const COL As Integer = 7 の部分を変更してください。
また、行の高さは、13.5 を標準にして作られていますので、それ以下では、誤動作の可能性があります。なるべく、新規のシートでお試しになったほうがよいです。
以下は、おまけとして、消去プログラムがついています。
以下のコードは、必ず、<標準モジュール>に設定してください。
'-----------------------------------------------
Option Explicit
Private Const FIRST_ROW As Integer = 1 '始まりの行
Private Const LAST_ROW As Integer = 80 '終わりの行
Private Const COL As Integer = 7 '7列目に出す
Sub AddOptionButton_Groups()
'フォームツール
Dim i As Long
Dim j As Integer
Dim GB As Object
Dim DefaultRowHeigth As Double
DefaultRowHeigth = ActiveSheet.Cells.EntireRow.RowHeight
For i = FIRST_ROW To LAST_ROW + FIRST_ROW - 1
With ActiveSheet.Cells(i, 1)
For j = 0 To 5
Set GB = ActiveSheet.GroupBoxes.Add(.Left, .Top, .Resize(, 6).Width, .Height)
With GB
.Text = ""
.Visible = False 'グループボックスのラインが消す
End With
With ActiveSheet.OptionButtons.Add(.Offset(, j).Left + .Width / 2, .Offset(, j).Top, .Offset(, j).Height, .Offset(, j).Height)
.OnAction = "OBIndexOut"
.Caption = ""
.Locked = True
.LockedText = True
End With
Next j
GB.Height = DefaultRowHeigth '高さを再設定
End With
Next i
End Sub
Sub OBIndexOut()
'LinkedCell の変り
Dim rng As Range
Set rng = ActiveSheet.OptionButtons(Application.Caller).TopLeftCell
ActiveSheet.Cells(rng.Row, COL).Value = rng.Column
Set rng = Nothing
End Sub
'===============================================
Sub ObjectClear()
'おまけ-フォームツールを全部消去
ActiveSheet.GroupBoxes.Delete
ActiveSheet.OptionButtons.Delete
ActiveSheet.Columns(COL).ClearContents
End Sub
回答有難う御座いました。
やりたかった事はバッチリこれでした。
ただやはり容量が大きくなりました。
一度これで作成してアクセスでも作ってみようと思います。
No.4
- 回答日時:
下記をやってみてどうですか。
3セットにとどめています。
縦に並べています。
質問はこんなことではない場合はすみません。
そうなら、後は本を読んで、グループ化や配置やプロパテイを勉強されてはどうでしょう。
Sub test01()
ActiveSheet.DrawingObjects.Delete
For j = 1 To 3
For i = 1 To 6
ActiveSheet.OLEObjects.Add ClassType:="Forms.OptionButton.1", _
Left:=180, Top:=60 + (j - 1) * 150 + (i - 1) * 20, Width:=16.5, Height:=18
Next i
Next j
End Sub
500÷6の85セット以上並べて、何をしようとしているのでしょうか。
とても他人に使ってもらうシートとしては問題があるように思いますが。
セルの位置と関連づけるなら、セルのTopの位置に関連づければよい。
Sub test01()
ActiveSheet.DrawingObjects.Delete
For j = 1 To 3
For i = 1 To 6
ActiveSheet.OLEObjects.Add ClassType:="Forms.OptionButton.1", _
Left:=Cells(1, "B").Left, Top:=Cells((j - 1) * 7 + i + 2, "A").Top, Width:=16.5, Height:=18
Next i
Next j
End Sub
この回答への補足
回答有難う御座いました。
やりたい内容はこんな感じです。
横向きにすれば出来そうです。
ただメチャメチャ容量大きくなりました。
どうしようか検討中です。
No.3
- 回答日時:
こんばんは。
Wendy02です。不安定な原因が分りました。それは、フォームのツールのそれぞれの実質的な領域があって、グループボックスで囲うと、チェックボックスの上と下が、その範囲をはみ出てしまうのことでした。だから、行の高さ13.5 で作っていくと、うまくいかないのでした。
>リンクするセルのオートフィルタで6番目だけの内容を表示、サマリしたいです。
オプションボックスサンプル
A
1 ● *始まりはどこですか?どういうレイアウトですか?
2 ○
3 ○
4 ○
5 ○
6 ○ *集計はどこに出しますか?
7 ●
8 ○
グループボックスの線は必要ですか?要らなければ消します。
後、コントロールツールと比較してみますと、コントロールツールは、グループ付けが簡単ですが、集計がうまくいきません。また、ひじょうにシート全体が重くなるような気がしました。
この回答への補足
分かり難くてすみません。
実際には他の項目がありますがこんな感じです。
ABCDEFという選択肢と、距離の項目があります。
Fが選択された分の距離の集計を出したいです。
A B C D E F 距離
○ ○ ○ ○ ○ ● 3
○ ○ ● ○ ○ ○ 5
○ ○ ○ ● ○ ○ 6
○ ○ ○ ○ ○ ● 4
○ ○ ● ○ ○ ○ 2
○ ○ ○ ○ ○ ● 7
合計11
宜しくお願いいたします。
No.2
- 回答日時:
こんにちは。
オプションボタンはコントロールツールのほうですか?フォームのほうですか?
位置さえ、はっきりしていれば、マクロでできると思います。
ただし、コントロールが500個というのは、同じシート内では、かなり無理が出てくるかと思います。オプションボタンでなければならない理由はおありですか?計数管理だとすれば、いずれにしても、オプションボタンでなければならない、という理由がありませんね。
今、ためしに、フォーム側のオプションボタンを貼り付けるマクロを作ってみましたが、どうも、グループ化が安定していませんので、その原因を探ってみなければなりませんが。
この回答への補足
回答有難う御座いました。
やはり無理がありますか…
今は、フォームのグループボックスとオプションボタンで作成しようかと思っています。
やりたい内容は、行毎にオプションボタンを置いて、リンクするセルのオートフィルタで6番目だけの内容を表示、サマリしたいです。
No.1
- 回答日時:
ないと思います。
代案1.ユーザーフォームにオプショングループを設定して
セルを選択するかボタンを押すとフォームを表示させてグループを選ばせる
※表示上同様のものを見せたいなら、別シートに
選択1 結果1 選択2 結果2.... 選択5 結果5 選択6 結果6
のような表を作成して範囲をコピーして、
元のシートにShiftを押しながら「編集」「図のリンク貼り付け」で結果を表示する
代案2.アクセスがあるならそちらを利用する。
アクセスの場合はフォームの詳細にオプショングループを作成すれば
各レコードにオプションボタンを設定できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのComboboxでマウスのスク...
-
ACCESSアクションマクロでイン...
-
実行エラー'424' ????
-
エクセルで、抽出したデータだ...
-
動画編集アプリvllo抽出エラー
-
Access サブフォームでの選択行...
-
Access2000、これはいったい・...
-
ACCESSのクエリー抽出条件にIIF...
-
未審査請求包袋抽出表作成とは...
-
X-Ripperというフリーウェアに...
-
ACCESS フォームで入力データ...
-
Excel 文字列から6桁の数値の抽出
-
帳票フォームでのあるコンボボ...
-
ACCESS 複数のフォームから同一...
-
クエリ実行結果0件の場合のフ...
-
MSAccess ロック状態かどうかを...
-
Accessフォームが入力できません。
-
Accessのサブフォームから値を...
-
エクセル関数で住所から丁目番...
-
access クエリでIIF文で抽出条...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelのComboboxでマウスのスク...
-
スクロールバーをVBAで操作したい
-
実行エラー'424' ????
-
ACCESS フォームのサイズ調整
-
マクロボタンが勝手に飛び回る
-
エクセル上に画像を貼り付けて...
-
Accessで任意のフォーム以外直...
-
エクセルのVBAでマクロ実行...
-
Exitイベントから自分自身のコ...
-
Access2000 フォーム表示位置が...
-
ACCESSアクションマクロでイン...
-
ACCESS VBEが勝手に起動します
-
ワークシート上に検索用のボッ...
-
Accessのサブフォームを検索
-
access 最大化した時の画面の...
-
VB(ビジュアルベーシック)...
-
Access2000形式からAccess2007...
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
-
動画編集アプリvllo抽出エラー
おすすめ情報