Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2010)
別のブックに転記のマクロ
投稿日時: 17/10/11 18:07:55
投稿者: marufuku

別のブックへ転記するマクロで困っています。
 
コマンドボタンを押したときにあるセルの内容を別のブックに転記させたいです。
 
作業中のエクセルファイルに「2CL」と「能率計算」というシートがあります。
 「2CL」シートのCommandButton1を押すと「能率計算」シートの「D54」セルに書かれた内容を「2CL能率2017」ブックの「能率」シートに転記したいです。
 「2CL能率2017」ブックの「能率」シートにはB列以降の1行目に日付がずらっと書かれています。
転記する場所は「2CL」シートの「K2」セルに日付が入っていますので、「2CL能率2017」ブックの「能率」シートの同じ日付の2行目にコピペさせたいです。
 
「2CL能率2017」ブックのパスは「\\n3690\能率\2CL能率2017.xlsx」になります。
下記ではうまくいかず困っています。
 
お手数おかけいたしますが、よろしくお願いします。
 
Sub Macro2()
 
 Dim SourceSht As Worksheet
 Dim SourceSht2 As Worksheet
 Dim TargetWkb As Workbook
 Dim TargetSht As Worksheet
 Dim CheckValue As Date
 Dim CheckColumn As Long
 
 Set SourceSht = ActiveWorkbook.Worksheets("能率計算")
 Set SourceSht2 = ActiveWorkbook.Worksheets("2CL")
 CheckValue = CDate(SourceSht2.Range("K2"))
 
 Set TargetWkb = Workbooks.Open("\\n3690\能率\2CL能率2017.xlsx")
 Set TargetSht = TargetWkb.Worksheets("能率")
 
 On Error Resume Next
 CheckColumn = WorksheetFunction.Match(CheckValue, TargetSht.Rows(1), 0)
 On Error GoTo 0
 
 SourceSht.Range("D54").Copy
 TargetSht.Cells(2, CheckColumn).Select
 TargetSht.Paste
     
End Sub

回答
投稿日時: 17/10/11 19:28:33
投稿者: WinArrow
投稿者のウェブサイトに移動

>下記ではうまくいかず困っています。
 
うまくいくかどうかではなく
@意図する動きをしないとか、
A意図した結果にならないとか、
Bエラーになって進まないとか
 
をキチンと説明しないと、他人に分かって貰えないよ
 
@を検証するには、ステップ実行してみましょう
A意図する結果は、○○で、実行結果は××になってしまう
Bどこのコードでエラーにあり、エラーメッセージも説明してめ・・・
 
 
 

回答
投稿日時: 17/10/11 19:30:34
投稿者: WinArrow
投稿者のウェブサイトに移動

追加コメント
 
On Error Resume Next
は、コメントアウトしましょう。
 
これがあると、エラーが無視されるので、デブッグにならないです。

投稿日時: 17/10/11 19:40:24
投稿者: marufuku

説明不足もあり、ご迷惑おかけして申し訳ありません。
On Error Resume Next
を消して実行しますと、
CheckColumn = WorksheetFunction.Match(CheckValue, TargetSht.Rows(1), 0)
の部分が黄色になります。
その前に、「worksheetfunctionクラスのMatchプロパティを取得できません」と出ます。
 
「\\n3690\能率\2CL能率2017.xlsx」のシートを開くところまではうまくいっている感じがします。
 
よろしくお願い致します。

回答
投稿日時: 17/10/11 21:17:32
投稿者: WinArrow
投稿者のウェブサイトに移動

引用:

CheckColumn = WorksheetFunction.Match(CheckValue, TargetSht.Rows(1), 0)
の部分が黄色になります。

 
CheckValueの「値」は、どうなっていますか?
 
CheckValueのデータ型がなぜLongなんですか?
 
TargetShtの1行目に同じ「値」はありますか?
 
 

回答
投稿日時: 17/10/11 21:20:30
投稿者: simple

横から失礼します。
 
Dim CheckValue As Range
Set CheckValue = SourceSht2.Range("K2")
と変更してみては?

回答
投稿日時: 17/10/11 21:26:22
投稿者: WinArrow
投稿者のウェブサイトに移動


CheckValueのデータ型がなぜLongなんですか?
これ間違いでした。

回答
投稿日時: 17/10/11 22:18:26
投稿者: WinArrow
投稿者のウェブサイトに移動

>CheckColumn = WorksheetFunction.Match(CheckValue, TargetSht.Rows(1), 0)

CheckColumn = WorksheetFunction.Match(CheckValue * 1, TargetSht.Rows(1), 0)
 
これでいかがでしょう?

投稿日時: 17/10/12 10:12:13
投稿者: marufuku

返信遅くなりすみません。コメントありがとうございます。
 
CheckColumn = WorksheetFunction.Match(CheckValue * 1, TargetSht.Rows(1), 0)
 
とすることで出来ました。
ありがとうございます。
 
ほんとに助かりました。
 
今後も質問させていただくことあると思いますが、アドバイスいただけると助かります。
 
質問はわかりやすく書くように注意いたします。
 
ありがとうございました。