ここから本文です

VBAの Application.WorksheetFunctionで、違うシートに対してする場合はどうすれば...

mes********さん

2014/9/2818:35:40

VBAの Application.WorksheetFunctionで、違うシートに対してする場合はどうすれば良いですか。

たとえば、MAXで、シート2のA3からA6までのなかの数字の最大数を求めたいのですが、
マクロが登録されているのがシート1のせいか、シート1のA3:A6で計算されてしまいます。

Application.WorksheetFunction.worksheet("") みたいにはできないでしょうか。

ちなみにA3とA6は変数にしたいです。

閲覧数:
121
回答数:
3

違反報告

ベストアンサーに選ばれた回答

vcx********さん

2014/9/2820:50:10

mesiumano1さん

他の方々とのやりとりを読んでいると説明がグチャグチャです。

「シート2のA3からA6まで」と言いながら
Range(Cells(2, 7), Cells(7, 7)) は 「G2:G7」ですし
Sheet2(z) なら シート2 のシート名は y ではありませんし、、、

Sheet2 というオブジェクト名と z というシート名では指定の仕方が異なります。

Sheet2.Range("A3:A6") という構文は OKですが、
z.Range("A3:A6") という構文は NGです。

シート名「y」というシートの セル「G2:G7」の Max値を得たいなら下記のような感じです。各 Cells の前の「.」が重要です。

Sub Test()
With Worksheets("y")
x = Application.WorksheetFunction.Max(.Range(.Cells(2, 7), .Cells(7, 7)))
End With
MsgBox x
End Sub

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

som********さん

2014/9/2819:56:09

エラー処理も組んでみました。

Sub mesiumano1()
Dim r1 As String
Dim r2 As String
Dim x As Double
Dim ern As Long
r1 = "A3"
r2 = "A6"
On Error Resume Next
x = Application.Max(Worksheets("three").Range(r1, r2))
ern = Err.Number
On Error GoTo 0
If ern <> 0 Then
MsgBox "エラー番号=" & Err.Number & vbTab & Err.Description, , "エラー発生"
Exit Sub
End If
'ここに正常処理を記述
End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

dre********さん

2014/9/2818:57:04

普通にVBAを使うだけで何も変わったことをする必要はありません。

Dim rng1 As String
Dim rng2 As String
rng1 = "A3"
rng2 = "A6"
MsgBox Application.WorksheetFunction.Max(Sheet2.Range(rng1 & ":" & rng2).Value)

「Sheet2」は通常の書き方に直してください。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる