アプリ版:「スタンプのみでお礼する」機能のリリースについて

以前に質問させていただいたVBAのアレンジで質問させてください
下記の式でHowManyで値を求めてL8へ数値を入力しています。

BOOK1とBOOK2で同じフォーマットのシートを利用する業務があります
BOOK1のVBAでBOOK2を開きHowManyで計算した値をシート1のL8へ入力する場合
下記の式だとどうすればよいのでしょうか?

Sub 依頼量()
Dim LastRow, HowMany As Long
Dim LastItem As String

HowMany = 0
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
LastItem = Cells(LastRow, "C").Value
For i = LastRow To 1 Step -1
If Cells(i, "C").Value <> LastItem Then
Exit For
End If
HowMany = HowMany + Cells(i, "D").Value
Next i
Cells(4, "L").Value = HowMany
MsgBox LastItem & "の依頼量は" & HowMany & "です!"

End Sub

A 回答 (2件)

こんにちは!



>BOOK1のVBAでBOOK2を開き・・・
複数のブックを開いているのであれば、
どのブックのどのシートか?を明記する必要があると思います。

お示しのコードでは単にセル操作だけしているようですので、
それぞれにブック名とシート名を付け加える必要があると思います。

※ 変数の宣言はNo.1さんがご指摘されている通りで、
>Dim LastRow, HowMany As Long
では「LastRow」は何も宣言していないので、「Variant型」になります。
(まぁ~!大勢には影響はありませんが)

Dim LastRow As Long, HowMany As Long
Dim LastItem As String
Dim wB1 As Workbook, wB2 As Workbook
Dim wS1 As Worksheet, wS2 As Worksheet

Set wB1 = ThisWorkbook
Set wB2 = "開いているブック名.xlsx"
Set wS1 = wB1.Worksheets("Sheet1") '//←「Sheet1」の部分は実際のシート名に!//
Set wS2 = wB2.Worksheets("Sheet○") '//←「Sheet○」の部分は参照先ブックのシート名に!//

のように宣言し
あとはそれぞれのコードの前に追加してみてください。m(_ _)m
    • good
    • 0

質問内容とは違うのですが、気になったので。



dimの書き方についてですが、これだとLastRowの型は
Variantになるはずです。

確認してみてください。

質問外のコメント、失礼しました。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!