• ベストアンサー

変数にいれる値

tossy005の回答

  • tossy005
  • ベストアンサー率38% (7/18)
回答No.1

>今後4月初まりとなるので、 >tugi = Month(.Cells(list_cnt, intBASE)) >と書き換えたのですが「型が違います」とでてしまいます。 関係ないとは思いますが、 4月はじまりになるからそのように書き換えるという意味が良くわかりません。 Month(.Cells(list_cnt, intBASE))の結果が 4以上ならばtugi = 3 + Month(.Cells(list_cnt, intBASE)) 4未満ならばtugi = 12 + Month(.Cells(list_cnt, intBASE)) になるのではないでしょうか。 また、「型が違います」と出るからには、型が違うのだと思います。 メッセージがtugi = Month(.Cells(list_cnt, intBASE))で出るならば、 変数tugiの型の確認と、.Cells(list_cnt, intBASE))の値がMonth関数で変換できるものなのかを確認したほうが良いと思います。

maki06
質問者

補足

tossy005さん 返信ありがとうございます。 >4未満ならばtugi = 12 + Month(.Cells(list_cnt, intBASE)) ですが端折っていますが対応済みです。 また変数tugiの型も確認済みです。

関連するQ&A

  • VBA 得意先ごと且つ日付ごとに数値を集計したい

    あるエクセルシートを自動処理するVBAを作成しようとしています。 シートの内容は A日付列 B得意先コード列 C金額列 20091001 000001 \1,000 20091001 000001 \1,500 20091002 000002 \800 20091002 000001 \1,200 といった感じです。 これを、指定した日付で、且つ得意先コード毎に集計したいと考えています。(上記の例だと、コード000001得意先は20091001で\2,500、20091002で\1,200といった具合です) 現在、日付毎で集計するところまでは作成できたのですが、ここから得意先別で集計するにはどのようにコーディングすればよいでしょうか。 日付毎の集計は以下のようにしています。 cnt = 2 Total = 0 Do Until False '行が底に達したらループを終了します If Range("D" & cnt).Value = "" Then Exit Do End If     'D列の日付と指定の日付が合致したら If yearmonthday = Range("D" & cnt).Value Then 'L列の金額を取得しカウント Total = Total + CDbl(Range("T" & cnt)) '次の行を検索するための行数カウント cnt = cnt + 1 Else cnt = cnt + 1 End If Loop ご存知の方、どうぞ教えてください。

  • 制御方法について

    所属名毎にシートを作成し都道府県と所属名が一致したら集計させループさせたいのですがうまくいきません。 データには列135に所属名があり139に都道府県が入っています。 解約シートには6行目5列目から都道府県名が入っています。 最終が沖縄となるので沖縄が入れば抜けるようになっています。 今の状態で実行すると所属名の数毎、都道府県の件数を更にを集計してしまいます。 一度シートを作成した所属はFor~Nextを読み込まないようにしたいのですが 自分なりに制御させようと試みましたが上手く集計されません。 何かアドバイス等ありましたらお願いします。 Dim ingcnt As Integer Dim intHjn As Integer Dim strhjn As String Dim Areastrhjn As String Dim list_cnt As Integer Dim Arealist_cnt As Integer Dim (2) As Worksheet Dim Area_cnt As Integer With Worksheets("解約データ") Set (2) = Sheets("解約・所属別") list_cnt = 2 strhjn = "" Area_cnt = 5 '所属CD1毎のシート作成 Do While Trim$(.Cells(list_cnt, 1)) <> "" '(A列)が空白でない限り繰り返す If strhjn <> .Cells(list_cnt, 135) Then strhjn = .Cells(list_cnt, 135) Sheets("解約").Select Sheets("解約").Copy Before:=Sheets("解約") Sheets("解約(2)").Name = strhjn ActiveSheet.Cells(1, 15) = strhjn End If For Area_cnt = 5 To (2).Cells(6, (2).Columns.Count).End(xlToLeft).Column Area = (2).Cells(6, Area_cnt) Arealist_cnt = 2 Areastrhjn = "" Do While Trim$(.Cells(Arealist_cnt, 1)) <> "" '(A列)が空白でない限り繰り返す Areastrhjn = .Cells(Arealist_cnt, 135) 'エリア集計 If Areastrhjn = .Cells(Arealist_cnt, 135) And _ .Cells(Arealist_cnt, 139) = Area Then ActiveSheet.Cells(7, Area_cnt) = ActiveSheet.Cells(7, Area_cnt) + 1 End If Arealist_cnt = Arealist_cnt + 1 Loop If Area = "沖縄" Then Exit For Next list_cnt = list_cnt + 1 Loop End With End Sub

  • VBAで値の取得

    VBAで値の取得 osはxp エクセル2000です。 エクセルのシートに計算した値をVBAで入れたいと思います。 行数は変動します。 入れたい値は金額×数値です。なので切捨てになります。 計算式は  F3=TRUNC(1250*B3)+TRUNC(1000*C3)+TRUNC(1000*D3)+TRUNC(1250*E3) 添付のエクセル画面を参考にして下さい。 私が考えたもので、これからどのように変更すれば値の取得ができるでしょうか? Dim LastR As Long, Cnt As Long '最終行と行番号 LastR = Range("B65536").End(xlUp).Row For Cnt = 3 To LastR 'B3から最終行まで Cells(Cnt, 6).Formula = "=TRUNC(1800 * Cells(Cnt, 2)) + TRUNC(1350 * Cells(Cnt, 3))"    Next (もちろんエラーになります。)

  • エクセル リストボックスにセルの値を表示したい

    Sheet1に A1 a A2 i A3 u と入力されています。 フォームのリストボックスにこの3つのセルを表示したいのですが Private Sub UserForm_Initialize() UserForm1.ListBox1.ControlSource = Sheets("Sheet1").Range(Cells(1, 1), Cells(1, 3)) End Sub ではうまく行きません。 デバッグしてもなにも引っかからないのですが 実行すると 「実行時エラー13 型が一致しません」 となります。 「ControlSource」を「RowSource」に変えても同じでした。 ※列が移動するため列番号を変数で取得したいのでCellsを使用しています。 ご教授よろしくお願いします。

  • VBAの定義と印刷について

    VBAで下記の様に定義をして印刷していますが、sheet"AAA","BBB"と同じく 新しいsheet"DDD"もの一緒に印刷したい場合の定義はどうなるのでしょう!教えて頂けますでしょうか。 よろしくお願いします。 別sheetの"sheet1"A列 AAA,BBB,CCC          B列 1,2,3  として印刷フラッグがある。 VBAでは Sub sheet1印刷() CNT = 4 CNT1 = 1 CNT2 = 1 TAKE = 0 CK = 30 Do Until CNT2 = CNT Do Until CNT1 = 4 If Sheets("sheet1").Cells(CNT1, 1) = Sheets("sheet1").Cells(CNT2, 3) Then TAKE = Sheets("sheet1").Cells(CNT1, 2) Select Case TAKE Case 1: Sheets("AAA").PrintOut Copies:=1 Case 2: Sheets("BBB").PrintOut Copies:=1 Case 3: Sheets("CCC").PrintOut Copies:=1 End Select CNT1 = 1 Exit Do Else: CNT1 = CNT1 + 1 End If Loop CNT2 = CNT2 + 1 Loop End Sub

  • Excel VBA

    Excel VBAについて シート1にはデータが入ってます。 G列に日付、L列に商品名、N列に件数。 シート2には集計結果を入力したいです。 セルB2に、日付が10月1日から15日までで、商品名がAの件数の合計。 セルB3は、日付が10月16日から末日まで、セルB4は、日付が11月1日から15日までと半月毎に集計を半年後の末日まで繰返し、B2の数行下には、商品名Bの集計行を作り、その数行下には商品名Cの集計行を作りたいです。 これまでは関数SUMIFSで集計していましたが、複数店舗分のシートの更新・メンテナンスが大変なので、VBAでの集計を考えいろいろ調べてるのですが、方法が思い付かないので、ご教授ください。

  • EXCELのマクロで一覧表にハイパーリンクを付ける方法?

    EXCELで,簡単なカード型DBを作りたいので 以下のような一覧シートを作るマクロを作ったのですが シート名のセルにそのデータセルへのハイパーリンクを設定する方法がわかりません list_sheet.Cells(10 + cnt, 5).HyperLink = now_sheet.name & "!" & A9 とでもすればいいのでしょうか? どなたかよい方法を教えてください 以下は,自作マクロの一部です cnt = 0 For ix = 1 To Worksheets.Count Set now_sheet = Worksheets(ix) If now_sheet.Name <> "一覧" And InStr(1, now_sheet.Name, "Sheet") <> 1 Then cnt = cnt + 1 list_sheet.Cells(10 + cnt, 5) = now_sheet.name list_sheet.Cells(10 + cnt, 5).HorizontalAlignment = xlHAlignCenter list_sheet.Cells(10 + cnt, 6) = Format(now_sheet.Cells(5, 2), "yyyy/mm/dd") End If Next ix

  • エクセル2002を2003で実行させたい。

    エクセル2003で作成したものを修正したのですが 実行できなかったので2002で試してみたら実行できました。 VBAにはあまり詳しくなのですが、列を左に3列ずらすという だけのものなのでプログラムの中の記述で  tugi = 3 + tuki の3をとり tugi = tuki としただけのものです。 2002では実行できるのですが、これを2003で実行させようとすると 「型が違います」とエラーがでてしまいます。 何かアドバイスがありましたら宜しくお願いします。

  • ワークシート名を変数に格納する方法

    VBA初心者です。ワークシートが5つあり各シートにデータを転記するマクロを作成したいのですがワークシート名を変数にしてループ処理することはできるのでしょうか? 下記はワークシート名"H"にだけ転記するマクロを作成してみましたがこの後がわからず悩んでいます。よろしくお願いします。 Dim データ行 As Integer Dim cnt As Integer Dim データ数 As Integer cnt = 4 データ行 = Cells(Rows.Count, 8).End(xlUp).Row For データ数 = 11 To データ行   If Worksheets("入力").Cells(データ数,1).Value= "2"Then Worksheets("H").Cells(cnt, 6).Value = Worksheets("入力").Cells(データ数, 8).Value Worksheets("H").Cells(cnt, 7).Value = Worksheets("入力").Cells(データ数, 9).Value Worksheets("H").Cells(cnt, 8).Value = Worksheets("入力").Cells(データ数, 27).Value Worksheets("H").Cells(cnt, 9).Value = Worksheets("入力").Cells(データ数, 19).Value Worksheets("H").Cells(cnt, 10).Value = Worksheets("入力").Cells(データ数, 20).Value Worksheets("H").Cells(cnt, 11).Value = Worksheets("入力").Cells(データ数, 21).Value Worksheets("H").Cells(cnt, 12).Value = Worksheets("入力").Cells(データ数, 10).Value Worksheets("H").Cells(cnt, 13).Value = Worksheets("入力").Cells(データ数, 11).Value Worksheets("H").Cells(cnt, 14).Value = Worksheets("入力").Cells(データ数, 22).Value Worksheets("H").Cells(cnt, 15).Value = Worksheets("入力").Cells(データ数, 23).Value cnt = cnt + 1 End If Next データ数

  • ピボットテーブルのフィールドリストについて

    現在、ピボットテーブルでデータを集計していますが、月ごとの集計の仕方で悩んでいます。 ピボットテーブル作成はど素人です。 そこで、教えていただきたいのですが、 使っている経理のソフト(エクセル)があります(ネットでダウンロードしました)。 そのソフトでは、仕訳帳シートがピボットテーブルの元のシートになっていて、 別シートにピボットテーブルのシートがあります。 なぜか、仕訳帳シートにはない項目(フィールド)がピボットテーブルリストにはあり、 その方法を知りたいのです。 仕訳帳シートでは、日付の項目しかないのに、ピボットテーブルのフィールドリストには、「日付」のほかに「集計月」という名前のフィールドがあるんです。 この「集計月」のリストはどうやれば作れますか? ちなみに、グループ化という方法も試してみましたが、 まだ未定の行には日付が入力されていないため、 グループ化ができないみたいです。 エクセル2010です。 用語などよくわかっていないので、お手数ですが、わかりやすく教えていただけると助かります。 カテゴリがあっているのかわかりませんが、どうぞよろしくお願いいたします。