質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

695閲覧

Excelマクロをアドイン化したい

Hamapun

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2023/04/03 10:33

実現したいこと

ExcelVBAで作成したマクロをアドイン化したい

前提

ExcelVBAで作成したマクロをアドインとして登録、利用できるようにしたいのですが、
作成したコードをアドイン実行しようとしても、
「このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります」
と表示され実行できません。

ちなみに、アドインではなくマクロとしては問題なく実行されます。

他のアドインは問題なく実行できているので、Excelの設定が原因ではないと考えておりますが、
解決策が分かりません。

※ワークシート関数としてxlookup関数を用いているのですが、それが原因でしょうか。
また、xlookup関数を用いずにシートをまたいだ転記の方法があればご教示願います。

発生している問題・エラーメッセージ

「このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります」

該当のソースコード

Sub 転記() Dim A, B, C As String 'シート名 Dim i As Long Dim mySht1 As Worksheet Dim myRng1, myRng2, myRng3, myRng4, myRng5, myRng6 As Range A = "PJ一覧" B = "前月" C = "貼付シート" Set mySht1 = Worksheets(1) Set myRng1 = Sheets(B).Range("S:S") '検索範囲(前月シートのS列) Set myRng2 = Sheets(B).Range("B:B") '戻り値(前月シートの工番) Set myRng3 = Sheets(C).Range("A:A") '検索範囲(貼付シートのA列) Set myRng4 = Sheets(C).Range("K:K") '戻り値(貼付シートの受注金額) Set myRng5 = Sheets(C).Range("A:A") '検索範囲(貼付シートのA列) Set myRng6 = Sheets(C).Range("AM:AM") '戻り値(貼付シートの官民区分) For i = 2 To Cells(Rows.Count, 4).End(xlUp).Row Cells(i, 2) = Application.XLookup(mySht1.Cells(i, 19), myRng1, myRng2, "無", 0, 1) 'S列を参照して工事番号を転記 If Cells(i, 2) <> 0 Then Cells(i, 6) = Application.XLookup(mySht1.Cells(i, 2), myRng3, myRng4, "無", 0, 1) '工事番号を参照して受注金額を転記 Cells(i, 9) = Application.XLookup(mySht1.Cells(i, 2), myRng5, myRng6, "無", 0, 1) '工事番号を参照して官民区分を転記 End If Next End Sub

試したこと

補足情報(FW/ツールのバージョンなど)

Excel 365 MSO (バージョ 2022) 32bit

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラー解決案について
不確実ですが、ブック指定などを具体的に記述してみてデバックしてはいかがでしょうか?
テストでアドインブックのシートオブジェクトを参照していたりして同じようなエラーに出会った気が、、、
気のせいか。

xlookup関数を用いずにシートをまたいだ転記の方法があればご教示願います。

WorksheetFunction.Vlookup()やWorksheetFunction.Hlookup()などを利用する方法があります。
ここでも、きちんとシート選択しておけば問題なく利用できます。
僕はApplication.XlookUpをそもそも使った事がありませんが(⌒-⌒; )
XlookUp疑いで進めるのであれば利用してみて下さい。

VBA

1 2Cells(0, 0)= WorksheetFunction.VLookup( 3 検索したい工事番号, 4 工事番号列が1番左列となる一覧表のRangeオブジェクト, 5 工事番号が一致した際に取得する列番号(表中において何列目かを数値指定), 6 False(あいまい検索はしない=完全一致) 7 )

ご武運を

投稿2023/04/03 15:07

編集2023/04/03 15:09
katsumin1527

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hamapun

2023/04/04 23:37

ご回答まことにありがとうございます。 全く別の原因でしたが、無事解決いたしました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問