Sh1(入力シート)のI25セルに枚数、K25セルに金額等のデータをSh4(A9引換帳)の
G列、Q列等に転記するコードですが、Sh4に表示されません。次のコードのどこに原因があるか教えて下さい。なお、都合上 画像を添付できない旨ご理解ください。
Sub A9引換帳()
Dim mRow As Long
If Not IsDate(Range("I8").Value) Then Exit Sub ' セルI8の値が日付でない場合、サブルーチンを終了する
Select Case Month(Range("I8").Value) ' セルI8の値が日付である場合、その月を取得する
' 以下に各月ごとの処理を記述する
Case 4: mRow = 1 ' 4月の場合の処理をする、以下同じ
Case 5: mRow = 38
Case 6: mRow = 95
Case 7: mRow = 139
Case 8: mRow = 176
Case 9: mRow = 218
Case 10: mRow = 265
Case 11: mRow = 307
Case 12: mRow = 349
Case 1: mRow = 393
Case 2: mRow = 433
Case 3: mRow = 475
End Select
Call Giftbook_main(mRow)
End Sub
Public Sub Giftbook_main(mRow As Long)
Dim sh4 As Worksheet
Dim sh1 As Worksheet
Dim maxrow As Long
Dim Row As Long
Dim dicT As Object
Dim key1 As Variant
Dim key2 As Variant
Dim mRow As Long
Dim lastRow As Long ' 最後の記録行を追跡する変数
Set sh4 = Worksheets("A9引換帳")
Set sh1 = Worksheets("入力シート")
Set dicT = CreateObject("Scripting.Dictionary")
maxrow = sh1.Cells(Rows.Count, "E").End(xlUp).Row 'E伝票番号(一連番号)
For Row = 8 To maxrow '8行から最終までの行
key1 = sh4.Cells(Row, "E").Value 'A9引換帳の伝票番号"E"の値の行
dicT(key1) = Row
Next
'伝票番号を記憶
key2 = sh1.Cells(8, "E").Value
dicT(key2) = Row
If dicT.exists(key2) = False Then
Exit Sub
End If
If sh1.Cells(8, "L").Value = "" Then
MsgBox ("年が未表示です")
End If
Row = dicT(key1)
If sh1.Cells(25, "I").Value = "0" Then 'A9セルの枚数が"0"ならば
sh4.Cells(Row + mRow, "F").EntireRow.Delete 'A9引換帳のF列の(Row + mRow)行目を削除する
End If
'A9引換帳に転記する。
If sh1.Cells(25, "I").Value <> "0" And sh1.Cells(25, "I").Value <> "0" Then '25行目の"I"列のセルの値が"0"でない場合
' 最後の記録行を更新
Do While sh4.Cells(lastRow + mRow + 1, "F").Value <> "" '(lastRow + mRow + 1)行目の"F"列のセルの値が空でない間、
lastRow = lastRow + 1 'lastRowの値を1ずつ増やす処理を繰り返す
Loop
lastRow = lastRow + 1
sh4.Cells(lastRow + mRow, "F").Value = sh1.Cells(12, "E").Value '名前
sh4.Cells(lastRow + mRow, "G").Value = sh1.Cells(25, "I").Value '枚数
sh4.Cells(lastRow + mRow, "D").Value = sh1.Cells(8, "N").Value '日
sh4.Cells(lastRow + mRow, "C").Value = sh1.Cells(8, "M").Value '月
sh4.Cells(lastRow + mRow, "E").Value = sh1.Cells(8, "E").Value '伝票番号
sh4.Cells(lastRow + mRow, "Q").Value = sh1.Cells(25, "K").Value '金額
End If
' 重複チェック
Dim exists As Boolean
exists = False
Dim i As Long
For i = 8 To sh4.Cells(Rows.Count, "E").End(xlUp).Row
If sh4.Cells(i, "E").Value = sh1.Cells(8, "E").Value Then
exists = True
Exit For
End If
Next i
If Not exists Then
' データを転記する
sh4.Cells(lastRow + 1, "F").Value = sh1.Cells(12, "E").Value '名前
sh4.Cells(lastRow + 1, "G").Value = sh1.Cells(25, "I").Value '枚数
sh4.Cells(lastRow + 1, "D").Value = sh1.Cells(8, "N").Value '日
sh4.Cells(lastRow + 1, "C").Value = sh1.Cells(8, "M").Value '月
sh4.Cells(lastRow + 1, "E").Value = sh1.Cells(8, "E").Value '伝票番号
sh4.Cells(lastRow + 1, "Q").Value = sh1.Cells(25, "K").Value '金額
End If
End Sub
No.1ベストアンサー
- 回答日時:
Public Sub Giftbook_main(mRow As Long) 内の
この宣言を削除。
Dim mRow As Long
ここは、andで綴っているのが同じ条件なので、条件指定間違いでなければ1つでいい。
If sh1.Cells(25, "I").Value <> "0" And sh1.Cells(25, "I").Value <> "0" Then '25行目の"I"列のセルの値が"0"でない場合
ざっくりと動作するであろう範囲でブックを作成して実行したところでは、「A9引換帳」で設定したmRow+1行目に転記されました。
実際にうまく動作しない状態のサンプルデータが検証しやすいのですが…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Excel(エクセル) エクセルマクロでデータ出力の際の条件がうまく機能しません。 5 2023/10/01 12:50
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) ユーザーフォームに別シートからデータを反映させたい。 10 2023/11/03 08:46
- Excel(エクセル) エクセルマクロでデータ出力の際の条件がうまく機能しません。 2 2023/09/30 13:01
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。 6 2023/03/21 16:12
- Visual Basic(VBA) エクセルマクロで出力行の増やし方がわかりません。 4 2023/09/28 23:40
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
Excel VBAでの数値の計算についておしえてください
Visual Basic(VBA)
-
VBA コード
Visual Basic(VBA)
-
VBA
Visual Basic(VBA)
-
-
4
ご教授お願いします。#NUM!が解消されません。
Visual Basic(VBA)
-
5
excelのVBAについて、以下のコードに追加をお願いいたします。
Visual Basic(VBA)
-
6
Cellsのコードが打てません
Visual Basic(VBA)
-
7
引数に数値、文字列の混在
Visual Basic(VBA)
-
8
以下のコードを実行しても、オブジェクト変数または、withブロック変数が設定されていませんとエラーが
Visual Basic(VBA)
-
9
VBEを開くのにコマンド名が「Visual Basic」な理由はなぜ?
Visual Basic(VBA)
-
10
Excel VBAマクロをマスターするのに、どれ位時間掛かりますか?
Visual Basic(VBA)
-
11
ExcelのVBAのことで質問です。 以下のコードを入れ、ボタンを押せば作動させると写真のように画面
Visual Basic(VBA)
-
12
ファイル名の日付について教えて頂けますかExcel
Visual Basic(VBA)
-
13
コードを直していただきたいです。 以下のコードはネットで拾ったものをほんの少しいじった物なのですが、
Visual Basic(VBA)
-
14
for 文の 繰り返し処理に使えるのかどうかについて
Visual Basic(VBA)
-
15
VBAコードについて
Visual Basic(VBA)
-
16
VBAのコードを教えてください
Visual Basic(VBA)
-
17
Excel VBA ダブルクリックで入力 複数まとめる
Visual Basic(VBA)
-
18
excelのVBAで画像の動作をさせるため、プログラムを教えてください。
Visual Basic(VBA)
-
19
マクロのエラー
Visual Basic(VBA)
-
20
近似した文字列を置換するエクセル関数またはVBAについて
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
Excle VBA Findメソッドについて
-
Excelで指定した日付から過去の...
-
VBA コピーして次の値まで貼り...
-
VBAコマンドボタンを押すたびに...
-
VBAの計算で@が出てしまう件
-
DataGridViewの各セル幅を自由...
-
【Excel】指定したセルの名前で...
-
Excel VBA、 別ブックの最終行...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
Excelのハイパーリンクにマクロ...
-
ExcelのVBAで数字と文字列をマ...
-
EXCELで変数をペーストしたい
-
指定文字以外のカウント
-
指定した条件で行セルを非表示...
-
【VBA】指定したセルと同じ値で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
VBAの計算で@が出てしまう件
-
Excelのプルダウンで2列分の情...
-
EXCELで変数をペーストしたい
-
VBA ユーザーフォーム ボタンク...
-
VBAでセルをクリックする回...
-
Excel VBA、 別ブックの最終行...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
-
VBAを使用した時間管理
-
”戻り値”が変化したときに、マ...
-
Sub 要具ライフ() ActiveSheet....
おすすめ情報