Excel VBA質問箱 IV

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

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


6552 / 13646 ツリー ←次へ | 前へ→

【44603】ユーザーフォームについて 初心者K 06/11/23(木) 14:28 質問[未読]
【44604】Re:ユーザーフォームについて りん 06/11/23(木) 14:48 発言[未読]
【44605】Re:ユーザーフォームについて 初心者K 06/11/23(木) 15:14 質問[未読]
【44606】Re:ユーザーフォームについて りん 06/11/23(木) 15:26 発言[未読]
【44607】Re:ユーザーフォームについて 初心者K 06/11/23(木) 15:54 お礼[未読]

【44603】ユーザーフォームについて
質問  初心者K  - 06/11/23(木) 14:28 -

引用なし
パスワード
   Excel上にボタンを設け、ボタン押したらユーザーフォームが立ち上がり
TextBox内にデータが自動抽出されるプログラムを作成しましたが、
ユーザーフォームが立ち上がりません。(Initializeが原因なのでしょうか?!)
下記にコードを書きましたので、ご教授願います。

【モジュール】
Sub UserForm1VIEW()
 
  SetCurrentDirectory ("\\・・・")
  Application.Dialogs(xlDialogOpen).Show
 
  vbyesno1 = MsgBox("データを入力しますか??", _
  vbQuestion + vbYesNo, "選択画面")

  If vbyesno1 = vbYes Then
    UserForm1.Show    
  ElseIf vbyesno1 = vbNo Then
    MsgBox ("入力を中止しました。")
  Exit Sub
  
  End If
  
End Sub

【ユーザーフォーム1】
Private Sub UserForm_Initialize()

  With ThisWorkbook

    For i = 1 To .Worksheets.Count
      If Worksheets(i).Name = "A" Then
        Me.txt_1.Value = .Worksheets("A").Range("A1").Value
      End If
    Next i
    
  End With
  
End Sub

【44604】Re:ユーザーフォームについて
発言  りん E-MAIL  - 06/11/23(木) 14:48 -

引用なし
パスワード
   初心者K さん、こんにちわ。


>【ユーザーフォーム1】
>Private Sub UserForm_Initialize()
   ↓ここがフォームのあるブック  
>  With ThisWorkbook
            ↓ここもフォームのあるブック  
>    For i = 1 To .Worksheets.Count
         ↓これはダイアログで新しく開かれたブック
>      If Worksheets(i).Name = "A" Then
            ↓ここもフォームのあるブック  
>        Me.txt_1.Value = .Worksheets("A").Range("A1").Value
>      End If
>    Next i
>    
>  End With
>  
>End Sub
処理対象のブックが錯綜してますが、どのブックのワークシート"A"のセルA1の値をテキストボックスに取り込みたいのでしょうか?

【44605】Re:ユーザーフォームについて
質問  初心者K  - 06/11/23(木) 15:14 -

引用なし
パスワード
   ユーザーフォーム1の内容を下記に変更しました。
下記コードでご教授願います。

【ユーザーフォーム1】
Private Sub UserForm_Initialize()

   txt1.Value = sheets("A").Range("A1").Value

End Sub

▼りん さん:
>初心者K さん、こんにちわ。
>
>
>>【ユーザーフォーム1】
>>Private Sub UserForm_Initialize()
>   ↓ここがフォームのあるブック  
>>  With ThisWorkbook
>            ↓ここもフォームのあるブック  
>>    For i = 1 To .Worksheets.Count
>         ↓これはダイアログで新しく開かれたブック
>>      If Worksheets(i).Name = "A" Then
>            ↓ここもフォームのあるブック  
>>        Me.txt_1.Value = .Worksheets("A").Range("A1").Value
>>      End If
>>    Next i
>>    
>>  End With
>>  
>>End Sub
>処理対象のブックが錯綜してますが、どのブックのワークシート"A"のセルA1の値をテキストボックスに取り込みたいのでしょうか?

【44606】Re:ユーザーフォームについて
発言  りん E-MAIL  - 06/11/23(木) 15:26 -

引用なし
パスワード
   初心者K さん、こんにちわ。

>【ユーザーフォーム1】
>Private Sub UserForm_Initialize()
>
>   txt1.Value = sheets("A").Range("A1").Value
>
>End Sub
ダイアログで開かれたブックが対象として考えました。

標準モジュールに
Sub UserForm1VIEW()
  'SetCurrentDirectory ("\\・・・")
  Application.Dialogs(xlDialogOpen).Show
  If ActiveWorkbook.Name <> ThisWorkbook.Name Then
   '分岐
   vbyesno1 = MsgBox("データを入力しますか??", _
   vbQuestion + vbYesNo, "選択画面")
   '
   If vbyesno1 = vbYes Then
     UserForm1.Show
   ElseIf vbyesno1 = vbNo Then
     MsgBox "入力を中止しました。", vbExclamation
   End If
  Else
   MsgBox "キャンセル又は非表示ブック", vbExclamation
  End If
End Sub

フォームに
Private Sub UserForm_Initialize()
  'ダイアログで開かれたブックが対象
  Me.Txt_1.Value = "このブックにAシートなし"
  With Application.ActiveWorkbook
    For i = 1 To .Worksheets.Count
      If .Worksheets(i).Name = "A" Then
        Me.Txt_1.Value = .Worksheets("A").Range("A1").Value
        Exit For
      End If
    Next i
  End With
End Sub

これでフォームはちゃんと出ましたよ。

【44607】Re:ユーザーフォームについて
お礼  初心者K  - 06/11/23(木) 15:54 -

引用なし
パスワード
   りん さんへ

迅速なご対応ありがとうございました。
やりたいことができました。
また機会があればご教授願います。

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