以前に下記のような内容のプログラムを作成したいと投稿致しましたら
dim row as Integer
for row = 1 to 65535
if (selectSheet.Cells(1, row) = "") then
selectSheet.Cells(1, row) = "#####"
EndIf
をアレンジしたいのです。
上記のプログラムが構築されているコマンドボタンと同じuserformにオプションボタンを5個、コンボボックスを一つ作りました。
オプションボタン1を選択するとコンボボックスにはあ行が。
オプションボタン2を選択するとコンボボックスにはか行が。
オプションボタン3を選択するとコンボボックスにはさ行が。
オプションボタン4を選択するとコンボボックスにはた行が。
オプションボタン5を選択するとコンボボックスにはな行が。
選択できるようにしたいのです。
次に選んだオプションボタンと同名前のシートに上記の#####が入力されるようにしたいのですが、どのようにすればいいのですか?
このように教えて頂きました。
Public myop As Integer 'オプション選択保持用
Private Sub CommandButton1_Click()
Dim row As Integer
Dim mykey As String '比較キー
'選択したオプションボタンにより
'比較キーと選択保持用変数に各値を代入
Select Case True
Case OptionButton1: mykey = "[あ-お]*": myop = 1
Case OptionButton2: mykey = "[か-こ]*": myop = 2
Case OptionButton3: mykey = "[さ-そ]*": myop = 3
Case OptionButton4: mykey = "[た-と]*": myop = 4
Case OptionButton5: mykey = "[な-ほ]*": myop = 5
Case Else: myop = 0
End Select
If myop = 0 Then Exit Sub
For row = 1 To 65535
If ActiveSheet.Cells(1, row).Value Like mykey Then
ActiveSheet.Cells(1, row) = "#####"
End If
Next row
End Sub
これを流用して自分でいじりたいのですが、私が未熟ですので、コードの意味、役割がさっぱりわかりません。
わがままな質問ではございますが、どなたか上記のコードの意味を教えて頂けませんか?
よろしくお願い致します。
これが2回目分です。
■次に、UserForm2~5それぞれに次のコードをコピペする
'----●UserForm2 ----------
Private Sub CommandButton1_Click()
On Error Resume Next
Unload UserForm2
Unload UserForm3
Unload UserForm4
Unload UserForm5
End Sub
Private Sub CommandButton2_Click()
UserForm2.Hide
UserForm3.Show
End Sub
'----●UserForm3 --------
Private Sub CommandButton1_Click()
UserForm3.Hide
UserForm2.Show
End Sub
Private Sub CommandButton2_Click()
UserForm3.Hide
UserForm4.Show
End Sub
'----●UserForm4 --------
Private Sub CommandButton1_Click()
UserForm4.Hide
UserForm3.Show
End Sub
Private Sub CommandButton2_Click()
UserForm4.Hide
UserForm5.Show
End Sub
'----●UserForm5----------
Private Sub CommandButton1_Click()
UserForm5.Hide
UserForm4.Show
End Sub
Private Sub CommandButton2_Click()
Dim Lastrow As Long
With Sheets(KirokuSheetName)
Lastrow = .Cells(Rows.Count, "A").End(xlUp).Row
.Cells(Lastrow + 1, "A").Value = GetCaption(2)
.Cells(Lastrow + 2, "A").Value = GetCaption(3)
.Cells(Lastrow + 3, "A").Value = GetCaption(4)
.Cells(Lastrow + 4, "A").Value = GetCaption(5)
End With
Unload UserForm2
Unload UserForm3
Unload UserForm4
Unload UserForm5
End Sub
Private Function GetCaption(N) As String
Dim i As Integer
GetCaption = ""
For i = 1 To 4
If UserForms(N - 2).Controls("OptionButton" & i).Value Then
GetCaption = UserForms(N - 2).Controls("OptionButton" & i).Caption
Exit For
End If
Next i
End Function
'------------------------------
質問者が先にテストしたブックで動作を確認すること!
以上です。
myRangeです。
昨夜から何回も投稿を試みるが、アクセス集中、で拒否され、今朝も同様。
恐らく、OKWAVEのシステムがバグっているのだろうと推測。
OKWAVE,しっかりせんかぃっ! と叱咤激励したい気分。
と、ま、それは置いといて、今回の投稿もちょと長いので2回に分けてみる。
これは、1回目。
第一段階、上手くいって何よりです。
第二段階ですが、これは、Userform2~5のOptionのCaptionを
【第一】段階のUserForm1で選択したシートのA列に転記、ですね?
'-----------------------------------------
■先ずUserForm1の宣言セクションの変数KirokuSheetNameを削除して
標準モジュールの最初(宣言セクション)に
Public KirokuSheetName As String
とグローバル変数として宣言する
'-----------------------------------------
■印刷シートへ次のコードを追加
Private Sub CommandButton2_Click()
If KirokuSheetName = "" Then
MsgBox "シート名が選択されてない"
Else
UserForm2.Show
End If
End Sub
'-------------------------------------------
ここまでが1回目送信分。
myRange、連続投稿。サンプルコードです。
以下のコードを 印刷シートモジュールにセットして実行する。
先に示したシート名などの条件は必ず遵守すること。
'-------------------------------------------------
Dim ListAdrs
Dim KirokuSheetName As String
Private Sub UserForm_Initialize()
OptionButton1.Caption = "記録1"
OptionButton2.Caption = "記録2"
OptionButton3.Caption = "記録3"
OptionButton4.Caption = "記録4"
ListAdrs = Split("A2:A9,B2:B9,C2:C9,D2:D9", ",")
End Sub
'---------------------------------------------
Private Sub ComboBox1_Enter()
Dim i As Integer
KirokuSheetName = ""
For i = 1 To 4
If Controls("OptionButton" & i).Value Then
ComboBox1.List = Sheets("リスト").Range(ListAdrs(i - 1)).Value
KirokuSheetName = Sheets(Controls("OptionButton" & i).Caption).Name
Exit For
End If
Next i
If KirokuSheetName = "" Then
MsgBox "OptionButtonにチェックが入ってない!"
End If
End Sub
'-----------------------------------------------
Private Sub CommandButton1_Click()
Dim i As Integer
Dim Lastrow As Long
If ComboBox1.ListIndex = -1 Then
MsgBox "ComboBoxが選択されてない"
Exit Sub
End If
With Sheets("印刷")
.Range("A1").Value = ComboBox1.Value
.Range("A4").Value = TextBox1.Value
.Range("A5").Value = TextBox2.Value
.Range("B3").Value = TextBox3.Value
.Range("D3").Value = TextBox4.Value
.Range("D4").Value = TextBox5.Value
End With
With Sheets(KirokuSheetName)
Lastrow = .Cells(Rows.Count, "A").End(xlUp).Row
.Cells(Lastrow + 1, "A").Value = ComboBox1.Value
.Cells(Lastrow + 1, "B").Value = TextBox1.Value
.Cells(Lastrow + 1, "C").Value = TextBox2.Value
.Cells(Lastrow + 1, "D").Value = TextBox3.Value
.Cells(Lastrow + 1, "E").Value = TextBox4.Value
.Cells(Lastrow + 1, "F").Value = TextBox5.Value
End With
Unload UserForm1
End Sub
'----------------------------------------------------
以上です。
質問者
補足
サンプルコードありがとうございました。
また、補足説明に不備があり、申し訳ありませんでした。
ご説明頂いたとおりしましたが、
Private Sub CommandButton1_Click()
Dim i As Integer
Dim Lastrow As Long
If ComboBox1.ListIndex = -1 Then
MsgBox "ComboBoxが選択されてない"
Exit Sub
End If
のIf ComboBox1.ListIndex = -1 Then
で実行エラー424が発生します。
どうすればいいのでしょうか?
補足
今帰宅しました。 昨晩はそのような障害があったんですか・・・。 何度も投稿を試みて頂いてありがとうございました。 頂いたサンプルコードですが、後日確認させて頂きます。 ありがとうございました。 また3回目の投稿にコメントさせて頂きます。