重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Dim s
Dim h As String


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
h = Sheets("決算").Cells(3, 2).Value
For Each ws In Worksheets
s = ws.Index
Next ws

For k = 5 To s Step 1

Set KaMoku = Sheets(k).Range("D3:J103").Columns(1)
MyRNo = Application.WorksheetFunction.Match(h, KaMoku, 0)
MyUNo = KaMoku.Cells(MyRNo).Offset(, 4)
n = n + MyUNo
Sheets("決算").Cells(3, 5).Value = n

Next k

End Sub

自治会の決算書を作りたいので上記のようなマクロを、インターネットで調べながら
私の知識のない頭をフル回転させて書いてみたのですが。
h = Sheets("決算").Cells(3, 2).Valueで、hへの値の代入が一つのセルからの代入ではなくて
h = Sheets("決算").Range("B3:B103").Valueのように範囲から文字をさがしたいのです。
それと
MyRNo = Application.WorksheetFunction.Match(h, KaMoku, 0) AND
MySNo = Application.WorksheetFunction.Match(K, KoKaMoku, 0)
のように、この文字が同じで、次の列のこの文字も同じ時に
MyUNo = KaMoku.Cells(MySNo).Offset(, 4) 4列目の値を
n = n + MyUNo
Sheets("決算").Cells(3, 5).Value =(ではなくて) ここも、一致した文字のあるセルの隣のセルに数値を入れたいのですが、うまくいきません。どうか私に、あなたの素晴らしい知恵をかしてください。
お願いします。

A 回答 (1件)

書いてある内容が半分ほどしか理解できなかったため、憶測でよければ参考にしてください。



>h = Sheets("決算").Range("B3:B103").Valueのように範囲から文字をさがしたいのです。

複数セルの値を格納したいのであれば、Variant型(数値)を使用すれば値を取得できます。

例:
 Dim getTargetVal() As Variant

配列で値を保持しているため、値を取り出したい場合は、For文などで繰返し処理を使用します。


>MyRNo = Application.WorksheetFunction.Match(h, KaMoku, 0) AND
>MySNo = Application.WorksheetFunction.Match(K, KoKaMoku, 0)
>のように、この文字が同じで、次の列のこの文字も同じ時に
>MyUNo = KaMoku.Cells(MySNo).Offset(, 4) 4列目の値を

値を取得する条件を指定した場合はIF文を使用します。
ただし、Match関数は一致するものがない場合、N/Aを返すため、IsError関数で制御
IsErrorは、エラーが出た場合Trueを返す
If IsError(Application.Match(範囲, 範囲, 0)) = False Then
やりたい処理
End IF
    • good
    • 0
この回答へのお礼

早速回答して頂いてありがとうございます。
私の書き方が悪かった尾で、聞きたい事の内容が把握しずらくすみません。
私のやりたい事は
現金出納帳シートのA列(大科目)B列(小科目)の文字列の中の 大科目(たとえば会費・入会金)小科目(たとえば会費)
この二つの文字が、決算シートのA列(大科目)の範囲のB列(小科目)の同じ文字の行の右隣のセルに、出納帳に入力した数値を入れたいのです。
1つは宣言の型が悪かったのですね、Matchに対してのIFの使い方がわからなかったので何となく分かりました。近いうちに試してみます。
私みたいな素人にみ分かりやすい回答をしていただいて、大変感謝しています。
ありがとうございます。
また質問をさせて頂くと思いますので、その時はよろしくお願いします。

お礼日時:2012/04/18 20:10

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