トップページtech
1002コメント344KB

Excel VBA 質問スレ Part42©5ch.io [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2016/06/26(日) 02:35:43.31ID:bX5XM7mI
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part41©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1461697906/

※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 122
http://echo.2ch.net/test/read.cgi/bsoft/1461287268/
0075デフォルトの名無しさん2016/06/28(火) 23:52:47.60ID:VVOBsC/w
Replace 関数
WorksheetFunction.Replace メソッド
Range.Replace メソッド

どのReplace だろう・・・
0076デフォルトの名無しさん2016/06/29(水) 00:12:52.99ID:4tCylVnh
>>73
Sheet1と2で書き換わる場所が同じなら、
その可能性もあるんだけど、
Range("A1:A100")って指定してるのに、
他シートに誤爆する時は、Range("A1:G20")とか、
全然関係ない所を書き換えちゃうの。

>>75
Range.replace
0077デフォルトの名無しさん2016/06/29(水) 00:14:05.88ID:4tCylVnh
↑すいません。
>>74でした。
0078デフォルトの名無しさん2016/06/29(水) 00:17:45.42ID:eYIXcV9j
>>76
んじゃselectionを使っていてそれを間違えてるかその辺。なんにしろ見てみないとわからない
バグではないと思う。何かコードがおかしい気がする

あんまり関係ないけどrange()はrange(cells(y,x),cells(yy,xx))みたいにcells()で指定したほうが扱いやすいよ
0079デフォルトの名無しさん2016/06/29(水) 00:22:08.66ID:s6QK1Tqr
まぁ、誤爆はないでしょ。
前後の処理でシートの指定を引きずってるとかないの?
0080デフォルトの名無しさん2016/06/29(水) 02:44:46.72ID:fEawViXQ
ちゃんとした環境もコードも晒さないような人の話は信用できん
0081デフォルトの名無しさん2016/06/29(水) 07:45:57.05ID:tDtN45k1
>>76
Selectionを使用しているならThisworkbook.Sheetsを使った直接指定に。
RangeをObjectとして持ち回っているならトレースでどこかで範囲が変わっていないかをまず確認した方がいいね。

直接指定しててそうなるなら他の所で変な処理が走っていないか確認した方がいい。
0082デフォルトの名無しさん2016/06/29(水) 13:02:20.79ID:3S9a7QAX
With でシート名を指定したのに、その中でドットを付け忘れてアクティブなシートで処理しててはて???って悩んだことがあったわ。w
エディタに該当部分コピーしてよっく見たらおぉっとなったけどw
0083デフォルトの名無しさん2016/06/29(水) 18:14:22.55ID:a2EjMaiS
For文の中にPrintoutを入れて自動連続印刷にしているんですけど
印刷プレビュー表示→連続印刷っていう風には出来ますか?
0084デフォルトの名無しさん2016/06/29(水) 19:03:11.42ID:eYIXcV9j
>>83
連続印刷でぐぐったら出てきた
http://homepage2.nifty.com/yokosuka/Application/VBA/vba2.htm

個人的には
・forで印刷プレビューだけ確認。もちろん途中で終了できるようにする
・forで印刷
と処理を分けたほうが良いと思うけど
0085デフォルトの名無しさん2016/06/29(水) 19:22:48.23ID:Lw5Czke2
個人的には
連続でPDFに出力して
PDF結合するソフトで出力したPDFを結合して
PDF閲覧ソフトでプレビューして問題なければ印刷
がいいと思う

どうせexcelの印刷プレビューじゃ文字の見切れとか確認できないし一度PDFにした方が確実だしプレビューもしやすい
0086デフォルトの名無しさん2016/06/29(水) 19:59:35.11ID:a2EjMaiS
>>84
For文の中にPrintPreviewとPrintoutを入れちゃうと処理の度にプレビューが表示されてそのまま印刷しちゃうとPrintPreviewとPrintoutの印刷が出て…って感じなんですよね
とりあえずFor文の前に1回目の処理とPrintPreviewを書いてFor文の中に2回目からの処理とPrintoutを書くってやり方にしたんだけど
綺麗なコードじゃないなぁと思ってここで質問してみました
>>85
効率化させるためにマクロ組んでるだけなんでそのやり方はやめときますm(_ _)m
0087デフォルトの名無しさん2016/06/29(水) 20:30:20.68ID:CsRUguyd
連続印刷なら
一旦シートに一覧作って
そこから一括出力するようにすると
使い勝手がいい
更新日付と時間も一覧に並べて置けば
何を出力したかも残って便利
0088デフォルトの名無しさん2016/06/29(水) 20:35:44.66ID:e2caFJgf
1回目と2回目以降で処理が違うならその方法が正しいでしょ
ループの中で1回目か2回目以降を判定してPrintPreviewかPrintOutかに処理を分けるのでもいいけど

iがカウンタだとして
PrintOut(previwe:=(i=1))とかすれば少しスマートかもしれない
0089デフォルトの名無しさん2016/06/29(水) 22:30:12.13ID:5Wgb8/sh
質問です
会社に従業員が100名います
現在ブック内に100(従業員ごとの)シートを作り、印刷するときはシートを探し出して行っています。

この100あるシートは単にA1とB1セルに個人名が入力されているだけで他は全く同じです。

1日に何回も印刷する機会があり100あるシートから個人を探すのも大変です
そこでシート1に個人名を羅列し、それを選択するだけで原本のA1とB1に選択した個人名が自動記入できるようにできればかなり短縮出来そうです。

知恵をお貸し下さい
0090デフォルトの名無しさん2016/06/29(水) 22:41:11.52ID:5Wgb8/sh
>>89
追記
ブック内が重たいのでハイパーリンクを使って飛ぶのではなく個人名が入ってるシート1と原本のシート2のみにしたいです
宜しくお願いします
0091デフォルトの名無しさん2016/06/29(水) 23:38:41.90ID:GaJpr6Ae
それシート1にリスト作ってVLOOKUPとかじゃダメなの?
0092デフォルトの名無しさん2016/06/29(水) 23:46:32.75ID:lv/1JNiY
ハイパーリンクを使いたくないって意図がよくわからんが
セレクトしてるセルが変わったら動くイベントを使ってマクロを組めばいい
セルが変わっらセル内の文字列を拾ってシートを表示してセレクトする

シート1以外は元々非表示にしといて
シート1のセル選択でのみ表示する
表示したシートからフォーカスが外れたら
シート1以外を非表示にする
これはセレクトしてるシートが変わったら動くイベントを使う
0093デフォルトの名無しさん2016/06/29(水) 23:49:34.21ID:eYIXcV9j
>>91でいいと思う。
マクロ使うと逆にしんどくなるだろう
0094デフォルトの名無しさん2016/06/30(木) 00:53:15.29ID:gVFgOq4s
質問です!
windows7
excel2010

数値が文字列で入力されたデータが1列100行あります。


1000
100
29
302



この100行のデータを”文字列を数値に変換せずに”100以下の行のみをフィルターで絞ることはできませんでしょうか?
自分で調べながらソースを書いてみたのですが、

'Range("A1").AutoFilter field:=1, Criteria1:="<= 100"
やはり最後のCriteria1の部分がうまくいきません。

文字列を数値に変換せずに、という理由は、そのデータをまた別の作業で使うからです。
文字列のままの方が便宜上助かるのです。

よろしくお願いいたします!
0095デフォルトの名無しさん2016/06/30(木) 02:23:54.27ID:G0SvbOL7
数字の29は数字の100より小さいけど
文字列の"29"は文字列の"100"より大きいのが文字列のルール
文字列のまま扱うっていうのはそう言う事だけど良いのか?
0096デフォルトの名無しさん2016/06/30(木) 05:40:15.64ID:sqsWJL50
>>94
別の列に数値にした値を作ってそれでフィルタしたら?
0097デフォルトの名無しさん2016/06/30(木) 08:09:18.42ID:NV9SAKW0
>>89
その100あるシートのフォーマットはシートごとに違うの?
0098デフォルトの名無しさん2016/06/30(木) 08:37:50.93ID:nog85R/v
数値に変換してもまた文字列に戻せるけどな
エクセルのヘルプで文字列(数値)操作関数のリストが見られるから、 印刷しとくと良いよ。
http://i.imgur.com/YUWXGBJ.jpg?1
0099デフォルトの名無しさん2016/06/30(木) 09:03:14.45ID:/6y2Ijm2
>>98
この場合どうする?
0010
これ数値化すると元の状態には戻らんぞ
(最初の0がいくつあったかの情報が失われてるから)
0100デフォルトの名無しさん2016/06/30(木) 09:41:33.34ID:iW6PAU4H
>>91
>>93 レスありがとうございます
個人名に紐付いた別の情報(例えば電話番号とか)を探し出したいのではなくリストに記載した個人名を複数の指定セルに自動記入したいのです

リストにある名前を手動コピペだと貼り付け漏れのセルがあると困ります

>>92
ブックがかなり思いのでシート自体少なくしたいと思ってます
>>97
全く一緒なんです
定期的にセル挿入しないといけないんですが手作業ですべて改定してまして大変なんです
0101デフォルトの名無しさん2016/06/30(木) 09:54:24.43ID:JMC+srqw
>>99
>>94の例示を良く見て
0102デフォルトの名無しさん2016/06/30(木) 09:58:47.39ID:nog85R/v
>>99
それはないと判断した
あるのなら落としてはいけない情報だから例示するはず

それに100以下のみを抽出ということは、印刷の都合上やテキストファイルでのやりとりなどで
たまたま文字列形式になってるが、元々は普通の数字(頭に0の付かない)なんだろ。
だから数字で管理して、必要に応じて文字列にすることも検討に値する。
0103デフォルトの名無しさん2016/06/30(木) 10:02:30.89ID:4fmg0FNR
>>94
別の列にコピーして数値化
フィルタ
0104デフォルトの名無しさん2016/06/30(木) 12:22:06.96ID:6OQ3oF91
頭ゼロとか見た目だけならセルの書式設定でどうとでもなる
0105デフォルトの名無しさん2016/06/30(木) 18:06:00.58ID:2VNG/wFb
>>94
AutoFilter使わないと駄目なのかな?
どうせVBA使うのなら、条件に合わないセルの行を隠していけばいいと思うけど

VBA内で文字列を数値化して比較するのは問題ないだろうし、
どうしても文字列のままにこだわるのなら
文字長が3以上かつ文字が"100"でないセルの行を隠していけばいい
0106デフォルトの名無しさん2016/06/30(木) 20:56:53.06ID:AI19lM0o
>>99
0から始まるのは8進数
0107デフォルトの名無しさん2016/06/30(木) 21:48:14.85ID:oIta/qZk
エクセルに取り込んだ情報をVBA介してアクセスのDBに移してクエリで処理してるんだけど、
このクエリか、もしくはクエリを含むサブフォームをエクセル上で操作できるようにする方法ってない?

大量の情報を扱うから、いちいち配列をやりとりするのは手間なんだけど、
表示する範囲のみを適宜取り出してエクセルのフォームに表示するやり方しかないかな?
0108942016/06/30(木) 22:24:24.95ID:gVFgOq4s
皆様、94です。
いろいろなご提案ありがとうございます!

96さん、103さんのアイデアで実現してみました。
…ですが、そもそも数値化がうまくいってないことに気づきました。
単純にワークシート関数のval()などを使えばいいかなと思いましたがなかなかうまくいきません。

じゃあ一旦バリアント型変数に格納して、FormatNumberでセルの書式を数値に変更して戻す、という試行錯誤に。
(この時点で数時間)
v=Range(Cells(…

だったら、別の列を挿入せずにそのまま実データが入っている列でそれをやっちゃえばいいか・・・
というのが最終形になりました。

なぜ文字列型でないといけないのかというのを記載していませんでしたが、Accessに取り込んで
別のデータと照らし合わせるクエリを作るためです。

その照らし合わせ先も文字列なので、文字列と文字列でないとひと手間かかっちゃうんです。

別の列を作ってというアイデアが一人ではなかなかでなくて。
ここで聞いてよかったです。

皆様ありがとうございました!
0109デフォルトの名無しさん2016/06/30(木) 23:32:27.98ID:IY0vyffw
>>106
やゼロフィルだな
0110デフォルトの名無しさん2016/07/01(金) 00:29:15.54ID:xFyxlTTO
ListObjects.Addで、

↓これは出来たのですが
Source:=1つのフォルダに入っている複数のCSVファイル

↓これや、
Source:=複数のフォルダに入っている複数のCSVファイル

↓これが出来ません
Source:=CSVファイルとEXCELファイル

何か方法はないものでしょうか?
全部1つファイルにまとめてから処理するのは出来るのですが、
そうするとファイルが重くなるので、直接ファイルから取得したいのです。
0111デフォルトの名無しさん2016/07/01(金) 07:29:07.88ID:w7ShJWdY
>>107
ExcelからAccessを操作する場合
Accessのフル機能は使えない
クエリは呼び出せるけど
対象となるクエリがSQLで表現出来ないとダメ
何を言ってるかというとAccessのVBAで作った関数をクエリに組み込んでるとダメ

速度を求めるならExcelのフォームに表示するのではなく
Accessで完結させるべき
速いと言い難いが
0112デフォルトの名無しさん2016/07/01(金) 07:41:30.79ID:ndIDnLDu
>>107
手元の配列(?)にデータがあるのになんでそんなことするの?
0113デフォルトの名無しさん2016/07/01(金) 08:38:13.68ID:092EU/yt
>>107
ACCESSで使っているクエリをExcel側で操作したいって
EXCEL側でクエリを実行したいのか、EXCEL側でクエリを弄りたいのか、どっち?

まぁどっちにしてもACCESSのテーブルにクエリ自体を突っ込んで
EXCEL側からもACCESS側からもそれを見に行くようにすればいいんじゃないかな
0114デフォルトの名無しさん2016/07/01(金) 09:26:46.36ID:3tq1seUp
もっとシンプルに実現できることを、わざと難易度を上げて複雑にして、
「それでも私は頑張って仕事しています!」ってアピールした馬鹿だろ。
0115デフォルトの名無しさん2016/07/01(金) 10:59:06.36ID:092EU/yt
>>114
EXCEL側で、ACCESSに登録した後の形態を確認したいとかじゃね?
どっちにしても背景が見えないから、いきなりバカ扱いするのは早計だと思うが
0116デフォルトの名無しさん2016/07/01(金) 12:10:58.79ID:KP5+MPpx
Excel至上主義者はAccessを否定するんだよなぁ
Accessの使い方知らないんだろうけど
0117デフォルトの名無しさん2016/07/01(金) 13:20:53.52ID:lWEFeltJ
>>116
Accessがというより所詮DB(またはSQL)だからって意味じゃないか?
0118デフォルトの名無しさん2016/07/01(金) 19:36:08.17ID:ISgfsORm
>>112
手元のデータは未加工の情報で、必要な処理をAccessで行ってる。
加工後の情報が目的と合致しない場合は、再び未加工の情報を(パラメータを調整した上で)加工しなきゃならない。

速度が段違いなので最初の受け渡しロスを含めてもAccessで行った方が速いんだけど、
今作ってるマクロの前身がセルに大量の関数が書き込まれているタイプのものだったんで、
出来るだけ同じ操作感覚になるようにエクセルにこだわりたかったんだけど、やはりAccessにするしかなさそうね。
0119デフォルトの名無しさん2016/07/01(金) 19:51:03.41ID:lWEFeltJ
>>118
> 加工後の情報が目的と合致しない場合は

個々の値の加工というより何かの
集計値が目的に合ってるかどうか判定してるのかな?
そうじゃなきゃaccessの方が速い理由がわからない。
0120デフォルトの名無しさん2016/07/01(金) 20:20:28.37ID:ISgfsORm
>>119
日々の予定値の合計が目標値を超えちゃいけないとか、業務上の色んな要素が関わってくる。

どっちにしろ大量のデータを処理するならVBAよりもクエリ使うべき。
っていうか修飾が必要ない純粋なデータ処理はデータベースソフトでやるべき。
0121デフォルトの名無しさん2016/07/01(金) 20:21:52.16ID:1jGNbpkt
まぁそうなんだけどねぇ
Accessは大昔バグが酷かったからアレルギー餅もいるんだよね。
0122デフォルトの名無しさん2016/07/01(金) 20:24:36.75ID:OKSQC6Td
アクセスにアレルギーがあります、だからエクセルを使います(50代開発者)
0123デフォルトの名無しさん2016/07/01(金) 20:30:40.30ID:lWEFeltJ
>>120
いや「純粋なデータ処理は汎用言語でやるべき」でしょ
0124デフォルトの名無しさん2016/07/01(金) 20:31:49.35ID:1jGNbpkt
>>122
ウチの上司がまさにそれ
Accessのバグを調べながら開発するより新規にdbソフト作ったほうが早いってことでDBソフトごと作ってたわ
0125デフォルトの名無しさん2016/07/01(金) 20:42:19.31ID:OKSQC6Td
>>124
どうして恥の上塗りするん?www
0126デフォルトの名無しさん2016/07/01(金) 20:56:43.52ID:tm+bfi5q
>>123
今時のデータベースソフトより性能がいい処理ができると言うなら別に止めやしないから頑張ってくれ
0127デフォルトの名無しさん2016/07/01(金) 21:04:36.60ID:lWEFeltJ
>>126
I/O込みなんだろ?なんでDBの方が速いんだ?
0128デフォルトの名無しさん2016/07/01(金) 21:17:58.22ID:ISgfsORm
汎用言語ってのが何を指して言っているのか分からんが、DBとクエリ機能が最初から使える奴ならその方がいいだろうね。
C/C++言語で一から作れとかって話だったら、よっぽど用途が限定されてない限りアホくさくて話にならないが。
0129デフォルトの名無しさん2016/07/01(金) 21:20:41.29ID:tm+bfi5q
意味わからん
汎用言語でも I/O 使うだろうし
DBMS のキャッシュ制御を上回るのは大変だと思うが
0130デフォルトの名無しさん2016/07/01(金) 21:36:18.24ID:lWEFeltJ
>>129
もとの質問(>>107)ではメモリ上にあるデータをいったんDBに移してるように読めるが
0131デフォルトの名無しさん2016/07/01(金) 21:57:46.24ID:tm+bfi5q
>>130
VBA 以外の汎用言語で Excel のデータを扱うのは結構大変だよ?
データ量が多いなら VBA でしこしこやるより CSV に吐き出して DBMS に読ませて処理した方が速いケースは普通にある
エラー処理が面倒だけど元データがしっかりしてるなら SQL-Server で Excel ブックを直接読み込むとかもできるし
0132デフォルトの名無しさん2016/07/01(金) 21:59:45.83ID:tgxqnVRr
>>123
なにがメリットなの?
0133デフォルトの名無しさん2016/07/01(金) 22:17:24.11ID:lWEFeltJ
>>131
ふーむ、例えば単純なSUMとかでもそなのかな?
0134デフォルトの名無しさん2016/07/01(金) 22:19:37.55ID:5rFR/ghy
>>133
やってみればいいんじゃね?
0135デフォルトの名無しさん2016/07/01(金) 22:24:48.41ID:OKSQC6Td
質問そっちのけで何しとんねん無能初心者どもw
0136デフォルトの名無しさん2016/07/01(金) 22:38:36.31ID:lWEFeltJ
>>131
>>134
まあ仕事だったら速ければやるかもな...
0137デフォルトの名無しさん2016/07/01(金) 22:59:03.05ID:QhnUR69n
質問ですが、皆さんお仕事はどんな職種なんですか?
0138デフォルトの名無しさん2016/07/01(金) 23:17:09.94ID:092EU/yt
>>126
まぁデータのやり取りするんであれば普通に考えれば手続き型言語より集約言語の方が速いわな。
もちろんINDEXとかきちんと貼られて有効に使われてること前提だけど
0139デフォルトの名無しさん2016/07/02(土) 02:24:42.73ID:pHmHPwMw
>>137
アンケート厨はウザがられるよ
0140デフォルトの名無しさん2016/07/02(土) 03:24:09.07ID:Goc594+n
そもそも、「質問ですが、」← これ無くても意味通じるし、有るとかえってイラッとするよな。
「初心者です」
「バージョンは最新です」
「何もしていないのに」
とかも同じ。
0141デフォルトの名無しさん2016/07/02(土) 07:52:28.97ID:M5l7NE7m
質問ですか?
0142デフォルトの名無しさん2016/07/02(土) 08:25:13.36ID:uAYigWdO
>>137
システム開発
0143デフォルトの名無しさん2016/07/02(土) 10:23:13.18ID:ihvejTGf
>>137
ちなみにあなたのお仕事は?
0144デフォルトの名無しさん2016/07/02(土) 10:36:47.74ID:meqco/WD
仕事関係ないだろ
0145デフォルトの名無しさん2016/07/02(土) 11:24:50.38ID:hSx47VXK
証明出来ない以上、なんとでも言えるしな

でも主張によって、プログラミング関係の仕事してるかどうかは割と推測しやすいと、このスレ見てて思った
0146デフォルトの名無しさん2016/07/02(土) 12:33:25.79ID:+AF4e5eX
プログラミング関係の仕事をしてるやつは居ないとこのスレ見て思った
0147デフォルトの名無しさん2016/07/02(土) 12:52:04.41ID:meqco/WD
仕事でPGやってる人よりも事務職で課に1人だけいそうな、何でもかんでもVBAで作らされてる人の方が詳しそう。
やらせればPGの方もスキル発揮するのだろうけど、普段VBAゴリゴリ書いてるプログラマーって少ないんじゃない?
0148デフォルトの名無しさん2016/07/02(土) 12:59:09.33ID:hSx47VXK
でも「VBAゴリゴリ書いてるプログラマーです」って言うと「VBA使うような奴はプログラマーじゃない」とか言うんでしょ。
分かってるんだから。
0149デフォルトの名無しさん2016/07/02(土) 13:03:54.23ID:cbv/Tz9a
2chなんだからプロが来るところじゃないし仕事を語る場所でもない
0150デフォルトの名無しさん2016/07/02(土) 14:18:55.79ID:Oflr6P+h
A列のセルがabcから始まってる場合、または空白の場合に
その行全体を削除する、というマクロを作りたいのですが
どうすればいいでしょうか?
excelのバージョンは2007です。
0151デフォルトの名無しさん2016/07/02(土) 14:51:00.96ID:AdcotA2t
A列のセルがabcから始まってる場合?よくわからないですが
空白のセルがあった場合に、そのセルの行を削除するのなら
0152デフォルトの名無しさん2016/07/02(土) 14:54:37.99ID:hSx47VXK
>>150
Sub test(DeleteRange As Range)
Dim R As Range

For i = 1 To DeleteRange.Rows.Count
v = DeleteRange.Cells(i, 1)
If v Like "abc*" Or Len(Trim(v)) = 0 Then
If R Is Nothing Then
Set R = DeleteRange.Cells(i, 1).EntireRow
Else
Set R = Union(R, DeleteRange.Cells(i, 1).EntireRow)
End If
End If
Next

R.Delete
End Sub
0153デフォルトの名無しさん2016/07/02(土) 14:54:42.75ID:uJKAJ0cL
abcdeとかabczyの文字列だろ察してやれよ
0154デフォルトの名無しさん2016/07/02(土) 14:57:48.15ID:AdcotA2t
vba sum関数で質問です。よろしくお願いします。

sumで合計する対象となる数個のセルの中に負の値があると
合計されず、値がブランクになってしまいます。

例えば、A列の1〜5行目までのセルの合計を
合計 = Application.WorksheetFunction.Sum(Range(Cells(1, 1), Cells(5, 1)))
として求める場合に、どこかのセルで負の値があると、合計は” ”となります

エラーの原因と正しく合計するためにどうしたらいいのか、ご指導いただけませんでしょうか?
よろしくお願いいたします。
0155デフォルトの名無しさん2016/07/02(土) 15:09:16.78ID:AdcotA2t
>>153
すみませんでした
0156デフォルトの名無しさん2016/07/02(土) 17:10:19.71ID:V1fyPFSu
>>154
シートでsum関数使った結果は?
正しいならvbaの型がおかしいのでは?
0157デフォルトの名無しさん2016/07/02(土) 17:13:08.92ID:AdcotA2t
>>156
ありがとうございます。
シートでのsum関数はしっかり合計されます。
フォーマットも"数値"に直してあるのですがどうしても合計されません。
0158デフォルトの名無しさん2016/07/02(土) 17:16:37.51ID:V1fyPFSu
>>157
コードを上げて。
0159デフォルトの名無しさん2016/07/02(土) 17:37:07.79ID:DDjutEkV
コードを見てみないと何とも言えないが

>>154の指摘の通り
Dim 合計 As Longなり Dim 合計 As Doubleなり
変数は宣言してから使うべき
0160デフォルトの名無しさん2016/07/02(土) 18:11:22.98ID:pRO6q6b5
>>154
戻り値:倍精度浮動小数点型 (Double) とあるから
そもそもブランク” ”なんて返ってこないと思うのだが・・・?

WorksheetFunction.Sum メソッド (Excel)
https://msdn.microsoft.com/ja-jp/library/office/ff838410.aspx
0161デフォルトの名無しさん2016/07/02(土) 19:28:40.63ID:uAYigWdO
>>160
見てみるとエラーで落ちると書いてあるから
おおかたValiantか直接セル指定で書き込んでいるんじゃないか?

で、エラー時はログを出して終わりとか握り潰しているとか。
0162デフォルトの名無しさん2016/07/02(土) 19:37:21.31ID:0/OF67S+
この場合引数はRangeだから
>•引数が配列またはセル範囲の参照である場合、その中に含まれている数値だけが計算の対象となります。配列やセル範囲に含まれる空白セル、論理値、または文字列はすべて無視されます。
が適用される気がするんだが

ちなみにうちの2007で試したら、指定したRangeにエラー値とかあるとエラーになってるっぽい
エラー値も無視してくれれば良いのに
0163デフォルトの名無しさん2016/07/02(土) 21:15:43.11ID:ZFshQN/m
>>152
ありがとうございます。ただ、実行すると
オブジェクトが必要です、というエラーが出てしまいます。
0164デフォルトの名無しさん2016/07/02(土) 21:21:41.67ID:+dqhJmU8
>>163
デバッグくらいは自分でやってみたら
デバッグするうちに理解できる事もあるから
0165デフォルトの名無しさん2016/07/02(土) 21:24:09.83ID:+dqhJmU8
>>154
sumの対象範囲を色々変えてみたらどの箇所が含まれていたらエラーになるか判る
そのセルについて詳しく調べたら何か判るかも
本当に負の値が原因なのか
0166デフォルトの名無しさん2016/07/02(土) 21:26:42.02ID:Kre/4kSw
教えたがり回答者の正しいかどうかも分からんコードのデバッグを質問者に要求する理不尽スレw
0167デフォルトの名無しさん2016/07/02(土) 21:29:57.19ID:+dqhJmU8
>>166
ならそのコードを採用しなければ良いだけ
0168デフォルトの名無しさん2016/07/02(土) 21:34:11.66ID:Kre/4kSw
>>167
採用されてもいないコードのデバッグを要求するお前な何なん?w
0169デフォルトの名無しさん2016/07/02(土) 21:55:25.63ID:hSx47VXK
ここ質問スレだから回答する事そのものに対して文句を言うのは筋違い。

回答が間違っているとケチをつけるなら自分で書くべきであって、
何もしないのに文句をつけるのも筋違い。
0170デフォルトの名無しさん2016/07/02(土) 22:17:27.39ID:cbv/Tz9a
サービス回答
0171デフォルトの名無しさん2016/07/02(土) 22:22:30.25ID:mzeRacQg
>>166
ID:Kre/4kSw
バカ発見
0172デフォルトの名無しさん2016/07/02(土) 22:24:48.25ID:Kre/4kSw
>>169
それよりお前は筋違いの回答をデバッグして出直してこいやwww
0173デフォルトの名無しさん2016/07/02(土) 22:34:10.98ID:hSx47VXK
>>172
というかお前は何でVBAすら分からないのに張り付いてるんだ?
0174デフォルトの名無しさん2016/07/02(土) 22:41:19.33ID:Kre/4kSw
>>173
VBA分からんのはお前やろwせめて動くコード書けるようになってから回答しろやwwww
■ このスレッドは過去ログ倉庫に格納されています