Excel VBA質問箱 IV

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

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


3090 / 13644 ツリー ←次へ | 前へ→

【64343】どなたか助けてください。 どんちゃん 10/1/31(日) 9:18 発言[未読]
【64345】Re:どなたか助けてください。 Hirofumi 10/1/31(日) 9:47 発言[未読]
【64346】Re:どなたか助けてください。 どんちゃん 10/1/31(日) 10:01 発言[未読]
【64347】Re:どなたか助けてください。 Hirofumi 10/1/31(日) 10:57 発言[未読]
【64348】Re:どなたか助けてください。 どんちゃん 10/1/31(日) 11:09 発言[未読]
【64349】Re:どなたか助けてください。 こぎつね 10/1/31(日) 11:20 発言[未読]
【64350】Re:どなたか助けてください。 どんちゃん 10/1/31(日) 11:34 回答[未読]
【64351】Re:どなたか助けてください。 こぎつね 10/1/31(日) 12:32 発言[未読]
【64357】Re:どなたか助けてください。 Hirofumi 10/1/31(日) 13:56 回答[未読]
【64353】Re:どなたか助けてください。 かみちゃん 10/1/31(日) 13:17 発言[未読]
【64354】Re:どなたか助けてください。 どんちゃん 10/1/31(日) 13:23 発言[未読]
【64355】Re:どなたか助けてください。 かみちゃん 10/1/31(日) 13:30 発言[未読]
【64360】Re:どなたか助けてください。 どんちゃん 10/1/31(日) 14:55 発言[未読]
【64362】Re:どなたか助けてください。 かみちゃん 10/1/31(日) 15:42 発言[未読]
【64365】Re:どなたか助けてください。 どんちゃん 10/1/31(日) 16:54 発言[未読]
【64356】Re:どなたか助けてください。 ponpon 10/1/31(日) 13:37 発言[未読]
【64363】Re:どなたか助けてください。 どんちゃん 10/1/31(日) 16:12 発言[未読]
【64366】Re:どなたか助けてください。 かみちゃん 10/1/31(日) 16:55 発言[未読]

【64343】どなたか助けてください。
発言  どんちゃん  - 10/1/31(日) 9:18 -

引用なし
パスワード
   VBA初心者です。
エクセルでプログラムを作成したくて、自分でも色々勉強や試行錯誤を繰り返しましたが、
どうもうまく動作してくれません。
初心者には高望みかもしれませんが、どなたか教えてください。

私が作成したいプログラムは下記の通りです。
シートは全部で6シート。
うち4シートは記録用です。
もう1シートはコンボボックスのリストデータ用です。
残り1シートは印刷用です。
印刷用シートにコマンドボタンが3個あります。
印刷用シートのコマンボボタン1をクリックすると、userform1が呼び出される。

userform1に持たせたい機能
1. 4個のオプションボタンがあり、オプションボタン毎にコンボボックスのリストが変化する。(オプションボタンを選択すると瞬時にコンボボックスが連動される。)
2. テキストボックスが5個ある。
3. コマンドボタンがあり、そのコマンドボタンをクリックすると以下の用に動いてほしい。
○ リストから選択したものが印刷用シートA列1行と記録用シートのA列の空白セルに転送。
○ オプションボタン1を選択した場合は記録用のシート1に、オプションボタン2はシート2、オプションボタン3はシート3、オプションボタン4はシート4としたいです。
○ 5個テキストボックスの内容を印刷用シートのあるセルと、記録用シートの、先ほどと同じ行に転送。
この場合テキストボックス1をB列、テキストボックス2をC列・・・・。

色々調べていましたら、オプションボタンにコンボボックスの内容を連動させる場合、オプションボタンの変更を繰り返していたらリストが正しく動作しないバグが発生するそうですね・・・。
わがままばかりで申し訳ありませんが、考慮済みでお願い致します。
よろしくお願いいたします。

【64345】Re:どなたか助けてください。
発言  Hirofumi  - 10/1/31(日) 9:47 -

引用なし
パスワード
   ▼どんちゃん さん:
>VBA初心者です。
>エクセルでプログラムを作成したくて、自分でも色々勉強や試行錯誤を繰り返しましたが、
>どうもうまく動作してくれません。
>初心者には高望みかもしれませんが、どなたか教えてください。
>
>私が作成したいプログラムは下記の通りです。
>シートは全部で6シート。
>うち4シートは記録用です。
>もう1シートはコンボボックスのリストデータ用です。
>残り1シートは印刷用です。
>印刷用シートにコマンドボタンが3個あります。
>印刷用シートのコマンボボタン1をクリックすると、userform1が呼び出される。
>
>userform1に持たせたい機能
>1. 4個のオプションボタンがあり、オプションボタン毎にコンボボックスのリストが変化する。(オプションボタンを選択すると瞬時にコンボボックスが連動される。)
>2. テキストボックスが5個ある。
>3. コマンドボタンがあり、そのコマンドボタンをクリックすると以下の用に動いてほしい。
>○ リストから選択したものが印刷用シートA列1行と記録用シートのA列の空白セルに転送。
>○ オプションボタン1を選択した場合は記録用のシート1に、オプションボタン2はシート2、オプションボタン3はシート3、オプションボタン4はシート4としたいです。
>○ 5個テキストボックスの内容を印刷用シートのあるセルと、記録用シートの、先ほどと同じ行に転送。
>この場合テキストボックス1をB列、テキストボックス2をC列・・・・。
>
>色々調べていましたら、オプションボタンにコンボボックスの内容を連動させる場合、オプションボタンの変更を繰り返していたらリストが正しく動作しないバグが発生するそうですね・・・。
>わがままばかりで申し訳ありませんが、考慮済みでお願い致します。
>よろしくお願いいたします。

先ず、自分で作ったコードをUpして見たら?

【64346】Re:どなたか助けてください。
発言  どんちゃん  - 10/1/31(日) 10:01 -

引用なし
パスワード
   ▼Hirofumi さん:
>▼どんちゃん さん:
>>VBA初心者です。
>>エクセルでプログラムを作成したくて、自分でも色々勉強や試行錯誤を繰り返しましたが、
>>どうもうまく動作してくれません。
>>初心者には高望みかもしれませんが、どなたか教えてください。
>>
>>私が作成したいプログラムは下記の通りです。
>>シートは全部で6シート。
>>うち4シートは記録用です。
>>もう1シートはコンボボックスのリストデータ用です。
>>残り1シートは印刷用です。
>>印刷用シートにコマンドボタンが3個あります。
>>印刷用シートのコマンボボタン1をクリックすると、userform1が呼び出される。
>>
>>userform1に持たせたい機能
>>1. 4個のオプションボタンがあり、オプションボタン毎にコンボボックスのリストが変化する。(オプションボタンを選択すると瞬時にコンボボックスが連動される。)
>>2. テキストボックスが5個ある。
>>3. コマンドボタンがあり、そのコマンドボタンをクリックすると以下の用に動いてほしい。
>>○ リストから選択したものが印刷用シートA列1行と記録用シートのA列の空白セルに転送。
>>○ オプションボタン1を選択した場合は記録用のシート1に、オプションボタン2はシート2、オプションボタン3はシート3、オプションボタン4はシート4としたいです。
>>○ 5個テキストボックスの内容を印刷用シートのあるセルと、記録用シートの、先ほどと同じ行に転送。
>>この場合テキストボックス1をB列、テキストボックス2をC列・・・・。
>>
>>色々調べていましたら、オプションボタンにコンボボックスの内容を連動させる場合、オプションボタンの変更を繰り返していたらリストが正しく動作しないバグが発生するそうですね・・・。
>>わがままばかりで申し訳ありませんが、考慮済みでお願い致します。
>>よろしくお願いいたします。
>
>先ず、自分で作ったコードをUpして見たら?


色々試したのですが、結局何も完成しておりません・・・。
申し訳ありません。

【64347】Re:どなたか助けてください。
発言  Hirofumi  - 10/1/31(日) 10:57 -

引用なし
パスワード
   >色々試したのですが、結局何も完成しておりません・・・。
>申し訳ありません。

だったら、

1、「コンボボックスのリストデータ用」のListのレイアウトは如何なって居ますか?
2、リストデータ用のどの列とどの列をComboBoxに表示するのですか?
3、ComboBoxで選択された、項目をどのシートのどの位置に転記するのですか?
4、ComboBoxとTextBoxとの関係は(全く関係無いの?)
5、TextBoxの出力先はどのシートのどの列の何行目に出力するの?

上記の様な情報も手抜きしないで書いた方が回答が受けやすいと思いますよ?

【64348】Re:どなたか助けてください。
発言  どんちゃん  - 10/1/31(日) 11:09 -

引用なし
パスワード
   >1、「コンボボックスのリストデータ用」のListのレイアウトは如何なって居ますか?
>2、リストデータ用のどの列とどの列をComboBoxに表示するのですか?

コンボボックスのリストはデータ用シートのA1:A7とB1:B7とC1:C7とD1:D7となっております。
オプションボタン1を選択した場合はA列のを。
オプションボタン2の場合はB列を。
といった具合にしたいのです。この今は7行目までしかありませんが、今後もリストを付け足す可能性があるので、できれば列すべてをリスト化させたいです。


>3、ComboBoxで選択された、項目をどのシートのどの位置に転記するのですか?
コンボボックスで選択された項目をオプションボタンで選択されたシートのA列の空白セルに転記させたいのです。
オプションボタンで選択されたという意味は
オプションボタン1を選択した場合、コンボボックスはA列が表示され、この後のテキストボックスとかは記録用シート1に転記される。
といった具合です。

>4、ComboBoxとTextBoxとの関係は(全く関係無いの?)
>5、TextBoxの出力先はどのシートのどの列の何行目に出力するの?
関係はありません。ただデータを蓄積していきたいので、コンボボックスが転記される同じ行に転記されるようにしたいです。

説明不足で申し訳ありません。
情報を自分なりに提示していますが、うまくつたわっていないうえに、情報量が不足しているようですね。
VBA]初心者で右も左もわからないとはいえ、大変失礼をしました。
申し訳ありませんでした。

【64349】Re:どなたか助けてください。
発言  こぎつね  - 10/1/31(日) 11:20 -

引用なし
パスワード
   ちょっとした疑問ですが。

複数のユーザーフォームは必要なのでしょうか?

構成が同じであればマルチページでの対応も
可能な感じはしますけど。
⇒タブストリップの方がいいのかな?

話が飛んでごめんなさい。

【64350】Re:どなたか助けてください。
回答  どんちゃん  - 10/1/31(日) 11:34 -

引用なし
パスワード
   こぎつねさん返答ありがとうございます。
申し訳ないことに専門用語がよくわかりません。
私がいえることは、userformはひとつしかないことです。

userformは次のようになっています。

オプションボタン1 オプションボタン2 
オプションボタン3 オプションボタン4

コンボボックス

テキストボックス1 テキストボックス2 テキストボックス3
テキストボックス4 テキストボックス5

コマンドボタン

このようになっています。

【64351】Re:どなたか助けてください。
発言  こぎつね  - 10/1/31(日) 12:32 -

引用なし
パスワード
   ▼どんちゃん さん:
>こぎつねさん返答ありがとうございます。
>申し訳ないことに専門用語がよくわかりません。
>私がいえることは、userformはひとつしかないことです。

何か私の勘違いだったようですね。
他の質問と混乱したようです。
すいません。

【64353】Re:どなたか助けてください。
発言  かみちゃん E-MAIL  - 10/1/31(日) 13:17 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>VBA初心者です。
>エクセルでプログラムを作成したくて、自分でも色々勉強や試行錯誤を繰り返しましたが、
>どうもうまく動作してくれません。
>初心者には高望みかもしれませんが、どなたか教えてください。

かなりお急ぎで、仕様が割りとしっかりしているご様子なので、誰か個人的に連絡できる人に相談したほうが早いのでは?
その後、掲示板で質問した以上、解決結果を報告するとか・・・

【64354】Re:どなたか助けてください。
発言  どんちゃん  - 10/1/31(日) 13:23 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>VBA初心者です。
>>エクセルでプログラムを作成したくて、自分でも色々勉強や試行錯誤を繰り返しましたが、
>>どうもうまく動作してくれません。
>>初心者には高望みかもしれませんが、どなたか教えてください。
>
>かなりお急ぎで、仕様が割りとしっかりしているご様子なので、誰か個人的に連絡できる人に相談したほうが早いのでは?
>その後、掲示板で質問した以上、解決結果を報告するとか・・・

相談できる方がいないので困っています・・・。
ご教授願います。

【64355】Re:どなたか助けてください。
発言  かみちゃん E-MAIL  - 10/1/31(日) 13:30 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>相談できる方がいないので困っています・・・。

いや、ですから、なんのために、メールアドレスを公開して、書き込みをしたかを考えていただけると・・・
私でよかったら、相談に乗りますよ。

その代わり、結果を掲示板に報告していただけるのでしたらという前提になりますけど。

【64356】Re:どなたか助けてください。
発言  ponpon  - 10/1/31(日) 13:37 -

引用なし
パスワード
   こんにちは。

課題をいくつかに分けて一つずつ解決していった方がよいと思います。


>1. 4個のオプションボタンがあり、オプションボタン毎にコンボボックスのリストが変化する。(オプションボタンを選択すると瞬時にコンボボックスが連動される。)

ここだけsheet1にコンボのリストがあるとして
こんな感じでできると思います。
Option Explicit

Private Sub OptionButton1_Change()
 If Me.OptionButton1.Value = True Then
   Me.ComboBox1.Clear
  With Sheets("Sheet1")
   Me.ComboBox1.List = Application.Transpose(.Range(.Cells(1, "A"), .Cells(Rows.Count, "A").End(xlUp)).Value)
  End With
 End If

End Sub

Private Sub OptionButton2_Change()
 If Me.OptionButton2.Value = True Then
   Me.ComboBox1.Clear
  With Sheets("Sheet1")
   Me.ComboBox1.List = Application.Transpose(.Range(.Cells(1, "B"), .Cells(Rows.Count, "B").End(xlUp)).Value)
  End With
 End If

End Sub

Private Sub OptionButton3_Change()
 If Me.OptionButton3.Value = True Then
   Me.ComboBox1.Clear
  With Sheets("Sheet1")
   Me.ComboBox1.List = Application.Transpose(.Range(.Cells(1, "C"), .Cells(Rows.Count, "C").End(xlUp)).Value)
  End With
 End If

End Sub

Private Sub OptionButton4_Change()
 If Me.OptionButton4.Value = True Then
   Me.ComboBox1.Clear
  With Sheets("Sheet1")
   Me.ComboBox1.List = Application.Transpose(.Range(.Cells(1, "D"), .Cells(Rows.Count, "D").End(xlUp)).Value)
  End With
 End If

End Sub

【64357】Re:どなたか助けてください。
回答  Hirofumi  - 10/1/31(日) 13:56 -

引用なし
パスワード
   こんなのでは?

UserFormのコントロールは以下の様にします
Frame1:OptionButton1〜4が入っています
ComboBox1
TextBox1〜5
CommandButon1

Option Explicit

Private rngPrint As Range '基準セル位置
Private rngRec() As Range '基準セル位置
Private rngList As Range 'ComboBoxのList用シートの基準セル位置

Private Sub UserForm_Initialize()

  Dim i As Long
  Dim vntName As Variant
  
  '印刷用シートの基準位置を設定
  Set rngPrint = Worksheets("印刷用").Range("A1")
  
  '各記録用シートの名前を列挙
  vntName = Array("記録用1", "記録用2", "記録用3", "記録用4")
  ReDim rngRec(UBound(vntName))
  For i = 0 To UBound(vntName)
    '各記録用シートの基準位置を設定
    Set rngRec(i) = Worksheets(vntName(i)).Range("A1")
    'OptionButtonのTagに番号を設定
    Controls("OptionButton" & i + 1).Tag = i
  Next i
  
  'ComboBoxのList用シートの基準セル位置を設定
  Set rngList = Worksheets("リストデータ用").Range("A1")
  
  OptionButton1.Value = 1
  
End Sub

Private Sub UserForm_Terminate()

  Dim i As Long
  
  Set rngPrint = Nothing
  
  For i = 0 To UBound(rngRec)
    Set rngRec(i) = Nothing
  Next i
  
  Set rngList = Nothing

End Sub

Private Sub CommandButton1_Click()

  Dim i As Long
  
  'ComboBox1に入力が無ければ
'  If ComboBox1.ListCount = -1 Then
  If ComboBox1.Text = "" Then
    Exit Sub
  End If
  
  With rngPrint
    '印刷用シートA列1行に値を転記
    .Value = ComboBox1.Text
    'TextBoxの値を転記
    .Offset(, 1).Value = TextBox1.Text
    .Offset(, 2).Value = TextBox2.Text
    .Offset(, 3).Value = TextBox3.Text
    .Offset(, 4).Value = TextBox4.Text
    .Offset(, 5).Value = TextBox5.Text
  End With
  
  With rngRec(Me.Tag)
    Do Until IsEmpty(.Offset(i).Value)
      i = i + 1
    Loop
    '記録用シートのA列の空白セルに転送
    '印刷用シートA列1行に値を転記
    .Offset(i).Value = ComboBox1.Text
    'TextBoxの値を転記
    .Offset(i, 1).Value = TextBox1.Text
    .Offset(i, 2).Value = TextBox2.Text
    .Offset(i, 3).Value = TextBox3.Text
    .Offset(i, 4).Value = TextBox4.Text
    .Offset(i, 5).Value = TextBox5.Text
  End With
  
  TextBox1.Text = ""
  TextBox2.Text = ""
  TextBox3.Text = ""
  TextBox4.Text = ""
  TextBox5.Text = ""

End Sub

Private Sub OptionButton1_Click()

  GetComboList OptionButton1.Tag
  
End Sub

Private Sub OptionButton2_Click()

  GetComboList OptionButton2.Tag

End Sub

Private Sub OptionButton3_Click()

  GetComboList OptionButton3.Tag

End Sub

Private Sub OptionButton4_Click()

  GetComboList OptionButton4.Tag

End Sub

Private Sub GetComboList(vntNumb As Variant)

  Dim lngRow As Long
  
  Me.Tag = vntNumb
  
  With rngList.Offset(, vntNumb)
    '行数の取得
    lngRow = .Offset(Rows.Count - .Row).End(xlUp).Row - .Row + 1
    If lngRow >= 1 And .Value <> "" Then
      ComboBox1.Text = ""
      ComboBox1.Clear
      ComboBox1.List = .Resize(lngRow).Value
    End If
  End With
  
End Sub

【64360】Re:どなたか助けてください。
発言  どんちゃん  - 10/1/31(日) 14:55 -

引用なし
パスワード
   ありがとうございます。
未熟者で申し訳ないです。

業務効率化が目的ですけど・・・。
エクセルをそのものを一度送ったほうがいいのですかね?

【64362】Re:どなたか助けてください。
発言  かみちゃん E-MAIL  - 10/1/31(日) 15:42 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>未熟者で申し訳ないです。
>
>業務効率化が目的ですけど・・・。
>エクセルをそのものを一度送ったほうがいいのですかね?

もし見せていただけるのなら、私は構いません。
他の方からも回答はついているようですから、そのあたりの判断はお任せします。

【64363】Re:どなたか助けてください。
発言  どんちゃん  - 10/1/31(日) 16:12 -

引用なし
パスワード
   こんにちは。
返答ありがとうございます。
コードもありがとうございました。
そちらのコードはどこに記入すればいいのですか?

色々やってたらもうどこにどのコードを入れたらいいのかわからなくなってきまっした・・・。
ご教授願います

【64365】Re:どなたか助けてください。
発言  どんちゃん  - 10/1/31(日) 16:54 -

引用なし
パスワード
   送信いたしました!

【64366】Re:どなたか助けてください。
発言  かみちゃん E-MAIL  - 10/1/31(日) 16:55 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>そちらのコードはどこに記入すればいいのですか?

OptionButtonを配置しているのは、UserForm1なのでは?
であれば、UserForm1のモジュールです。

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