画像のように一度にまとめて転記はできるのでしょうか?
参照は管理№の記載列B列になり、その該当した行の18=使用日・
19=設置または搭載先・20=登録者・21=メモになります
該当する行にそれぞれ転記したいのですが可能でしょうか?
現状このような感じです(中略)
1行だけだと転記できましたが複数になるとダメでした(´;ω;`)
'該当管理№があったらを複数作成すればよいのでしょうか?
If Cells(iCheck, 2).Value = Me.TextBox2.Text Then
If Cells(iCheck, 2).Value = Me.TextBox5.Text Then
この場合、Exit SubとEnd Ifを書くコードに追加ですかね?
Private Sub CommandButton1_Click()
Dim i As Integer
Dim iCheck As Integer
For i = 2 To 20000
If Cells(i, 2).Value = "" Then Exit For
Next
'重複チェック
iCheck = i
For iCheck = 1 To i
'該当管理№があったら
If Cells(iCheck, 2).Value = Me.TextBox2.Text Then
'出荷されてなかったら
'If Cells(iCheck, 23).Value = "" Then
'使用日
Cells(iCheck, 18).Value = Me.TextBox1
Cells(iCheck, 18).Value = Me.TextBox1
'使用先/搭載埼
Cells(iCheck, 19).Value = Me.TextBox3
Cells(iCheck, 19).Value = Me.TextBox6
'担当
Cells(iCheck, 20).Value = Me.ComboBox1
Cells(iCheck, 20).Value = Me.ComboBox1
'メモ
Cells(iCheck, 21).Value = Me.TextBox4
Cells(iCheck, 21).Value = Me.TextBox7
No.1ベストアンサー
- 回答日時:
TextBoxは右に増やして下に行くような作り方をされたのでしょうか・・
各項目で共通のコントロール名+添え字(数値)に編集する事を検討してみてください
まとめて処理をする際に分かりやすいです
ご質問の内容が良く分からないまま回答していますが
TextBox1が使用日でTextBox2管理№TextBox3がその右・・・
下の管理№がTextBox5・・・・同じ順序で並んでいる場合で考えると
Private Sub CommandButton1_Click()
Dim i As Long
Dim iCheck As Long
'For i = 2 To 20000
'If Cells(i, 2).Value = "" Then Exit For
'Next
'重複チェック
'iCheck = i
Dim onBlankCell As Long
onBlankCell = Cells(i, 2).End(xlDown).Row
For i = 1 To 36 Step 3
If Me.Controls("TextBox" & 1 + i).Value = "" Then Exit For
For iCheck = 1 To onBlankCell
'該当管理№があったら
If Cells(iCheck, 2).Value = Me.Controls("TextBox" & 1 + i).Value Then
'出荷されてなかったら
If Cells(iCheck, 23).Value = "" Then
'使用日
Cells(iCheck, 18).Value = Me.TextBox1
'使用先/搭載埼
Cells(iCheck, 19).Value = Me.Controls("TextBox" & 2 + i).Value
'担当
Cells(iCheck, 20).Value = Me.ComboBox1
'メモ
Cells(iCheck, 21).Value = Me.Controls("TextBox" & 3 + i).Value
End If
End If
Next iCheck
Next i
End Sub
コントロールの管理№が空白の場合処理を抜けます
UserFormでのVBAなので検証環境を作るのが面倒なので 未検証です
参考程度で
No.3
- 回答日時:
>コンパイルエラーByRef因数の型が一致しませんになりますね(´;ω;`)
失礼しました
For i = 2 To 20000 なので
ご質問コードにある Dim iCheck As Integer でも良いのですが
行のカウント変数として慣習で
strTranscription側でAs Longにしてしまいました
Dim iCheck As Integer を Dim iCheck As Long としてください
No.2
- 回答日時:
#1です
>'該当管理№があったらを複数作成すればよいのでしょうか?
シート(B列)に該当管理№が複数あったらと言う事でしょうか
それとも複数の該当管理№TextBoxがあったらと言う事でしょうか・・
いづれにしましても 繰り返し処理で総当たりにするか
該当シートのデータ(B列)総当たりで条件分岐するかになると思います
サンプルをステップ実行で内容を確認してみてください
あくまでテスト用として#1と同様な処理結果が得られるであろう
サンプルを提示します (条件により該当TextBoxを変える方法)
Private Sub CommandButton1_Click()
Dim i As Integer
Dim iCheck As Integer
Dim ws As Worksheet
Set ws = ActiveSheet
For i = 2 To 20000
If ws.Cells(i, 2).Value = "" Then Exit For
Next
For iCheck = 2 To i
If ws.Cells(iCheck, 23).Value = "" Then
'該当管理№でSelect
Select Case ws.Cells(iCheck, 2).Value
Case ""
Case Me.TextBox2.Text: Call strTranscription(ws, iCheck, 3, 4)
Case Me.TextBox5.Text: Call strTranscription(ws, iCheck, 6, 7)
Case Me.TextBox8.Text: Call strTranscription(ws, iCheck, 9, 10)
Case Me.TextBox11.Text: Call strTranscription(ws, iCheck, 12, 13)
Case Me.TextBox14.Text: Call strTranscription(ws, iCheck, 15, 16)
Case Me.TextBox17.Text: Call strTranscription(ws, iCheck, 18, 19)
Case Me.TextBox20.Text: Call strTranscription(ws, iCheck, 21, 22)
Case Me.TextBox23.Text: Call strTranscription(ws, iCheck, 24, 25)
Case Me.TextBox26.Text: Call strTranscription(ws, iCheck, 27, 28)
Case Me.TextBox29.Text: Call strTranscription(ws, iCheck, 30, 31)
Case Me.TextBox32.Text: Call strTranscription(ws, iCheck, 33, 34)
Case Me.TextBox35.Text: Call strTranscription(ws, iCheck, 36, 37)
End Select
End If
End Sub
Sub strTranscription(sht As Worksheet, target_row As Long, n As Integer, n1 As Integer)
With sht
.Cells(target_row, 18).Value = Me.Controls("TextBox1").Text
.Cells(target_row, 19).Value = Me.Controls("TextBox" & n).Text
.Cells(target_row, 20).Value = Me.ComboBox1.Value
.Cells(target_row, 21).Value = Me.Controls("TextBox" & n1).Text
End With
End Sub
実際にユーザーフォーム、コントロールを作成して検証は行っていません
#1訂正
onBlankCell = Cells(i, 2).End(xlDown).Row
正
onBlankCell = Cells(2, 2).End(xlDown).Row
For i = 2 To 20000
If ws.Cells(i, 2).Value = "" Then Exit For
Next
と
i = ws.Cells(2, 2).End(xlDown).Row
変数iの値は同じになる可能性が高いです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBA チェックボックスで 5 2023/05/31 17:10
- Visual Basic(VBA) VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。 1 2024/01/08 16:23
- Visual Basic(VBA) 合計数量から引いていく 1 2023/08/29 19:53
- Visual Basic(VBA) VBAコードについて 2 2024/03/10 12:41
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) エクセルマクロでデータ出力の際の条件がうまく機能しません。 5 2023/10/01 12:50
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) ユーザーフォームに別シートからデータを反映させたい。 10 2023/11/03 08:46
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
excelのVBAについて、以下のコードに追加をお願いいたします。
Visual Basic(VBA)
-
ExcelVBAのFindFirstエラーについて
Visual Basic(VBA)
-
VBAの質問です、複数のテキストボックスに同じコメントを
Visual Basic(VBA)
-
-
4
VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。
Visual Basic(VBA)
-
5
コードを直していただきたいです。 以下のコードはネットで拾ったものをほんの少しいじった物なのですが、
Visual Basic(VBA)
-
6
マクロのエラー
Visual Basic(VBA)
-
7
Excel関数またはVBAでの質問になります
Visual Basic(VBA)
-
8
ExcelVBA シート名を複数セルから取得して変更
Visual Basic(VBA)
-
9
ExcelのVBAのことで質問です。 以下のコードを入れ、ボタンを押せば作動させると写真のように画面
Visual Basic(VBA)
-
10
VBAのことで質問です
Visual Basic(VBA)
-
11
Cellsのコードが打てません
Visual Basic(VBA)
-
12
引数に数値、文字列の混在
Visual Basic(VBA)
-
13
エクセルVBAでデータ転記
Visual Basic(VBA)
-
14
Excel VBA マクロ シート名を変えずにA列にあるセル名の名前でファイルの分割をしたいです
Visual Basic(VBA)
-
15
配列のペースト出力結果の書式について
Visual Basic(VBA)
-
16
エクセルvbaについて
Visual Basic(VBA)
-
17
Excel マクロについての相談
Visual Basic(VBA)
-
18
VBAのコードを教えてください
Visual Basic(VBA)
-
19
エクセルVBAの配列について
Visual Basic(VBA)
-
20
以下のコードを実行しても、オブジェクト変数または、withブロック変数が設定されていませんとエラーが
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Excelで、あるセルの値に応じて...
-
IIF関数の使い方
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
文字列の結合を空白行まで実行
-
データグリッドビューの一番最...
-
Changeイベントでの複数セルの...
-
VBAを使って検索したセルをコピ...
-
【Excel VBA】カンマと改行コー...
-
VBAを用いて条件付きの平均値、...
-
VBAのFind関数で結合セルを検索...
-
VBAでのリスト不一致抽出について
-
VBAで、特定の文字より後を削除...
-
【VBA】2つのシートの値を比較...
-
VBAでエラーインジケーターにつ...
-
VBAの構文 3列置きにコピーし...
-
rowsとcolsの意味
-
VBAで10行おきにセルの下に罫線...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
マクロ 最終列をコピーして最終...
-
VBAを使って検索したセルをコピ...
-
データグリッドビューの一番最...
-
URLのリンク切れをマクロを使っ...
-
VBAのFind関数で結合セルを検索...
-
【VBA】2つのシートの値を比較...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
Excel(M365) Vlookup/セル反転(...
-
VBA指定行削除
-
VBAでのリスト不一致抽出について
-
C# dataGridViewの値だけクリア
-
Changeイベントでの複数セルの...
-
VBAで、特定の文字より後を削除...
-
rowsとcolsの意味
おすすめ情報
このUserFormは元々あるデータ(1~17まで)を参照?検索して該当する管理№の行に転記になります、このフォームは使用する記録転記になります
管理№の作成ではなくB列にある管理№を参照してその該当する行の18列目=使用日・
19列目=設置または搭載先・20列目=登録者・21=メモを転記させたいのです
UserFormの個々の管理№から横一列のBOXが対象です