Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


48044 / 76738 ←次へ | 前へ→

【33632】Re:フォームのチェックボックスなどの情報を一時的に保存
回答  Jaka  - 06/1/17(火) 9:25 -

引用なし
パスワード
   フォームの履歴ですよね?
前に書いてみた物ですが...。
シート名に「フォーム履歴」と名づけた物を用意してください。
(非表示にした方が何となく良いかも。)
意味が違ったらすみません。

全部フォームモジュール。

Private Sub UserForm_Initialize()
Dim Cel As Range

'Me.ComboBox1.List = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
'Me.ListBox1.List = Array("AA", "BB", "CC", "DD", "EE", "FF")

With ThisWorkbook.Sheets("フォーム履歴")
  For Each Cel In .Range("A1", .Range("B65536").End(xlUp))
    If Cel.Offset(, 2).Value <> "" Then
     With Me.Controls(Cel.Offset(, 1).Value)
       If Cel.Value = "ComboBox" Or _
         Cel.Value = "ListBox" Then
         .ListIndex = Cel.Offset(, 2).Value
       ElseIf Cel.Value = "CheckBox" Or _
           Cel.Value = "OptionButton" Then
         .Value = Cel.Offset(, 2).Value
       ElseIf Cel.Value = "TextBox" Or _
           Cel.Value = "MultiPage" Then
         .Value = Cel.Offset(, 2).Value
       End If
     End With
    End If
  Next
End With

'無駄な部分もあるけど...。
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  Dim Pt As Control, i As Long
  With ThisWorkbook.Sheets("フォーム履歴")
    For Each Pt In Me.Controls
      i = i + 1
      If .Cells(i, 1).Value <> TypeName(Pt) Then
        .Cells(i, 1).Value = TypeName(Pt)
      End If
      If .Cells(i, 2).Value <> Pt.Name Then
        .Cells(i, 2).Value = Pt.Name
      End If
      If TypeName(Pt) = "ComboBox" Or _
        TypeName(Pt) = "ListBox" Then
        If .Cells(i, 3).Value <> Pt.ListIndex Then
         .Cells(i, 3).Value = Pt.ListIndex
        End If
      ElseIf TypeName(Pt) = "CheckBox" Or _
          TypeName(Pt) = "OptionButton" Then
        If .Cells(i, 3).Value <> Pt.Value Then
         .Cells(i, 3).Value = Pt.Value
        End If
      ElseIf TypeName(Pt) = "TextBox" Or _
          TypeName(Pt) = "MultiPage" Then
        If .Cells(i, 3).Value <> Pt.Value Then
         .Cells(i, 3).Value = Pt.Value
        End If
      End If
    Next
    '.Cells(i + 2, 2).Value = Me.ActiveControl.Name
  End With
End Sub

0 hits

【33622】フォームのチェックボックスなどの情報を一時的に保存 サザエ 06/1/16(月) 23:19 発言
【33632】Re:フォームのチェックボックスなどの情報... Jaka 06/1/17(火) 9:25 回答
【33670】Re:フォームのチェックボックスなどの情報... サザエ 06/1/17(火) 21:08 質問
【33673】Re:フォームのチェックボックスなどの情報... サザエ 06/1/17(火) 21:33 回答

48044 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free