今回動画4の内容を真似して下記のように実装コートを書きました。 Sub 引当() Dim cHida As Long Dim cMigi As Long Dim Lastrow As Long Lastrow = Range("a65536").End(xlUp).Row
For cMigi = 5 To 735 For cHida = 5 To Lastrow If Range("A" & cHida).Value = Range("E" & cMigi).Value Then Range("b" & cHida).Value = Range("F" & cMigi).Value Range("a" & cHida).Interior.ColorIndex = 4 Else Range("b" & cHida).Value = "非BOM" Range("a" & cHida).Interior.ColorIndex = 22 End If Next Next End Sub 何故かF列の内容をうまくB列に反映されていないです。 大変お手数ですが、見て頂けると幸いです。 どうぞよろしくお願いいたします。
> 小川先生 > 大変お世話になっております。 > 中級編を一通りに勉強を完了しました。 > VBAを少しずつ実務に応用していきます。 > > 今回動画4の内容を真似して下記のように実装コートを書きました。 > Sub 引当() > Dim cHida As Long > Dim cMigi As Long > Dim Lastrow As Long > Lastrow = Range("a65536").End(xlUp).Row > > For cMigi = 5 To 735 > For cHida = 5 To Lastrow > If Range("A" & cHida).Value = Range("E" & cMigi).Value Then > Range("b" & cHida).Value = Range("F" & cMigi).Value > Range("a" & cHida).Interior.ColorIndex = 4 > Else > Range("b" & cHida).Value = "非BOM" > Range("a" & cHida).Interior.ColorIndex = 22 > End If > Next > Next > End Sub > 何故かF列の内容をうまくB列に反映されていないです。 > 大変お手数ですが、見て頂けると幸いです。 > どうぞよろしくお願いいたします。 >
Sub kaizenban0225() '指導を受けた後の改善版 Dim cHida As Long Dim cMigi As Long Dim bFlag As Boolean For cHida = 5 To 1128 bFlag = False For cMigi = 5 To 633 'migi735列の中に【第634列から数値と文字列混合になり、マクロがエラー】 If CLng(Range("A" & cHida).Value) = CLng(Range("E" & cMigi).Value) Then Range("B" & cHida).Value = Range("F" & cMigi).Value bFlag = True Exit For End If Next ' If bFlag = False Then If Not bFlag Then Range("B" & cHida).Value = "非X" End If Next End Sub 私のデータにmigi735列の中に、第634列から735まで(101個)の内容は数値と文字列混合になり、マクロがエラー第13番:”型が一しません”とメッセージが来ました。 If CLng(Range("A" & cHida).Value) = CLng(Range("E" & cMigi).Value) Then 上の列は黄色になります。
受講生さんの投稿
(投稿ID: 3669) 添付ファイルのダウンロード権限がありません
大変お世話になっております。
中級編を一通りに勉強を完了しました。
VBAを少しずつ実務に応用していきます。
今回動画4の内容を真似して下記のように実装コートを書きました。
Sub 引当()
Dim cHida As Long
Dim cMigi As Long
Dim Lastrow As Long
Lastrow = Range("a65536").End(xlUp).Row
For cMigi = 5 To 735
For cHida = 5 To Lastrow
If Range("A" & cHida).Value = Range("E" & cMigi).Value Then
Range("b" & cHida).Value = Range("F" & cMigi).Value
Range("a" & cHida).Interior.ColorIndex = 4
Else
Range("b" & cHida).Value = "非BOM"
Range("a" & cHida).Interior.ColorIndex = 22
End If
Next
Next
End Sub
何故かF列の内容をうまくB列に反映されていないです。
大変お手数ですが、見て頂けると幸いです。
どうぞよろしくお願いいたします。
受講生さんのコメント
(コメントID: 5177)
がんばってますね!
いただいたご質問について、一般的な事例となるよう修正をしたうえで、解説動画を作りました。
https://www.dropbox.com/s/3ti6uhbllxx3w2b/test_tech.mp4?dl=0
以下は、サンプルコードです。
https://www.dropbox.com/s/x0h5s7upu9p0fpn/test_tech.xlsm?dl=0
↑この内容なら特に公開しても問題ないかな?とも思うのですが、どうでしょうか。
他の受講生の方の参考になりますので。
公開すると問題になるところがまだあるようでしたら、お知らせいだだけると幸いです。(いただいた投稿とこのお返事自体は公開されることはありません)
> 小川先生
> 大変お世話になっております。
> 中級編を一通りに勉強を完了しました。
> VBAを少しずつ実務に応用していきます。
>
> 今回動画4の内容を真似して下記のように実装コートを書きました。
> Sub 引当()
> Dim cHida As Long
> Dim cMigi As Long
> Dim Lastrow As Long
> Lastrow = Range("a65536").End(xlUp).Row
>
> For cMigi = 5 To 735
> For cHida = 5 To Lastrow
> If Range("A" & cHida).Value = Range("E" & cMigi).Value Then
> Range("b" & cHida).Value = Range("F" & cMigi).Value
> Range("a" & cHida).Interior.ColorIndex = 4
> Else
> Range("b" & cHida).Value = "非BOM"
> Range("a" & cHida).Interior.ColorIndex = 22
> End If
> Next
> Next
> End Sub
> 何故かF列の内容をうまくB列に反映されていないです。
> 大変お手数ですが、見て頂けると幸いです。
> どうぞよろしくお願いいたします。
>
受講生さんのコメント
(コメントID: 5179) 添付ファイルのダウンロード権限がありません
ご丁寧な添削と動画説明をありがとうございました。
下記のように改善版を作成しました。
(hidaのデータ1128個とmigiデータ633個の組合でうまく転記できました)
ありがとうございました。
Sub kaizenban0225() '指導を受けた後の改善版
Dim cHida As Long
Dim cMigi As Long
Dim bFlag As Boolean
For cHida = 5 To 1128
bFlag = False
For cMigi = 5 To 633 'migi735列の中に【第634列から数値と文字列混合になり、マクロがエラー】
If CLng(Range("A" & cHida).Value) = CLng(Range("E" & cMigi).Value) Then
Range("B" & cHida).Value = Range("F" & cMigi).Value
bFlag = True
Exit For
End If
Next
' If bFlag = False Then
If Not bFlag Then
Range("B" & cHida).Value = "非X"
End If
Next
End Sub
私のデータにmigi735列の中に、第634列から735まで(101個)の内容は数値と文字列混合になり、マクロがエラー第13番:”型が一しません”とメッセージが来ました。
If CLng(Range("A" & cHida).Value) = CLng(Range("E" & cMigi).Value) Then
上の列は黄色になります。
Migi第634列:1627A
Migi第635列:PL-020-L2-01-3
後一歩で完璧に転記できると思いますが。CLngを使っても足りないでしょうか。
奥が深いです。今の私の知識が不足と思います。
基礎フォーロー第25の動画を再度勉強します。
ご回答動画の公開には特に問題ないです。
どうぞよろしくお願いいたします。
受講生
> 受講生 さん:
>
> がんばってますね!
>
> いただいたご質問について、一般的な事例となるよう修正をしたうえで、解説動画を作りました。
> https://www.dropbox.com/s/3ti6uhbllxx3w2b/test_tech.mp4?dl=0
>
> 以下は、サンプルコードです。
> https://www.dropbox.com/s/x0h5s7upu9p0fpn/test_tech.xlsm?dl=0
>
> ↑この内容なら特に公開しても問題ないかな?とも思うのですが、どうでしょうか。
> 他の受講生の方の参考になりますので。
> 公開すると問題になるところがまだあるようでしたら、お知らせいだだけると幸いです。(いただいた投稿とこのお返事自体は公開されることはありません)
>
>
> > 小川先生
> > 大変お世話になっております。
> > 中級編を一通りに勉強を完了しました。
> > VBAを少しずつ実務に応用していきます。
> >
> > 今回動画4の内容を真似して下記のように実装コートを書きました。
> > Sub 引当()
> > Dim cHida As Long
> > Dim cMigi As Long
> > Dim Lastrow As Long
> > Lastrow = Range("a65536").End(xlUp).Row
> >
> > For cMigi = 5 To 735
> > For cHida = 5 To Lastrow
> > If Range("A" & cHida).Value = Range("E" & cMigi).Value Then
> > Range("b" & cHida).Value = Range("F" & cMigi).Value
> > Range("a" & cHida).Interior.ColorIndex = 4
> > Else
> > Range("b" & cHida).Value = "非BOM"
> > Range("a" & cHida).Interior.ColorIndex = 22
> > End If
> > Next
> > Next
> > End Sub
> > 何故かF列の内容をうまくB列に反映されていないです。
> > 大変お手数ですが、見て頂けると幸いです。
> > どうぞよろしくお願いいたします。
> >
>
>
小川慶一さんのコメント
(コメントID: 5181)
お返事ありがとうございます。
文字列として比較したい場合は、 Cstr 関数を使ってデータ型を「文字列型」に変換してから比較します。
それはそれで、今度は、「"0113" と "113" とが別ものとして扱われるようになる」といった別の問題も発生する可能性もありますが...
その先には、「そもそも、インプットの段階でおかしなデータ型の値が入らないようにしよう」とか、「エクセルシート側の書式設定をあらかじめ仕込んでおこう」といったアイデアでさらに問題解消していくことになります。
応援していますね。また、何かあればいつでもどうぞ。
> ご回答動画の公開には特に問題ないです。
> どうぞよろしくお願いいたします。
こちらの件も、ありがとうございます。
当初の質問とそれに対する僕からの回答も、公開設定を非公開から公開に変更します。(投稿者名はもちろん匿名のままです)
小川慶一さんのコメント
(コメントID: 5184)
追記です。
以下のような表示になっています。差しさわりがあるようでしたらお知らせください。
https://www.exvba.com/comment_detail.php?comment_id=9439
> 小川慶一先生:
> ご丁寧な添削と動画説明をありがとうございました。
> 下記のように改善版を作成しました。
> (hidaのデータ1128個とmigiデータ633個の組合でうまく転記できました)
> ありがとうございました。
>
> Sub kaizenban0225() '指導を受けた後の改善版
> Dim cHida As Long
> Dim cMigi As Long
> Dim bFlag As Boolean
> For cHida = 5 To 1128
> bFlag = False
> For cMigi = 5 To 633 'migi735列の中に【第634列から数値と文字列混合になり、マクロがエラー】
> If CLng(Range("A" & cHida).Value) = CLng(Range("E" & cMigi).Value) Then
> Range("B" & cHida).Value = Range("F" & cMigi).Value
> bFlag = True
> Exit For
> End If
> Next
> ' If bFlag = False Then
> If Not bFlag Then
> Range("B" & cHida).Value = "非X"
> End If
> Next
> End Sub
> 私のデータにmigi735列の中に、第634列から735まで(101個)の内容は数値と文字列混合になり、マクロがエラー第13番:”型が一しません”とメッセージが来ました。
> If CLng(Range("A" & cHida).Value) = CLng(Range("E" & cMigi).Value) Then
> 上の列は黄色になります。
>
> Migi第634列:1627A
> Migi第635列:PL-020-L2-01-3
> 後一歩で完璧に転記できると思いますが。CLngを使っても足りないでしょうか。
> 奥が深いです。今の私の知識が不足と思います。
> 基礎フォーロー第25の動画を再度勉強します。
>
> ご回答動画の公開には特に問題ないです。
> どうぞよろしくお願いいたします。
> 受講生
>
> > 受講生 さん:
> >
> > がんばってますね!
> >
> > いただいたご質問について、一般的な事例となるよう修正をしたうえで、解説動画を作りました。
> > https://www.dropbox.com/s/3ti6uhbllxx3w2b/test_tech.mp4?dl=0
> >
> > 以下は、サンプルコードです。
> > https://www.dropbox.com/s/x0h5s7upu9p0fpn/test_tech.xlsm?dl=0
> >
> > ↑この内容なら特に公開しても問題ないかな?とも思うのですが、どうでしょうか。
> > 他の受講生の方の参考になりますので。
> > 公開すると問題になるところがまだあるようでしたら、お知らせいだだけると幸いです。(いただいた投稿とこのお返事自体は公開されることはありません)
> >
> >
> > > 小川先生
> > > 大変お世話になっております。
> > > 中級編を一通りに勉強を完了しました。
> > > VBAを少しずつ実務に応用していきます。
> > >
> > > 今回動画4の内容を真似して下記のように実装コートを書きました。
> > > Sub 引当()
> > > Dim cHida As Long
> > > Dim cMigi As Long
> > > Dim Lastrow As Long
> > > Lastrow = Range("a65536").End(xlUp).Row
> > >
> > > For cMigi = 5 To 735
> > > For cHida = 5 To Lastrow
> > > If Range("A" & cHida).Value = Range("E" & cMigi).Value Then
> > > Range("b" & cHida).Value = Range("F" & cMigi).Value
> > > Range("a" & cHida).Interior.ColorIndex = 4
> > > Else
> > > Range("b" & cHida).Value = "非BOM"
> > > Range("a" & cHida).Interior.ColorIndex = 22
> > > End If
> > > Next
> > > Next
> > > End Sub
> > > 何故かF列の内容をうまくB列に反映されていないです。
> > > 大変お手数ですが、見て頂けると幸いです。
> > > どうぞよろしくお願いいたします。
> > >
> >
> >
受講生さんのコメント
(コメントID: 5186)
ご教授通りにCLngをCStrに入れ換えました。
If CStr(Range("A" & cHida).Value) = CStr(Range("E" & cMigi).Value) Then
そしたら、スムーズに全部の転記をできました。マクロのエラーも出ませんでした。
大変嬉しく思います。
ありがとうございました。
受講生
> 受講生 さん:
>
> 追記です。
>
> 以下のような表示になっています。差しさわりがあるようでしたらお知らせください。
> https://www.exvba.com/comment_detail.php?comment_id=9439
>
>
> > 小川慶一先生:
> > ご丁寧な添削と動画説明をありがとうございました。
> > 下記のように改善版を作成しました。
> > (hidaのデータ1128個とmigiデータ633個の組合でうまく転記できました)
> > ありがとうございました。
> >
> > Sub kaizenban0225() '指導を受けた後の改善版
> > Dim cHida As Long
> > Dim cMigi As Long
> > Dim bFlag As Boolean
> > For cHida = 5 To 1128
> > bFlag = False
> > For cMigi = 5 To 633 'migi735列の中に【第634列から数値と文字列混合になり、マクロがエラー】
> > If CLng(Range("A" & cHida).Value) = CLng(Range("E" & cMigi).Value) Then
> > Range("B" & cHida).Value = Range("F" & cMigi).Value
> > bFlag = True
> > Exit For
> > End If
> > Next
> > ' If bFlag = False Then
> > If Not bFlag Then
> > Range("B" & cHida).Value = "非X"
> > End If
> > Next
> > End Sub
> > 私のデータにmigi735列の中に、第634列から735まで(101個)の内容は数値と文字列混合になり、マクロがエラー第13番:”型が一しません”とメッセージが来ました。
> > If CLng(Range("A" & cHida).Value) = CLng(Range("E" & cMigi).Value) Then
> > 上の列は黄色になります。
> >
> > Migi第634列:1627A
> > Migi第635列:PL-020-L2-01-3
> > 後一歩で完璧に転記できると思いますが。CLngを使っても足りないでしょうか。
> > 奥が深いです。今の私の知識が不足と思います。
> > 基礎フォーロー第25の動画を再度勉強します。
> >
> > ご回答動画の公開には特に問題ないです。
> > どうぞよろしくお願いいたします。
> > 受講生
> >
> > > 受講生 さん:
> > >
> > > がんばってますね!
> > >
> > > いただいたご質問について、一般的な事例となるよう修正をしたうえで、解説動画を作りました。
> > > https://www.dropbox.com/s/3ti6uhbllxx3w2b/test_tech.mp4?dl=0
> > >
> > > 以下は、サンプルコードです。
> > > https://www.dropbox.com/s/x0h5s7upu9p0fpn/test_tech.xlsm?dl=0
> > >
> > > ↑この内容なら特に公開しても問題ないかな?とも思うのですが、どうでしょうか。
> > > 他の受講生の方の参考になりますので。
> > > 公開すると問題になるところがまだあるようでしたら、お知らせいだだけると幸いです。(いただいた投稿とこのお返事自体は公開されることはありません)
> > >
> > >
> > > > 小川先生
> > > > 大変お世話になっております。
> > > > 中級編を一通りに勉強を完了しました。
> > > > VBAを少しずつ実務に応用していきます。
> > > >
> > > > 今回動画4の内容を真似して下記のように実装コートを書きました。
> > > > Sub 引当()
> > > > Dim cHida As Long
> > > > Dim cMigi As Long
> > > > Dim Lastrow As Long
> > > > Lastrow = Range("a65536").End(xlUp).Row
> > > >
> > > > For cMigi = 5 To 735
> > > > For cHida = 5 To Lastrow
> > > > If Range("A" & cHida).Value = Range("E" & cMigi).Value Then
> > > > Range("b" & cHida).Value = Range("F" & cMigi).Value
> > > > Range("a" & cHida).Interior.ColorIndex = 4
> > > > Else
> > > > Range("b" & cHida).Value = "非BOM"
> > > > Range("a" & cHida).Interior.ColorIndex = 22
> > > > End If
> > > > Next
> > > > Next
> > > > End Sub
> > > > 何故かF列の内容をうまくB列に反映されていないです。
> > > > 大変お手数ですが、見て頂けると幸いです。
> > > > どうぞよろしくお願いいたします。
> > > >
> > >
> > >
小川慶一さんのコメント
(コメントID: 5187)
まずは良かったです。
他に、 CDate 関数等あります。
発展編1のテキスト(PDFで配布しています)の最終章に便利関数をいろいろ載せています。
一読してみてください。今の受講生さんにとっては、今後のアイデアにつながる情報として有用かと思います。