ここから本文です

エクセルのマクロについて質問です。

mty********さん

2019/6/1610:29:22

エクセルのマクロについて質問です。

名簿の作成のマクロですが,ユーザーフォームを表示させ,番号の項目に番号を入力しすると,その番号がある場合には,セルに入力された文字がユーザーフォームに表示され,その番号がなければ,何も表示されず,必要事項を入力すると,セルにその文字が反映されるマクロです。

以下のマクロを組みましたが,以下の点がうまくできなかったです。

① 番号はA6から下に番号を振っていきますが,ユーザーフォームの番号はA3を認識します。
② ComboBox全てのコードを入力しましたが,すべてのComboBoxに反映されていなかったです。


できれば修正をお願いしたいです。


Private Sub ComboBox1_AfterUpdate()
Dim lRow As Long
Dim i As Integer
Dim myFlag As Boolean
Dim myRow As Long
Dim myNo As Variant

If ComboBox1.Value = "" Then
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox7.Value = ""
TextBox8.Value = ""
TextBox9.Value = ""
TextBox10.Value = ""
TextBox11.Value = ""
ComboBox2.Value = ""
ComboBox3.Value = ""
ComboBox4.Value = ""
ComboBox5.Value = ""
ComboBox6.Value = ""
ComboBox7.Value = ""
ComboBox8.Value = ""
Exit Sub
End If

'シートに連番が入力済みか否かを調べる
With Worksheets("参加後援一覧表")
lRow = .Range("A" & Rows.Count).End(xlUp).Row
myNo = .Range("A6:A" & lRow).Value
myFlag = False

For i = LBound(myNo) To UBound(myNo)
If CInt(myNo(i, 1)) = CInt(ComboBox1.Value) Then
myFlag = True
myRow = i + 2
Exit For
End If
Next i

'既に入力されていたら、入力済みのデータを表示する
If myFlag = True Then
TextBox1.Value = .Range("D" & myRow)
TextBox2.Value = .Range("I" & myRow)
TextBox3.Value = .Range("J" & myRow)
TextBox4.Value = .Range("K" & myRow)
TextBox5.Value = .Range("L" & myRow)
TextBox7.Value = .Range("N" & myRow)
TextBox8.Value = .Range("O" & myRow)
TextBox9.Value = .Range("P" & myRow)
TextBox10.Value = .Range("Q" & myRow)
TextBox11.Value = .Range("R" & myRow)
ComboBox2.Value = .Range("B" & myRow)
ComboBox3.Value = .Range("C" & myRow)
ComboBox4.Value = .Range("E" & myRow)
ComboBox5.Value = .Range("F" & myRow)
ComboBox6.Value = .Range("H" & myRow)
ComboBox7.Value = .Range("G" & myRow)
ComboBox8.Value = .Range("M" & myRow)
Else
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox7.Value = ""
TextBox8.Value = ""
TextBox9.Value = ""
TextBox10.Value = ""
TextBox11.Value = ""
ComboBox2.Value = ""
ComboBox3.Value = ""
ComboBox4.Value = ""
ComboBox5.Value = ""
ComboBox6.Value = ""
ComboBox7.Value = ""
ComboBox8.Value = ""
End If
End With

End Sub
Private Sub CommandButton1_Click()
Dim lRow As Long
Dim i As Integer
Dim myFlag As Boolean
Dim myRow As Long
Dim myNo As Variant

If ComboBox1.Value = "" Or IsNumeric(ComboBox1.Value) = False Then
MsgBox "連番には数値を入力してください"
Exit Sub
End If

With Worksheets("参加後援一覧表")
lRow = .Range("A" & Rows.Count).End(xlUp).Row
myNo = .Range("A6:A" & lRow).Value
myFlag = False
For i = LBound(myNo) To UBound(myNo)
If CInt(myNo(i, 1)) = CInt(ComboBox1.Value) Then
myFlag = True
myRow = i + 2
Exit For
End If
Next i

補足If myFlag = False Then myRow = lRow + 1
.Range("A" & myRow).Value = ComboBox1.Value
.Range("B" & myRow).Value = ComboBox2.Value
.Range("C" & myRow).Value = ComboBox3.Value
.Range("E" & myRow).Value = ComboBox4.Value
.Range("F" & myRow).Value = ComboBox5.Value
.Range("H" & myRow).Value = ComboBox6.Value
.Range("G" & myRow).Value = ComboBox7.Value
.Range("M" & myRow).Value = ComboBox8.Value
.Range("D" & myRow).Value = TextBox1.Value
.Range("I" & myRow).Value = TextBox2.Value
.Range("J" & myRow).Value = TextBox3.Value
.Range("K" & myRow).Value = TextBox4.Value
.Range("L" & myRow).Value = TextBox5.Value
.Range("N" & myRow).Value = TextBox7.Value
.Range("O" & myRow).Value = TextBox8.Value
.Range("P" & myRow).Value = TextBox9.Value
.Range("Q" & myRow).Value = TextBox10.Value

閲覧数:
37
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2019/6/1621:04:50

>① 番号はA6から下に番号を振っていきますが,
>ユーザーフォームの番号はA3を認識します。
↓の変更が必要なんでは?


For i = LBound(myNo) To UBound(myNo)
If CInt(myNo(i, 1)) = CInt(ComboBox1.Value) Then
myFlag = True
myRow = i + 2
Exit For
End If
Next i



For i = LBound(myNo) To UBound(myNo)
If CInt(myNo(i, 1)) = CInt(ComboBox1.Value) Then
myFlag = True
myRow = i + 5
Exit For
End If
Next i

恐らく、2つの箇所の同一コードともに変更が必要なんでしょうね。
なぜ同じコードが2つも出てくるのか理解できないですけど。。。



>② ComboBox全てのコードを入力しましたが,すべてのComboBoxに
>反映されていなかったです。
意味不明。

  • 質問者

    mty********さん

    2019/6/1623:01:51

    For i = LBound(myNo) To UBound(myNo)

    この部分でエラーがでますが,何か修正すべきところはあるのでしょうか?

    A6には反映しましたが,いまだ,ComboBoxを8個製作しましたが,文字が表示されません。

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる