目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
175 / 277 ←次へ | 前へ→

【114】シート上アクティブXコントロールのタブストリップ(TabStrip)
Excel  Jaka  - 05/10/11(火) 12:29 -

引用なし
パスワード
   その2 シート上アクティブXコントロールのタブストリップ(TabStrip)

・シート上にタブストリップの作るには。
 コントロールツールボックスのコントロールの選択の中から、「Micrsoft Forms 2.0 TabStrip」を選んで作成。

・タブストリップのページが複数合っても、配置した1つのコントロールを共通で使います。
 例えば、リストボックスを1つ配置した場合、ページを切り替えても、同じリストボックスが表示されたままです。

・不可解
 マクロでタブ名を変更後、シートを切り替えると、なぜかブック起動時の状態に戻ってしまう。
 マウスポインタをタブストリップ上に持っていくと、変更した状態になる。
 ブック起動後は、前回保存した時の状態のままだが....。

by Win98se & EXCEL2000 SR-1
  Win2000SP3 & EXCEL97 SR-2

----------------------------------
タブストリップ上にリストボックスを1つ作ったとして。
1,2は、シートモジュール、標準モジュールどちらからでも変更できます。

○タブ名の変更

1、
Sub タブ名変更()
  With Sheets("Sheet1").TabStrip1
    For i = 0 To .Tabs.Count - 1
      .Tabs(i).Caption = "タブ" & (i + 1)
    Next
    'ここから下、タブ名変更がすぐに反映されない為に必要。
    'PCスペック、エクセルバージョン等による?
    If Val(Application.Version) = 8 Then
      ActiveCell.Activate '97だと無いとエラーになる。
    End If         '2000で、エラーになるか未確認の為、97専用にしました。
    .Activate
  End With  
  ActiveCell.Activate
  DoEvents
End Sub

2、
Sub タブ名変更OLE版()
  With Worksheets("Sheet1").OLEObjects("TabStrip1")
    For i = 0 To .Object.Tabs.Count - 1
      .Object.Tabs(i).Caption = "OLE" & (i + 1)
    Next
    'ここから下、タブ名変更がすぐに反映されない為に必要。
    'PCスペック、エクセルバージョン等による?
    If Val(Application.Version) = 8 Then
      ActiveCell.Activate '97だと無いとエラーになる。
    End If         '2000で、エラーになるか未確認の為、97専用にしました。
    .Activate
  End With  
  ActiveCell.Activate
  DoEvents
End Sub

3、
シートモジュールに書く場合、Worksheets("Sheet1")等は、省いても可。

Private Sub CommandButton1_Click()
  TabNm = Array("Tab1", "Tab2", "Tab3")
  With TabStrip1
    For i = 0 To .Tabs.Count - 1
      .Tabs(i).Caption = TabNm(i)
    Next
    'ここから下、タブ名変更がすぐに反映されない為に必要。
    'PCスペック、エクセルバージョン等による?
    If Val(Application.Version) = 8 Then
      ActiveCell.Activate '97だと無いとエラーになる。
    End If         '2000で、エラーになるか未確認の為、97専用にしました。
    .Activate
  End With  
  ActiveCell.Activate
  DoEvents
End Sub


○タブ上リストボックスのリスト作成
 タブ切り替え時にリスト内容が変わるようにする為には、
 1つのリストボックスの内容を切り替え時に都度書き換えます。
 注)リストボックスの内容とリストボックスの高さが合わない場合、
   勝手にリストボックスサイズが、縮小されてしまうのを防ぐ為に
   ListBoxの「IntegralHeightプロパティ」を、Falseにしておいた方が良いです。

タブが3つあったとして。

Private Sub TabStrip1_Change()
  If TabStrip1.Value = 0 Then
    CelAd = "A1:A10"
  ElseIf TabStrip1.Value = 1 Then
    CelAd = "B1:B10"
  Else
    CelAd = "C1:C10"
  End If
  ListBox1.List = Range(CelAd).Value
End Sub

配列とAddItem の使用(タブは2つとして)

Private Sub TabStrip1_Change()
  Dim ListTB As Variant
  ListTB = Array("配列0", "配列1", "配列2", "配列3", "配列4", "配列5")
  Sheets("Sheet1").ListBox1.Clear
  If TabStrip1.Value = 0 Then
    Sheets("Sheet1").ListBox1.List = ListTB
    Erase ListTB
  Else
    For i = 0 To 8
      Sheets("Sheet1").ListBox1.AddItem "AddItem" & i
    Next
  End If
End Sub


○リストボックス選択項目抽出
 通常の取り出し方で良いようです。

1、
Private Sub CommandButton1_Click()
  With ListBox1
    If .ListIndex >= 0 Then
      MsgBox .List(.ListIndex)
    Else
      MsgBox "リストボックス項目が選択されてません。"
    End If
  End With
End Sub

2、OLE版
Sub リストボックス選択項目抽出OLE版()
  With Worksheets("Sheet1").OLEObjects("ListBox1").Object
     If .ListIndex >= 0 Then
      MsgBox .List(.ListIndex)
     Else
      MsgBox "リストボックス項目が選択されてません。"
     End If
  End With
End Sub

3,704 hits

【112】シート上のアクティブX(ActivX)コントロールについて Jaka 05/10/11(火) 11:35 Excel[未読]
【113】シート上アクティブXコントロールのフレーム... Jaka 05/10/11(火) 11:43 Excel[未読]
【115】フレームのバックカラー、フォントカラー変更... Jaka 05/10/14(金) 10:42 Excel[未読]
【114】シート上アクティブXコントロールのタブスト... Jaka 05/10/11(火) 12:29 Excel[未読]
【116】シート上アクティブXコントロールのマルチペ... Jaka 05/10/14(金) 10:47 Excel[未読]

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
175 / 277 ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free