[[20041122225810]] 『入力規則のリストボタンが消える』(てつ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『入力規則のリストボタンが消える』(てつ)

 B1のセルは、入力規則のリストによって、「名前変更」と「写真表示」が選べるようにしています。
 しかし、なぜか、急に入力規則のリストボタンがなくなってしまい、リストから選べなくなりました。
 全く理由もわからず、困っていましたが、ネットで調べているとたった一つだけ、次のような情報がありました。

 >入力規則を設定したのに、セルをクリックしても▼が表示されないのです
 > 入力規則でリストを作成して作業していました。 
 >突然セルをクリックしても一覧が表示されないのです。 
 >今までは使えていました。 
 >セルの入力規則を見るとちゃんと設定してあるのですが 
 >原因が分かりません。 

 >赤ワニ in 2004/01/19(月) 12:46:25 
 >原因は知りませんが、リストのボタンは壊れてしまうことがあります。 
 >図形を削除するマクロやアドインが一緒に削除することもあります。 
 >全セルを新規シートにコピーすると復活するかも。 

 とあり、図形を削除するマクロのせいだとわかりました。
 確かに、写真入座席表を作成し、マクロで写真を削除していました。
 原因は、わかったのですが、回避する方法がわかりません。
 どのようにすれば、回避あるいは対策が取れるでしょうか。
 毎回新規シートに全セルコピーもできませんので、よろしくお願いします。
 (てつ)


 またまた案だけですが(^_^A;
 以下の様にオプションボタンを配置するって言うのはどうでしょうか。
 直接オプションボタンの値を取得できれば良いのですが、良くわかりません_/ ̄|○ il||li
 ボタンに隠れるセル(参考ではB2セル)をリンク先にして、
 マクロの中でB2セルが1の場合は、名前の変更、2の場合は写真の表示をするようコードを修正。
http://skyblue123.hp.infoseek.co.jp/Excel/Butoon1.xls

 やっとわかりました(^_^A;
 以下のような感じです。
 これなら上記のようにセルを使わずに済みます。
Sub Test()
Set MyOption = ActiveSheet.Shapes("Option1")
    If MyOption.ControlFormat.Value = 1 Then
        '名前の変更操作
    Else
        '写真の表示処理
    End If
End Sub

 (川野鮎太郎)

 オプションボタンというものがあるのですね。初めて知りました。
 最初の情報を元にどうにかうまく配置することができました。
 画面上が隙間もないほど埋め尽くされているので、どこにこのボタンを配置しようか
 と迷いました。
 結局B1セルの中に配置しました。かなり小さくなってわかりづらくなったので、
 説明のコメントをB1セルに貼り付け表示できるようにしました。

 ところで、さわっていて最後までわからなかったのが、表示される文字の大きさの
 変え方なのですが、どのようにすればいいのでしょうか。

 完成後、写真を削除するマクロを使って試しました。オプションボタンは消えずにありました。
 思っているような動作をしてくれています。
 ありがとうございました。

 セルを使わずにすむ方法は、明日(といっていも今日ですね)、おこなってみます。
 (てつ)

 >ところで、さわっていて最後までわからなかったのが、表示される文字の大きさの
 >変え方なのですが、どのようにすればいいのでしょうか。
 フォームツールバーのオプションボタンでは、できないと思います。
 コントロールツールボックスのオプションボタンならできます。

 チェックボックスでもいいかもしれませんね。 (wizik)


 >画面上が隙間もないほど埋め尽くされているので
 確かにイッパイ配置されていましたね(^_^A;

 右側の大きいサイズで表示とか、小さいサイズで・・・とか、同じような項目がいくつかありましたよね。

 そう言う同類の項目はコンボボックスを使うってのもすっきりするかも知れませんね。

 (川野鮎太郎)

 wizikさん、川野さん、ありがとうございます。
 オプションボタンにも、いくつか種類があるのですね。わかりました。
 コンボボックスなど今まで使ったことがないので、今後利用してみたいと思います。
 セルを使わない方法もできるのですね。でも、そのために新たに作ったボタン(Test)を
  クリックする必要があるようなので、ボタンに隠れるセルを利用するやり方でいきたいと思います。
 皆さんのおかげで、かっこよく写真も表示できるようになりました。ありがとうございました。
 (てつ)


 一つだけ・・・。
 >(Test)をクリックする必要があるようなので、

 てつさんが作ったマクロの中に入れ込むというか、合体させるだけですけどね(^_^A;
 (川野鮎太郎)

 多分これでいけると思います。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim filepath As String
Dim A As Integer
Dim MyOption As Object
  
Set MyOption = ActiveSheet.Shapes("Option1")
If Application.Intersect(Target, Range("B2:B37")) Is Nothing Then Exit Sub
If MyOption.ControlFormat.Value = 1 Then Exit Sub 'オプションボタンが名前の変更の場合終了
   'オプションボタンが写真表示のとき
    Cancel = True
    filepath = ActiveWorkbook.Path
    Worksheets("座席表2").Activate
    A = Target.Offset(0, 4).Value     'ここに出席番号があり、それが画像の名前と一致する。
    On Error GoTo ErrorHandler
    With UserForm1
        .Image1.Picture = LoadPicture(filepath & "\写真\" & A & ".jpg")
        .Caption = ActiveCell.Value
        .Show vbModeless
    End With
    Exit Sub    'エラーが発生しなかった場合、ここでプログラム終了
ErrorHandler:   'エラーが発生した時、「:On Error GoTo ErrorHandler」から処理がここへ移る
    With UserForm1
        .Caption = "ありません"
        .Image1.Picture = LoadPicture(filepath & "\写真\花.jpg")
        .Show vbModeless
    End With
End Sub
 (川野鮎太郎)


 川野さん、遅くまで、ありがとうございます。ただいま、編集を終わり更新しようとしたら、

 【更新の衝突】が起きました
 あなたがこのページを編集している間に、他の人が同じページを更新してしまったようです。 
 以下に、あなたの編集したテキストがありますので、あなたの編集内容が失われないように
 いますぐ、メモ帳などにコピー&ペーストしてください。 

 との 指示を受けました。具体的なマクロを教えていただく前の文章で、
 上記の後半を読む前に書いたものですが、そのまま載せますので、よろしくお願いします。

 Testの件ですが、Sub Test()から始まっているので、モジュールのところに貼り付けるの
 だろうと思い、それなら動かすためにボタンを作ってクリックする必要があるだろうと思った
 のでした。今ひとつ、マクロが分かっていませんので、理解できていません。
 教えていただいたTestマクロは、 どこに貼り付けたらいいのでしょうか。
 座席表2のシートにもそのまま(もちろん名前の変更操作などは入れて)貼り付けたのですが
 うまくいきませんでした。

 こう書きながらもう一度あれこれ試してみました。ようやくわかりました。

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Dim filepath As String
 Dim A As Integer
 If Application.Intersect(Target, Range("B2:B37")) Is Nothing Then Exit Sub

 この後を削除し、教えていただいたマクロの最初の Sub Test() は、省いて
 その続きからを貼り付けたいいのですね。理解できました。うまく動きました。
 こちらの方が確かに便利ですね。ありがとうございます。

 ところで、
 困ったことがおきました。
 せっかく教えていただき、うまく配置できたオプションボタンが消えてしまいます。
 実は、マクロで 直線とjpg(班の区切り線3本と班名jpg6つ)を貼り付け、不要になった
 時に同じくマクロで削除していたのですが、
 それを実行すると、今回貼り付けたオプションボタンまで、削除されてしまいます。
 シートには、他にもオートシェイプが多数存在します。(こちらは、消えません)
 この直線とjpgのみマクロで削除するには,どのようにしたら良いのでしょうか。
 これらは、H2:R23  H29:R105 までの範囲に存在します。
 その対策にネットで調べて、あれこれ応用して独力で頑張ってみたのですが、
 途中でエラーが起こり、うまく進みません。
 どうぞよろしくお願いいたします。

 直線等を削除するための今まで使っていたマクロです。オプションボタンまで削除されてしまいます。

 Sub 班名と区切り線を削除()
   Application.ScreenUpdating = False
    保護の解除
    Dim SH As Shape
    Set mydocument = ThisWorkbook.ActiveSheet
      For Each SH In mydocument.Shapes
    If SH.AutoShapeType = -2 Then
        SH.Delete
    End If
    Next SH
    計算式の保護
    Application.ScreenUpdating = True
    Range("B1").Select
 End Sub

 (てつ)


 こんな感じでシェープの名前を限定して処理すればどうでしょうか。
Sub 班名と区切り線を削除()
Dim SH As Shape
Application.ScreenUpdating = False
    '保護の解除
Set mydocument = ThisWorkbook.ActiveSheet
    For Each SH In mydocument.Shapes
        If SH.AutoShapeType = -2 Then
            If SH.Name = "Group Box 1" Or SH.Name = "Option1" Or SH.Name = "Option2" Then
            Else
                SH.Delete
            End If
        End If
    Next SH
    '計算式の保護
Application.ScreenUpdating = True
Range("B1").Select
End Sub

 こっちが良いかな・・・。
    If SH.Name <> "Group Box 1" And SH.Name <> "Option1" And SH.Name <> "Option2" Then
        SH.Delete
    End If

 (川野鮎太郎)


 川野さん、ありがとうございました。
 どちらの方法でもうまくできました。今後ともよろしくお願いいたします。
 (てつ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.