ExcelのVBAに関する質問スレです
★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。
★2 ExcelのVBA以外の部分に関する質問はNGです。
但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。
★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
VBAとは、『Visual Basic for Applications』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
前スレ:Excel VBA 質問スレ Part29
http://toro.2ch.net/test/read.cgi/tech/1364689772/ 関連スレ:VBAなんでも質問スレ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
3 :
デフォルトの名無しさん :2013/06/02(日) 21:26:04.29
ノ ゚.ノヽ , /} ...
,,イ`" 、-' `;_' ' ..::::::::::::::...
,-、 _.._ ( (,(~ヽ'~ ..:::::::::::::::::::::::
)'~ レー' 〉 ヽ i`'} .:::::::::::::::::::::::
~つ '-ー、 i | i' ...:::::::::::::::::::::::
/ < / 。/ ! ......::::::::::::::::::::::::: これは
>>1 乙じゃなくて
/ ~^´ /},-'' ,●::::::::::::::::::::::::::::::::::::
i、 ,i' _,,...,-‐-、/ i :::::::: .:::::::::::::
..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら
) {~''~>`v-''`ー゙`'~ ..::::::::: ........::.
{ レ_ノ ..::::::::. ......:::::::::
ノ '' ..::::::: ...::.:...:::::::::
.::::::::: ...:......:::::::::::: .
.:::::::::::. ..... .. ..:::::::::::::::::::::::: :::.
::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::..
.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::.
::::::::::::::::: :::::::::::::::::::::::::::::: :::::
.:: ::. :::
テンプレ追加要望。 質問者はFriendpasteで書き込む事、使い方は簡単だし、使った事無い人は逆に使ってみると良いかも知れない。 この要望は反対意見があれば取り下げるものとする。 ただ、いちいちダウンロードしてやるよか余程早いし安全だと追記しておく。
>>4 言ってることが良くわかんないんだけど。
質問者はこのスレに内容を書き込むじゃ駄目なのか?
>>4 質問者に何をさせようとしているのかよくわからん。
質問者が質問の内容をこのスレとFriendpasteに書かなければいけないのならNG。
〜みたいな時はどうするの、とかそういうのはただ書き込めばいいと思う。 実際にコードを貼って、このコードのどこが変でしょうみたいな質問はそっちに貼って貰えば回答する側も楽かと思うんだけど。 自由に編集出来る環境の方が皆使いやすいし、間違った回答や分かりづらい回答があった時も修正しやすい、まさにコードで語るって感じになるし。
9 :
6 :2013/06/02(日) 23:15:36.28
>>4 追記。
一番の問題はパイパンのような奴がのさばらないようなルールにするんだったら全然OK。
Friendpasteに書き込むのは質問者のみとかね。
回答者はそれを見て回答すればいいわけでしょ。いちいちコード書く必要なんてないわけだし。
前スレのようにパイパンの糞コードがさんざん叩かれたレスを見て はたして質問者がコードを提示するとは到底思えないなのだが。 そういうのも含めてそこそこルール化する必要があると思うけど・・・。 かなり面倒なスレになると思う。
そうか、自分で書かせるのは本来だよな。
俺が間違っていたよ、
>>9 のルールにしよう。
あぁ!?テメエなんだよ a ってのはよう!!質問するならまともなコード示せやゴミ!!シネ!!カス!! a ってなに?てかコメント書くかレスで改札よろ。あ、後の参照のためにもコメントがいいかも。とりあえずよろ。 こんな感じか。別に気にする必要はないかと。
改札よろ
なんかパイパイがコード貼る理由を作ってるようにしか見えない。
まぁ、まだ試しの段階だよ。 新しいルールを組み込むのは簡単じゃない。 でも本当に編集出来るなら個人的にちょっと興味があるな。 WEBにこういうツールがあるとは知らなかった。
>>8 20行程度までだったら、レスでいいだろ。
外部に質問者のコードがあったら、いちいちそこ見ないと話の流れがわからんし。
>>17 ハァ?
てめ、プログラマじゃねーのかよ。
プログラマだとしたら閉じ籠りすぎだわ。
>>19 何で知らないだけでそんな言われ方されなきいけねーんだ、調子にのんなよ
これまで通り、このスレに書き込むでいいでしょ。 何十行もあるコードを晒したい人は、そのfriendなんちゃらでもどこでも使えばいい。 でも、そのコードに突っ込みを入れるときは要注意なってのが新ルール。
>>20 個人的興味でこのスレのルールにしようなんて思うなカス
まだまだ続くの?
>>22 早とちりしてんじゃねーよバカ
どうみても俺がルール変える話してないだろうが
俺はプログラマだ、確かにな閉じこもりではあるけどな…そこは正解
後から追っかけでみる人を考えると 投稿したコードの有効期限が十分に長い事 リビジョン毎にURLが違う事 も重要だけどどうなん?
26 :
6 :2013/06/03(月) 00:24:43.43
>>21 賛成。
動くコードは質問者が把握していればいいわけで回答者が質問者のコードの全てをを知る必要はないしね。
勿論概要程度は知っておく必要あるけど。
コードのやり取りでFriendpasteにしなくてはいけない理由がよくわからない。
今までだって質問者がうpローダを使っている実績があるわけで、今更感が否めない。
Friendpasteは編集できるって言ってるけど、オリジナルのコードが無くなるわけだで
それはそれで問題だと思う。
結論としてはFriendpasteを使うのはノーかな。
じゃ、Friendpasteなしでいいね。 ちゃんと明言しとかないと、質問者が迷うぞ。
これまでどおりでOKだわな。
うむ。
他人の足引っ張るのが目的みたいな連中だね
>>21 >コードに突っ込みを入れるときは要注意
何をどう注意しろと?
前回の桃白白のコードのどこが糞なのか 「具体的に」 指摘しろ。 「それ以前の問題」とか「糞」とかいうのは完全に叩きだからな。 今のところ人格攻撃だけで、具体的な指摘がないんだ。
あっただろとはレスが付くが実際に指摘はしない件についてw
うp先をスレのルールで強制するからには、それなりの理由が必要だと思うけど、 ここまで「使いたい」「編集ができる」程度の理由しかないし、それほどメリットがあるとは思えない。 そもそもうp先の選択は個人の自由だろ。 ルール化したら、指定うp先じゃないから見ないとかくだらない話になりそうだし、今までどおりでいいと思う。
>>32 前スレで具体的に指摘されたてのが理解できないのなら
ここで改めて指摘しても意味ないと思う。
具体的な指摘内容から総称して「糞」と言われてるだけだと思う。。
再度何かを語り合う価値もない屑コード
まだ桃白白に嫉妬してんのかよ
>>32 そんなのは新ルールでもなんでもない
理由も具体的指摘もなくて批判が成り立つわけないだろ
人格攻撃してるやつとまっとうな批判をしてるやつを一緒にしないでくれ
あと、そこで誰かの名前だすの必要なの?
お前の方がよっぽど個人の人格を攻撃してないか
このスレで一番クズなのは自治厨 なにがFriendpasteだよ、あほかw
Excel 2000で作成したApplication.VBEを使用するアドインhoge.xlaが動作する環境に関する質問です。
hoge.xlaは、例えば
http://officetanaka.net/excel/vba/vbe/03.htm のようなことを行います。
このアドインは、Windows XP+Excel 2000では動作確認できているのですが、それ以降のバージョン
・Excel 2003/2007/2010/2013
・Windows 7/8
の組み合わせで、動かないものはありますか?
42 :
41 :2013/06/03(月) 18:13:58.56
念のため付け加えておきますが、これは業務に関わるものでは無く、純粋に趣味の質問です。
>>41 少なくとも7(32bit)+2007では動くと思う。後は知らん。
>>41 VBEへのアクセスは2002以降デフォルトで無効だけどアドインなら平気かも
>>44 アドインでも駄目だよ。明示的に有効にしてやらないと動かない。
>>41 そのアドインどこかにうpれば試してくれる人いるかもよ
Friendなんちゃらは知らないけど、 便利なら使ってもいいんじゃない? ただルールとして義務付けるのは無しだね。 その場において便利だと思った人が使えばいいんじゃないかな。
>>41 普通に考えてそれだけの環境持ってる人探して聞くより
MSDNに質問投げた方が早いと思うけどなぁ。
>>41 OSもOfficeも試用期間で試せばいいじゃん
ここの回答で動くっていわれても当てにならないよ
ブックにシートが20枚ほど有り、その中からシート名が1月、2月、、、、12月となっているもの のシートについてデータを処理するんですが、シート名を得て処理するやり方教えて下さい。 順番は問わないです。
53 :
41 :2013/06/04(火) 11:29:31.40
皆様、レスありがとうございます。
>>49 > OSもOfficeも試用期間で試せばいいじゃん
Windows 8は購入しました。
Office 2013の評価版を試そうとしたのですが、プロダクトキーがXXXXX-XXXXX-XXXXX-XXXXX-XXXXXと
なってしまい、評価できない状態です。ググると同様の状況になっている人が居るみたいですが、現状では
解決できていません。
いっそ製品版を買ってしまおうかと悩んでいるところです。
> ここの回答で動くっていわれても当てにならないよ
もっともなご意見です。
ただ、求めているのは「動かない組み合わせ」です。
もちろん、「動く組み合わせ」の情報もうれしいです。
下位互換あるからどの組み合わせも平気だよ って言って欲しかったんじゃないの?
55 :
41 :2013/06/04(火) 12:56:23.95
>>54 動作しないよという情報があって、その組み合わせを私の方で手に入れることができれば、
アドインを修正しようかなと思いたったのが質問した動機です。
このアドインは数年前にsourceforge.jpで公開済みのもので、今回動かないよという情報が
なければ、このまま放置しようと思っています。
のどかな日々
57 :
桃白白 ◆9Jro6YFwm650 :2013/06/04(火) 18:52:40.26
_,,..,,,,_ / ,' 3 `ヽーっ l ⊃ ⌒_つ `'ー---‐'''''"
このスレオワタ
次の方どうぞ
お言葉に甘えて・・・ 桃白白さんのようなコード書きたいんですが、お勧めの書籍・HPありますか?
>>60 お勧めできるような書籍で学習すれば、桃白白のようなコードにはならない。
よってそのような書籍はない。
>>60 マジレスすると、ExcelのオブジェクトをVBAで操作する系の書籍一冊と、Code Complete。
「ExcelのオブジェクトをVBAで操作する系」はいっぱいあって絞れないんで、Amazonで検索して
目次見たりレビューコメント見たり、書店に行って選んだりして。
パイパンのコードに書けてるのは、Excelのオブジェクトの知識と、Code Completeで語られるような内容。
誤:パイパンのコードに書けてるのは 正:パイパンのコードに欠けてるのは
65 :
桃白白 ◆9Jro6YFwm650 :2013/06/06(木) 18:47:10.15
解せぬ
>>63 確かにCode Completeはまともなことが書かれてるけど一冊6000円以上するし、
かなり分厚い本だから一から全部読もうという気になれないんだよな。
しかも上下巻で二冊w
値段が値段なんで個人で買うにはかなり勇気がいると思う。
気になったテーマだけ読むようにすればいいけど・・・
これはプログラミング自体が目的の人と、他の目的がある人で見解が分かれるところ。
前者ならVBAはオススメできない
Xls拡張子のファイルに記録されているVBAをExcel以外のソフトで見る事はできないのでしょうか?しかもMacで、、オープンOffice都会宇野使ってみましたがVBAのコードは見れませんでした。
>>69 実際試してないからわからないけど、Kingsoft OfficeのVBA対応版なら見れるんじゃないかと。
体験版にはVBA対応してないようだから購入する(5000円程度)必要はあるみたい。
>>69 Windows版のLibreOfficeなら普通に開いて編集できますよ
そのまま動くことは期待できませんが
当方 Win7プロ+LibreOffice3.6.4.3です
エクセルくらい買えよ
ちょっと見たいだけなら体験版で
74 :
69 :2013/06/06(木) 23:17:52.09
死ねゴミw
死ねゴミw
584 : uy [] DATE:2011/05/31(火) 02:08:25.67
はじめましてマ板、ム板、vipにて、uy( うゆ )というコテハンをやっている者です
13〜18歳のおにゃのこ(新品)にだったら手取り足取りRubyとかlambdaとか、世界の真理についても教えれるけど?
何作りたい? CGI? ゲーム? それともプログラミングだけおぼえたい?
2chでは漏れの事、バカにする奴多いけど、マジで技術高いよ?あと運動も得意です。昼でも、夜でも。
ちなみに両利き、好きなアニメは禁書目録、10万3000冊の技術書を読んでスペルインターセプトできるようになるのが夢
好きな語尾は「 ――だよ? 」 と 「 ――みさかはみさかは 」 です
[email protected] 22♂です
メールまってます
あと、部屋こんなんばっかりなので
こういうの大丈夫な子歓迎
http://www.geocities.jp/c_zelos/soto/heya0.jpg 自分でコスプレしようかなぁ・・・なんて本気で考えてた頃もあったんだけど、女装mixiコミュとかみたら、「やべぇwwwww」って思って
一線は越えない事にした、なのでイベントとかで何でもいいのでコスプレして一緒に周ってくれる人も、すごくすごく募集中です
ここ2年くらい実は、技術高めるべく超研究者モードだったのでイベント関係殆どいってないから今年はいっぱいいきたなぁ(**^^)キミと
スレ汚し、失礼しました
人は皆いつか死ぬから心配する必要はない
Excelメニューのカスタムボタンで VBEを起動するボタンを作ることは出来ないのでしょうか?
>>80 どういうことを試してできなかったのか教えてください。
>>81 まだ何も試してませんが
出来ると言うことですねありがとうございます。
83 :
81 :2013/06/08(土) 15:27:57.88
>>82 出来るとも出来ないともい言ってないけど。
少なくても自分でやれることやらずに他人にいきなり聞く姿勢はどうかと。
はいはい馬鹿がしゃべってますねー
ここは楽しいスレですね\(^o^)/
>>80 ユーザー設定→新規作成でボタンの土台(空白の小窓)ができる
その状態でメニューからVBEエディターの箇所を呼び出し該当項目を土台までドラック&ドロップしたらカスタムボタンの完成
VBAでコピーペースト時に日時の情報がおかしくなるのですが コピーペースト中にデータ型を変換することはできないのでしょうか? Range("a1").Select Selection.Copy Range("a2").Select ActiveSheet.Paste CDate ??
>>87 range("a2").value = range("a1").value
>>88 なるほど、すばらしくシンプルですね!ありがとうございます。
>>86 カスタムボタンなんて用意しなくてもツールバーに「コードの表示」ボタンあるし。
VBA中級者ですが1 一般的な業務で導入できる範囲内で VBAよりもさらに高速かつ膨大な計算が可能な計算ソフトはあるのでしょうか?
>>91 VBA は計算ソフトじゃないぞ。
とりあえずエスパーすると、答えはデータベースかな?
ソートのコード書くとき一般的なのはバブルソートですか?
95 :
デフォルトの名無しさん :2013/06/09(日) 22:50:55.19
>>93 このスレ的にはワークシートにデータ貼り付けてExcelの機能でソートさせるんじゃないの
ソートのコード書く事がすでに一般的ではないと思う
>>92 DBですかDB2とかオラクルとか覚えることを考えただけでも大変ですね(笑)
VBAで粘りますわw
>>97 膨大なのが計算処理等なのかデータなのかにもよるが
Accessでいいんじゃね?
>>99 Accessで扱えるデータ件数はExcelの行数と同じ認識なんだが。
どういう意味でAccessをすすめてるのかな?
もしかしてSQLが使えるから?
103 :
100 :2013/06/10(月) 05:21:03.40
>>101 >>102 プロジェクトでDBのデータをAccess2003にコピーしようとしたら、
フィールドの制限だけじゃなくデータ件数も制限があってコピーできなかった経験がある。
その時いろいろ試してみたらデータ件数、フィールドともにExcelの行数、列数と変わらなかった。
この時の印象はAccessはなんちゃってデータベースなんだなぁと。
最近のバージョンは使ったことないから分からないけど、
>>102 のリンクを見る限り、
データ数の制限は固定じゃなくて、テーブルのサイズで制限してそう。
2003で行数、列数がExcelと変わらないってことは 65536行、256列ってことだよな ありえない、やり方がおかしいかったんだろ
105 :
100 :2013/06/10(月) 07:09:17.93
>>104 元となるデータの内容にもよるだろうし、あくまで実際に起きたことに対する印象。
たまたまテーブルサイズの制限に引っかかったデータ件数ががExcelと同じになっただけかもしれない。
少なくてもAccessのデータ格納件数には固定じゃないにしろ限りがあることは確か。
データ件数が無制限というようになるとSQL Serverとの位置づけがよくわからなくなる。
Accessでデータベースを全てカバーできるならSQL Serverいらなくなるわけだし。
107 :
桃白白 ◆9Jro6YFwm650 :2013/06/10(月) 07:56:30.37
>>93 そうだね。桃白白クラスになるとバブルソートを優雅に実装しちゃうね。
>>105 そりゃまあ、何事にも限度つーもんがあるから、制限はあるだろうけど、Excel と同じなわけない。
あと、Access と SQL-Server は仕組みが全然違うから、仮に機能が全く同じでも SQL-Server の存在意義がなくなったりしない。
データシートのコピペをしようとしたんじゃね 制限あったかどうか知らんが
コードコンプリートにはソートのことは触れてないんだな ソートはどの書籍で学べばいい?
111 :
デフォルトの名無しさん :2013/06/10(月) 11:19:08.25
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 シート上のデータを元にcsvファイルを作りたいんですが 一部で "A","B","C" というようなデータが存在します。 chr(34)とchr(44)を&していけば出来るのですがsplitの逆で 一連の文字列を "(文字列)", で繋ぐような関数や方法って ありませんか? よろしくお願いします。
113 :
111 :2013/06/10(月) 11:54:17.97
補足します。 1行全て固定文字列の部分はそのまま Write #n "A","B","C" で 良いのですがセルを参照した変数を含む行は一旦文字列変数 にセットしてからWriteしようかと考えています。 "A","B","C","(セルA列)","D" strText=chr(34)&"A"&chr(34)&chr(44)・・・ write #n strText この文字列変数に固定文字列をセットする方法でわざわざchr で繋がなくても良い方法があるのではないかと思って探してい ます。よろしくお願いします。
何でそんな事に拘るのかサッパリわからないが それで動くならいいじゃん
115 :
桃白白 ◆9Jro6YFwm650 :2013/06/10(月) 12:09:10.93
>>113 こんなこと書いたら桃白白また怒られるかもしれないけれども、もう怖くて
震えながら返信文章を書いてるけれども、関数作っちゃったら?
strText = CM(DQ("A"), DQ("B"), DQ("C"))
write #n strText
Function DQ(s)
DQ = Chr(34) & s & Chr(34)
End Function
Function CM(ParamArray a())
CM = Join(a, Chr(44))
End Function
116 :
111 :2013/06/10(月) 12:22:13.28
>114 >それで動くならいいじゃん 君とは分かり合えそうに無いな。 知らないなら無理にレスしなくて結構ですよ(^o^; >115 返信ありがとうございます。 つまりSplitの逆は無いって事なんですかね? 配列に入れてゴリゴリ回しておきますわ。
117 :
桃白白 ◆9Jro6YFwm650 :2013/06/10(月) 12:50:32.86
>>116 >つまりSplitの逆は無いって事なんですかね?
せやな。
>>116 > つまりSplitの逆は無いって事なんですかね?
Splitの逆はJoinだけど?
vb系は文字列の連結が遅いので join(array("a","b","c"),"") とやるのが一つの定石。 ただ、実際測るとまちまちだよ
>>111 Chr(34)、Chr(44)をあえて使う理由がよくわからんね。
strText=chr(34)&"A"&chr(34)&chr(44)・・・
って書くより
strText="""A"",""B""," & (セルのデータ) & ・・・
のほうが直感的に分かりやすいんだけどw
更に「"""A"",""B"","」をConstステートメントにすればコードはすっきりすると思う。
>120 趣味の問題じゃね? 俺的には""""のが気持ち悪い。 もし自分で組むならchr(&h22)だけどな。 ASCIIコードを10進で扱うのは気持ち悪い 反論は認めるw
VBA関係無いし
>>121 趣味の問題というより、可読性の問題かな。
見ただけでどういう文字を示すのか分かるのはどっちだ?
chr(&h22)
,
chr()でコード書いたとして書いた当時はどういう文字か分かっているからいいけど、
一週間、一か月たってから見直した時にchr(&h22)を見てすぐ文字が思い出せるとは思えないし。
しかもchr(&h22)なんて書くとASCIIコードの指定間違いだってあるだろうからバグ対策にもなる。
今回たまたまダブルクオーテーションが入っているから「"」→「""」という記述になるだけで
何が書かれているのか、何を書こうとしているのか意図が読み取りやすいと思う。
まあ趣味の問題だろう。 個人的には桃白白方式に一票。
だから区切り文字指定してjoinしろって… join(array( ... ),""",""")
127 :
桃白白 ◆9Jro6YFwm650 :2013/06/10(月) 17:09:49.98
>>125 ____
/ ⌒ ⌒ \
./( ―) ( ●) \
/::⌒(_人_)⌒::::: |
| ー .|
\ /
>>126 元々データが配列に格納されているんだったらJoinでいいと思うけど、
Joinするためだけに配列にデータを格納するのは微妙な気がする。
129 :
111 :2013/06/10(月) 17:18:40.85
何か話が脱線してる・・・私のせい? JOINってのがあるんですね。 検索キーが下手で見つけられませんでした。 うろ覚えでSplitの逆はUnionだと思って調べてました。 Union使えね〜と思って質問させていただきました。 ありがとうございました。
130 :
桃白白 ◆9Jro6YFwm650 :2013/06/10(月) 17:31:15.49
>>128 そんなことないっしょ。データ構造を変換してよしなにやっちゃうんだから
超絶スマートっしょ。これこそVBAの真髄っしょ。
>>130 join(array("a","b","c"),"") ←
>>119 から引用
"""a",""b"",""c"""
うーん。下のほうがシンプルかな。文字数少ないし。
上だとJoinの仕様を知っている必要がある。
"a"、"b"、"c"のデータが可変で配列に格納されてるならまだしも
"a"、"b"、"c"のデータが可変なのか、配列に格納されているのか明確じゃないわけで。
これのためだけにarrayにデータを突っ込む処理を作りたくはないなぁ。
後者だと一行で書けるし、見た目どういうデータを作ろうとしているか理解できるしスマートだと思うけど。
ベタ書きは結構嫌われるけど、こういう場合はありだと思う。
どうでもいいわ。
完全に固定な文字列で配列つくってJoinとか無駄な処理もいいとこ ソースの読みやすさの話は個人の主観が多すぎるので話したい人は別スレ立ててやってくれ
join(sprit())、sprit(join())はよくやる
>>111 の質問が悪かったのか、回答者の知識や読解力が低かったのか、途中の盛り上がりが謎な一日でした。
135 :
桃白白 ◆9Jro6YFwm650 :2013/06/10(月) 19:25:55.71
>>134 その話とは全然関係ないし、Excel VBAとも全然関係ないことなんだけどさー、
桃白白前から気になってることがあるんだけど、聞いていい?聞いちゃだめ?聞いていい?
>>110 アルゴリズム関連の本を漁ればいくらでも。
>>1 に則った質問ならいいんじゃね。
つまりExcel VBAの質問ならば。
139 :
桃白白 ◆9Jro6YFwm650 :2013/06/10(月) 19:46:26.44
>>138 Excel VBAとは全然関係ないの。
>>134 とは関係あるといえば関係あるし
関係ないといえば関係ないの。聞いていい?聞いちゃだめ?聞いていい?
141 :
桃白白 ◆9Jro6YFwm650 :2013/06/10(月) 20:05:19.36
>>141 聞いていい?と聞いてるくせになんなん
お前そろそろNGに入れるぞお前お前お前
143 :
デフォルトの名無しさん :2013/06/10(月) 20:48:43.78
age失礼します。 配列について質問してもいいですか?
145 :
143 :2013/06/10(月) 20:52:20.72
>>144 今来たところで流れ知らないんですが・・・
上の人とは別人ですw
146 :
桃白白 ◆9Jro6YFwm650 :2013/06/10(月) 20:56:05.60
>>145 なんかごめん、桃白白が許可出すようなことじゃないけど質問していいと思うよ。
桃白白にわかることだったら桃白白もお答えしちゃうよ。
147 :
143 :2013/06/10(月) 20:57:05.07
Function test(r As Range) As Integer Dim arr As Variant arr = r.Value test = arr(2, 2) End Function これ動いちゃうんですがまともなコードですか? 一般にRangeをArrayに変換する場合は 要素ごとに多重のfor文まわしてコピーするべきですか?
以下、俺ならば、が前提になります。ご理解ください。
149 :
143 :2013/06/10(月) 21:22:04.02
了解〜
>>147 普通のコード。
て、言うか Range の範囲が大きいときは For で回すのは遅いから、一括代入するのは定石。
152 :
143 :2013/06/10(月) 21:39:46.08
名前はarrって付けましたが、 これ本当に配列になってますか? また、 LBound(arr,1) UBound(arr,2) などがRangeのサイズと一致していることは保証されますか?
>>147 まともなコードとは思えない。
配列の考え方は良いと思うけど、コール元でB2を含まない範囲を指定されるとエラーになる。
ret = test(ThisWorkbook.Worksheets("Sheet1").Range("A1"))
これってtestに1行1列のrangeを渡した時にはエラーになるの?
155 :
143 :2013/06/10(月) 21:48:27.03
>>153 確かにそこは問題だが、本当に聞きたかったのは配列の扱い。
コピーが深いのか浅いのかという点も気になる。
>>152 VarType( ) とか TypeName( ) とかで確認しなよ。
157 :
143 :2013/06/10(月) 21:57:05.01
>>156 なるほど。Variant()型か
・・・とはならない・・・
本当に都合よくサイズ決まってるのか?
ドキュメントにないのなら保証されてないってこった
>>152 何でこういう質問になるのか背景が全く分からん。
>>143 の環境では配列になってないってこと?
引数rに指定するセル範囲のareas(1)が単一セルじゃなくて、複数のセルだったら配列になるんじゃないの。 1個だけだったら配列じゃなくて値返すでしょvalue。
結合セルとか非表示の行列とかあって考えるの面倒だからcellsをforで回しちゃう、遅くても気にしない
ファイルを開いた時にボタンを作る+特定のセルをアクティブにする処理をさせたいのですが、 Private Sub Workbook_Open() Sheet1.OLEObjects.Add(ClassType:="Forms.SpinButton.1", _ Left:=10, Top:=10, Width:=10, Height:=10).Select ☆ Sheet1.Range("A1").Activate ←ここで424エラーが出ます End Sub Sheet1のSelectionChangeでボタンを弄る処理をしているので ☆の時点でボタンを弄ろうとしてエラーになってるのかなと考えたんですが、 ファイルを開いた時だけシート内を弄れる場所ってWorkbook_Openしかない気がするし、何か解決策ないでしょうか
>>163 Sheet1.Activate
Range("A1").Select
じゃないの?(適当
>>163 2007で試したけどエラーになんかならんぞ
エラーになってるのはSelectionChangeの方だな
そっち修正するか、EnableEvents=Falseしてみるとか
>>143 は配列について質問って言ってるけど、それ配列の質問じゃない
Range.Valueが、対象セルが複数の場合に配列で値返す
これの公式なドキュメントないですか
>>143 の聞きたかったのはこういう事だろ
>>133 可読性の問題を趣味の問題と言い切るのはいかがなものかと。
カンマと聞いて「,」より「chr(&h22)」をイメージするのは個人の主観云々というより文字認識がぶっ壊れてるだろw
169 :
桃白白 ◆9Jro6YFwm650 :2013/06/11(火) 09:38:48.07
>>155 Range.Valueで配列の中に配列が入るようなことはないと思うけれども、
仮にあったとしてもディープコピー。
Sub test()
Dim a As Variant
a = Array(Array("A"))
Dim b As Variant
b = a
Debug.Print "a " & VarPtr(a(0)(0))
Debug.Print "b " & VarPtr(b(0)(0))
End Sub
a 276005496
b 276009912
>>167 > Range.Valueが、対象セルが複数の場合に配列で値返す
> これの公式なドキュメントないですか
それはヘルプに載ってるだろ。具体的なフォーマットとか、セル結合の場合どうなるとかは無いにせよ。
マニュアルに書いてあることくらいは読めよってことだな。 Rangeプロパティって何ですか?っていうのと大して変わらないレベルw
ヘルプには書いてないんだよなぁ EXCELのVBA周りのヘルプはあんまり役に立たんわ OFFICE ONLINEもダメ 結局MSDNかよ
俺のヘルプには書いてるよ。 Excel 2000だがw
2013はヘルプがMSDN直行だから問題ない ローカルヘルプ無くなったけど
177 :
176 :2013/06/11(火) 15:28:58.97
あ、書き漏らし Win7でExcel2010です。2003で動かせる内容だと助かります。
>>176 CSVファイルの内容を変更せずに上書き保存した場合は、最終更新日だけ更新されるだけでデータは更新されないけど
こういうパターンでも更新するってことなのかな?
個人的にはCSVを取得してセルの内容を更新するのができているのなら、
CSVを取得した値とセルの内容の値を比較して異なっていたらセルの内容を更新すれば確実だと思うけど。
>>177 >>1 ★5を読んだ上での質問ということかな?
「2003で動かせる内容だと助かります。」ってあるのはコードを書けってこと?
181 :
176 :2013/06/11(火) 16:11:28.94
>>178 ,180
ありがとうございます。内容的にはCSV内の変更が反映されればいいので
ハッシュを保存というのは良さそうです
>>179 すいません、VBA超初心者なもので検索するにもワード自体が分からず
○○をやれと言われた時それが2007以降でしか動かないかが判断できないので
そのための注釈でした。キーワードさえ分かればググるなりしようと思ってます
182 :
桃白白 ◆9Jro6YFwm650 :2013/06/11(火) 16:53:34.52
183 :
176 :2013/06/11(火) 17:44:06.71
MD5クラスモジュールを追加してMD5を取得、「PreMD5」と名づけたセルに保存する所までは出来ましたが ファイル内容を変更しMD5が変わってもElse以下の部分を実行していないようです。 どの辺が良くないのかご教示いただけないでしょうか… Private Sub Workbook_Open() Dim MD5 As New MD5 〜(中略)〜 Set ws = Worksheets("WSWS") ws.Activate Range("B1").Select ChDir ThisWorkbook.Path MD5.FilePath = "aaaa.csv" Debug.Print MD5.MDFile If Range("PreMD5") = MD5.MDFile Then Range("PreMD5") = MD5.MDFile Else 〜(実行内容)〜 Range("PreMD5") = MD5.MDFile End If End Sub
>>183 > Debug.Print MD5.MDFile
の下に
Debug.Print Range("PreMD5").Value
を入れて、同じか違うか再度確認。
同じ場合は、MD5算出ロジックがおかしい可能性あり。
違う場合は、ブレークポイントを設定してステップ実行し、本当に意図しない動きをしているか確認。
>>183 Dim MD5 As New MD5
じゃなくて
Dim hoge As MD5
Set hoge = New MD5
じゃね?
更にいうと型と同じ変数名は、混乱するから別名にしたほうがいいかと。
>>183 md5クラスのソース見せてみ
間違ってるかもしれんで
>>185 > Dim MD5 As New MD5
これは問題ない。
インスタンス化はこの行で行われるのではなく、初めて使用した箇所まで遅延する。
> 更にいうと型と同じ変数名は、混乱するから別名にしたほうがいいかと。
それには同意する。
188 :
185 :2013/06/11(火) 18:13:23.29
>>187 指摘どもです。
手元の環境で
Dim MD5 As New MD5
が問題ないことを確認できました。
>>183 混乱させるようなレスしてごめんなさい。
189 :
176 :2013/06/11(火) 18:38:54.71
>>184 テストの結果、MD5算出は正常に行われているようです。
ファイル内容を変更するたびきちんと変化します。
さらにブレークポイントで止めても、変更した時はElse以下、していない時はIfの内容が実行されています
ということは比較、もしくは実行内容以下のソースがおかしいということになるでしょうか
実行内容自体はテストして問題がなかったものですが
>>185 いえいえ、変数や定義の意味が分かるのでとても勉強になります。
とりあえずfMD5という名前に直しておきました。
190 :
176 :2013/06/11(火) 18:43:41.85
>>182 ありがとうございます。まさにピッタリの内容なんですが
上のものを安易な考えで最終更新日時に置き換えてみたところ
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.GetFile("aaaa.csv").DateLastModified ←
で実行時エラー438(オブジェクトはこのメソッドまたはプロパティを〜)が出ます。
このやり方も気になるので調べてみたいと思います
192 :
176 :2013/06/11(火) 19:31:21.58
原因が判明しました。MD5の変更のためにCSVをExcelで編集した結果
改行コードが変わったため実行内容が動作していなかっただけでした…
本番環境で実行した結果意図した通りの挙動になりました
>>191 FSOも動作するようになりました!
皆さんありがとうございました
193 :
163 :2013/06/11(火) 19:44:08.98
>>166 そうか、一時的にイベント切ればいいだけだったんだ…
ありがとうございます
A列にある150行程度のセル内の文字を基にテキストボックスを作る。これを利用してマインドマップとして使いたい。 そんなサンプルコードがある場所を教えてください!
>>195 Excel VBA 文字 テキストボックス 作成
でググった結果のTOPのやつじゃん
ggrksとはこの事か
はい
TeXコードをExcel方眼紙にコンパイルするライブラリやツールは存在しますか? 有料のでも良いのでもしありましたら教えて頂けると助かります
>>198 > TeXコードをExcel方眼紙にコンパイル
意味不明、スルー推奨。
わからないならレスしなくて結構です
放置決定w
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Application.OnTime Now(), "Hoge" End Sub ブックを保存して終了する時に↑が実行されるとHogeの前にWorkbookのDeactivateイベントが発生してしまいます Deactivateの前にHogeを実行するか、Deactivate内でHogeを発生させない処理をさせることはできないでしょうか? Excel2000です
>>202 保存用のマクロ組めばいいんじゃね?
Sub ブック保存()
Application.OnTime Now(), "Hoge"
'ブック保存の処理を追加
End Sub
なんでOnTime Runじゃダメなのか?
205 :
202 :2013/06/12(水) 19:39:23.46
>>203 hogeは保存後に編集を継続する時用の処理が書いてあります
なのでhogeは保存後に実行したいのです
しかし保存自体をExcelに任せず自分で作るとなると、挙動のパターンが多くて俺にはちょっと手に負えないので…
>>204 Runは別のブックしか呼び出せないと思ってたのですが違いましたっけ?
206 :
203 :2013/06/12(水) 20:25:05.91
>>205 何かよくわからなくなってきた。
保存後にHogeを実行したいがために、 Workbook_BeforeSaveのところで
Application.OnTimeを使っているということ?
>>202 の質問の内容とかコードを見る限り保存前にHogeを実行したいものと思ってた。
ちょこっと動作確認してみた程度けど、単純な保存じゃないよね?
普通の上書き保存だとDeactivateイベント発生しなかった。
1.マクロが格納されているファイルを編集
2.編集後、即ブックを閉じる操作を実行。
3.上書き保存しますか?というメッセージ出力。
4.「はい」を選択するとDeactivateイベント発生。
5.Hogeの実行。
これだとすると
Sub 作業終了処理()
'ブック上書き保存
'Hogeの実行
'ブックを閉じる
End Sub
でできるような気がするけどどうでしょう?
Deactivateイベント内でHoge実行しないでねフラグ立てれば? 同様にActivateも必要かもだけど
なんで直接呼ばないでOnTimeとかRunとかなの?
>>206 OnTimeを使ってる理由はその通りです
説明を端折ってしまいましたがOnTimeの前に保存直前の処理があります
教えてもらった方法では「名前を付けて保存」を選択された場合にフォローできなくなってしまうのです
弄ってて気付いたんですが、ブックだけ閉じるとDeactive→hogeの順なのにExcelを閉じるとhoge→Deactiveになるんですね
とりあえず
>>207 でもう一度考えてみます
OnTimeで保存後に実行されるとか、保障されない微妙なタイミングの動作だな 保存してそのあと処理したいなら、自分で保存処理書いて(イベントはキャンセルして) そのあと自分でやりたい処理呼べば良いだけだと思うが
保存自体を自分で作ると手に負えないって言ってるけど そうしてない今でも全然手に追えてないよね 別の方法を考えたほうがいいんじゃない
保存処理なんて 上書きならSaveメソッド呼ぶだけ 新規でもファイル名決めてSaveAsメソッド呼ぶだけだろ
ieのオブジェクト使ったマクロ、実行するパソコンによって動くのと途中でエラー出るのとあるけど、なんだろう。
>>202 Deactiveにこだわる理由がわからん。
終了処理とからめたいのならBeforeCloseを使うのが本筋と思うが?
ExcelまたはBookを終了したときの動作仕様があいまいなのも良くない。
必ず保存させたいのなら「未保存ならBeforeCloseでCancel」という手もある。
217 :
202 :2013/06/12(水) 23:10:42.29
>>216 保存させたいわけではなく、保存して終了する時と保存するだけの時の処理を分けようとしてこうなりました
BeforeCloseはブックを閉じようとした時に出る「保存しますか?」の直前に呼ばれるので、そこでキャンセルされた場合、BeforeCloseの終了処理が無駄になります
Deactivateなら実際にブックが消える時に呼ばれるので都合がいいと思いましたがそうでもなかった
保存するときの処理を保存がキャンセルされても実行したいの? それおかしくね?
>>217 ユーザーフォームを使って選択させたり、ボタンで処理を分けたりするほうが無難な気がする。
閉じるときならbeforeclose使えば済む話とは違うのそれ deactiveならブック切り替えただけでも走るし
保存が手に負えないのは標準の保存処理を真似ようとしてるのでは? それやると結構で保存ボタンを別に置くのが無難だと思うよ
>>220 多分こうかと
保存後にしたい処理がある
だがクローズ時の保存は対象外としたい
標準のライブラリと同じ動作を一から作るのは本当に大変 .Netがインスコできない環境のためMFCで.Netの動作を再現しようとして血反吐を吐いた覚えがある 結局はフラグを山のように用意して条件分岐しまくりになった
224 :
202 :2013/06/12(水) 23:59:25.04
>>218 Private Sub Workbook_BeforeSave
保存前に必要な処理
Ontime 保存後の処理
End Sub
Private Sub 保存後の処理
ただの保存や、閉じようとしてキャンセルした場合等、続けて編集する場合に備えた処理
End Sub
閉じる時の保存確認で「いいえ」だった場合はBeforeSave通らないし何もする必要がないので問題なし
「キャンセル」だった場合も上の処理で問題なかった
「はい」だった場合、本来「保存後の処理」は不要ですが、あとは閉じるだけだし保存にも編集にも影響しないので放置することにしました
しかし「保存後の処理」の前にDeactivateが発生してしまい…
やっぱり上で言われてる通りOntime使ってるのが間違いな気がします
>>221 使う人に独自の操作をさせたくなかったので…
>>222 そんな感じです
長くなってすいません
>>224 まずDeactivateを勘違いしてると思われ
保存後の処理とやらが、ほんとに保存後にやる必要があるのかどうかも疑問は残るが
どっちにしても
>>212 で解決する気がするが
終了時の(新規)保存で処理したくないならBeforeCloseでフラグ立てときゃ良い話
いまいちわからんけどこういうこと?deactivate使わんで閉じようとしたときになんか変更あれば自分で聞く感じ。 Private Sub Workbook_BeforeClose(Cancel As Boolean) If Me.Saved = False Then If MsgBox("保存後の処理ってのやる?", vbYesNo) = vbYes Then Me.Save '上書き保存してbeforesave走る Else Me.Saved = True '変更なかったことにして続行。早い話が閉じる End If End If End Sub
>>226 それだとどっちにしても閉じてるけど、
>>224 によれば
閉じようとして、セーブするか聞かれてキャンセルしたら
実際はセーブされていないが、保存後の処理とやらは実行するらしい
それ保存後の処理じゃないじゃん。意味わからん。 yesnocancelで聞いてvbcancelの時にそれ呼ぶ感じなのかね。 もう寝る。
229 :
202 :2013/06/13(木) 00:59:31.94
>>227 すいません、間違ってますねこの説明
>>224 いいえもキャンセルもbeforesaveは通らないですね
「保存後の処理」は、保存だけして編集を続行する時のための処理です
一度設計を見直す必要がある気がするなぁ。 保存後に処理を実行するって、保存後にワークシートを操作する処理を実装しているのなら 結局もう一度ブックを保存する必要あるし。 今のままだとブック保存→マクロ実行→ブック保存・・・の永久ループになりそうな気がする。 本当にブック保存時にマクロを実行しなければいけないのか、 ブック保存時じゃなくて単にマクロを実行するだけじゃだめなのか。 作業者に対する配慮ももちろん必要だけど、配慮しすぎて作りが非常に難しくなったら それこそ本末転倒かと。
>>230 保存イベントの自作は避けたかったのです
>>231 保存後の処理は引き続き編集する時だけ必要なもので、終了する時は不要です
終了するだけだから放置しても問題なかろうと思ってそのままにしてました
しかし俺も結局
>>231 さんの言うところに落ち着きました
OnTime使うのは危うい
融通効かそうとして無理してた感じなので、周りがAfterSaveを使える環境になるまでここら辺の処理は保留することにします
色々ありがとうございました
>>232 それがいい
あんまガチガチの入力フォーム使わされるとストレスたまる
>>217 「保存した後の処理」とやらを説明した方が最適解にたどり着く可能性があったりするかもしれない。
>>233 ガチガチの入力フォームってどんなもの?w
マクロなんだからガチガチしなくていいと思うけど。
どや?カッチカチやろ?
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) End Sub ここのTargetが複数だった場合、行をひとつひとつ見ていくにはどうすればいいのでしょうか? Range.Rowだと一番上のしか見れないみたいです
238 :
桃白白 ◆9Jro6YFwm650 :2013/06/14(金) 20:17:49.06
お前ら出番です。
240 :
桃白白 ◆9Jro6YFwm650 :2013/06/14(金) 20:26:00.06
>>238 - 240
For Each使ってひとつずつ処理していきました
ありがとうございました。
変数xがあって、A行のx列目を指定したい時 Range("A の次はどのように記述すれば良いのでしょうか。
243 :
桃白白 ◆9Jro6YFwm650 :2013/06/14(金) 23:47:50.70
>>234 ファイルを開いたときに編集に必要なボタンを作成
保存するときにボタンを削除
保存後、編集を継続する場合は削除したボタンを再度作成
最初からシート上にボタンを用意しておいた場合、マクロ無効でファイルを開くとそのボタンが見えてしまうのが嫌でこういう仕様にしようとしました
メインの処理と関係ない部分なので、これだけの為に保存用フォームを作ったりするのはちょっとどうかと思ったのでそれは避けたかった次第
>>244 ん?保存用フォーム作ると思ってた?
確かにそれはやりたくないわw
>>244 保存用フォーム作れなんて誰か言ってたか?
>>242 >>243 でも出来なくはないが、Cells(x, 1)と書く方が一般的
必要ない文字列連結はしない方が良いし、マクロでセル位置してするときにA1形式はあんまり使わない
>>242 > A行のx列目を指定したい時
A行?
253 :
桃白白 ◆9Jro6YFwm650 :2013/06/15(土) 09:37:47.11
>>250 いや普通にRangeも使うだろ
この状況でどうしてもCellsにこだわるなら、せめてCells(x, "A")と書く
その方が可読性が高い
俺は基本に忠実なcellsを使う桃白白が好きだよ
cells(x, "A")とか書く奴見たら、殺したくなるな
Cells(x, "A")て。
やってみると案外便利だったとは言えない流れ
>>254 ほぅ、糞コード書くヤツが考えそうなアホなネタだなw
260 :
桃白白 ◆9Jro6YFwm650 :2013/06/15(土) 15:11:43.73
1行目に列名がズラーっと並んでるデータ形式だと、 Dictionaryオブジェクトとか色々使って更に可読性を上げたくなる。 (Cells(x, "伝票番号")、みたいな)
enumさんのお世話になる
>>261 すまん、何が言いたいのか全く分からんw
264 :
桃白白 ◆9Jro6YFwm650 :2013/06/15(土) 17:12:02.93
>>264 糞コードを書くヤツ同士波長が合うわけかw
266 :
桃白白 ◆9Jro6YFwm650 :2013/06/15(土) 17:37:59.24
>>265 自分がわからないのは、回りが全部糞だからだ、みたいなね。
列名のアルファベットをいちいち暗算で数字に変換するのってバグの元じゃん デバッグもやりにくいし さすがに最初の方なら暗記してても、2文字とか3文字の時はどうすんの 結局はRange("ABC" & x)とかCells(x, "ABC")って書くしかないだろ
いつまでもA列があると思うなよ
>>267 メニュー「ツール」→「オプション」→全般タブの設定の「R1C1 参照形式を使用する」を有効にすれば
数字のままで充分対応できるんだが何か?
> 結局はRange("ABC" & x)とかCells(x, "ABC")って書くしかないだろ
痛すぎて笑えないレベルってか釣りか?
ちょっとしたマクロ書く為にわざわざR1C1に設定するくらいなら"ABC"でいいや
今年の頭ぐらいにVBAを初めて最初の頃は次から次へとVBA特有の変なErrorが発生し 何度も痛い目に合わされたが、 すっかり飼い慣らしてしまえば何千行のコードを書こうがこっちのもんだね。うひっひっひ!
。゜( ゜^∀^゜)゜。アーッハハ八八ノヽノヽノヽノ \ / \
\(^○^)/ワーハッハッ/ \/ \♪
列位置に対して演算する必要が全くないなら"A"でも良いよ その方が可読性が高いのには同意する
列に一切動きのないマクロなら確かにAだのBだのでいいと思う。 列に対して削除・挿入・移動かけるような奴だと、 後でコード見ることになる人のことを考えて、 列ラベルから列番号を取得できるような仕組みを入れる。
質問スレで持論を語るアフォばっかりw よそでやれ
cells()って文字も扱えるのか。知らなかったにょーん
Excelは日本のIT業界全体の生産性を著しく低下させている
280 :
桃白白 ◆9Jro6YFwm650 :2013/06/16(日) 10:07:50.00
ソートとかフィルタをちょっとかけるぐらいなら これ以上に無いぐらい便利だけど
そんなんでいいならシェルコマンドで一瞬やん
範囲指定と結果の確認を直感的にできる 手段と目的を混同しない
WindowsならExcelの方が一瞬やろ 可能か不可能かの話してるわけでもないし
ExcelだとテキストをCSVにしてExcelに読み込ませて何度もクリックしてようやくソートされる コマンドならささっとキーボードをコンマ数秒触るだけでできるやん
どうしても反論したいだけなのね
そりゃ事実だからね 間違いがあるなら指摘しなきゃ
だってCSVソートするだけじゃ仕事にならないんだもん
ならなおさらExcelは使っちゃダメだろ 大量のデータを複雑な分析にかけるのにExcel使うんか?
お好きな方法で解析すればよろしいやん
Excel VBA質問スレでExcelをdisって何したいのか分からんな。 こういうやつがコード書くと最初の目的とはかけ離れた糞コード書いて自己満足に浸ってるんだろw
仕事で使われたら迷惑だし 撲滅したいんだよ いわば敵情視察ってやつさ
御愁傷様
あんたが管理職や経営者に向いてないことはわかった 一生安月給で社畜やってろ 反論で「年週××万ですが」「起業してますが」とか嘘つくの禁止な
ソートするのにExcel使われたら迷惑って、何か心に病を抱えてませんか?
>>296 逆に今のExcel大好きなオジサンたちが優秀に見えるか?
数年かけて会社の業務の7割をVBA&VBで自動化して今では仕事やってるふりして遊んでいますが何か問題でも?
パソコンなんて道具なんだから好きに使えばいいじゃない 過程より結果だよ 極めて効率悪い方法で残業しながらでも結果を出した人が評価されるんだから そりゃ同じ事を素早くやればもっと評価されるだろうけど、 ここでExcelの使い方に文句言ってるやつらは間違いなく途中経過にこだわりすぎて結果を出せてない
途中経過にこだわらなきゃ結果は出ない Excel設計書という悪しき文化が日本のIT業界を衰退させてるんだ
IT業界w
なんかおかしいか?
。゜( ゜^∀^゜)゜。アーッハハ八八ノヽノヽノヽノ \ / \
なんだキチガイか Excelでお遊びすると脳がやられるんだな
VBAにフリーなC言語パーサってある?
VBAで10万行ぐらいあるコードを毎秒実行し続け素晴らしい生産性を得ていますが Microsoftからおまえ使いすぎだろって!警告が来たりしないのでしょうか?
そういえば糞コードしか書けない奴で3000件を超えるようなデータはaccsess使うべきって奴いたな ようするにexcelが使いこなせないだけなんだが
タオパイパイ助けれ。 とあるブックにシートが2枚あって、 そのブックのショートカットがパスAとパスBにそれぞれ有った場合、 パスAから開かれた場合は、起動時にシートAを、 Bの場合はシートBを。 見たいな子としたいんだけど。 引数付けてショートカット軌道した場合、エクセルどうやって受けとんだ? VBSなら簡単なのにな。
311 :
桃白白 ◆9Jro6YFwm650 :2013/06/16(日) 22:55:14.23
>>310 桃白白それわかんないから、桃白白にはふらないで(しのび声)
>>311 人間考える事を止めると終わりだぞ。考えれ。
俺も考える。
お前も考えれ。
↓
コマンドライン引数はGetCommandLine APIで確認できます
ちょっと遠回り感否めないが、直に引数は渡せない。 VBS経由で引数的な状態で渡す事ができる。 という事やな。 よっしゃやってみるわ。
どの方法もなんだかめんどくさそうだな 俺ならバッチファイルでやるわ echo "引数" > param.txt start hoge.xls
>>317 バッチファイルの書き換え或いは複数のバッチファイルを残す必要ありそうだし、これもなんか面倒。
何もしない対応が一番楽な気がする。
シートの数が多いブックで起動時に毎回スクロールするのが面倒というのなら
左下のシートスクロール用のスクロールバーで右クリックすればシートのリストが表示されて選択できる。
引数でシートを指定するとしてもシートの数が多かったら覚えきれないだろうし。
仮にシート数が少ないのならそれこそシートのタブ?で選択すればいいわけで。
俺ならシートAとシートBを別ブックにするがな
VBSでExcelもExcel VBAも全部操作してしまえばいい
Private Sub Workbook_Open() Dim buf As String Dim tmp As Variant, tmp2 As Variant Dim i As Long Dim fMD5 As New MD5 Set csvws = Worksheets("抽出") csvws.Activate Range("A1").Select ChDir ThisWorkbook.Path fMD5.FilePath = "cashbook.csv" 'Debug.Print fMD5.MDFile If Range("PreMD5") = fMD5.MDFile Then 'PreMD5・NowMD5=セルの範囲(名前) Range("PreMD5") = fMD5.MDFile Else Open "cashbook.csv" For Input As #1 Line Input #1, buf Close #1 tmp = Replace(buf, """", "") tmp = Split(tmp, vbLf) For i = 0 To UBound(tmp) - 1 '---(1) tmp2 = Split(tmp(i), ",") Cells(i + 1, 1).Resize(1, UBound(tmp2) + 1).value = tmp2 Next i Range("PreMD5") = fMD5.MDFile '取得したファイルハッシュを記述 Cells.Select Cells.EntireColumn.AutoFit End If End Sub
>>321 「インデックスが有効範囲にありません」というエラーが発生したときに
コードのどこで止まってるのかな?
まずはそこから判断していかないことには何とも言えない。
324 :
323 :2013/06/17(月) 17:21:52.39
>>321 因みにRange("PreMD5")ってあるけど、Excel2010のブックのセルの範囲に"PreMD5"の名称は定義されてるのかな?
>>323 失礼しました。
Range("PreMD5") = fMD5.MDFile
のあたりで止まります。名前は「抽出」ワークシート内の1セルに定義してあります。
>>325 シートの指定を省略してるから別のシートのセルを参照している可能性があると思う。
試しに下記のコードでエラーが出なければRangeのシートの指定をする必要がある。
ThisWorkbook.Sheets("抽出").Range("PreMD5") = fMD5.MDFile
>>244 ファイルを開いたときに必要なボタンを作成
ファイルを閉じたときに上記ボタンを削除
じゃだめなの?
328 :
桃白白 ◆9Jro6YFwm650 :2013/06/18(火) 02:25:28.16
>>325 ReDimでマイナス値を指定したときも
「インデックスが有効範囲にありません。」というエラーが発生するの。
MD5.MDFileを呼ぶとfncSpritFileが呼ばれる。
fncSpritFileに次の記述がある。
Open Me.FilePath For Binary As #inputFn
ReDim valArray(LOF(inputFn))
Get #inputFn, , valArray
Close #inputFn
ReDim Preserve valArray(UBound(valArray) - 1)
LOFはファイルの長さを取得する関数。
ファイルの長さが0のときはこうなる。
Open Me.FilePath For Binary As #inputFn
ReDim valArray(0)
Get #inputFn, , valArray
Close #inputFn
ReDim Preserve valArray(-1)
なので、cashbook.csvが無効なパスであるか、
またはcashbook.csvのサイズが0なんじゃなあい?
>>326 ありがとうございます。それだと「アプリケーション定義またはオブジェクト定義のエラーです」
となります。
>>328 一応パスは通っていると思いますし、サイズもきちんとデータが入っており2003では普通に動きます。
Ifを外した際には想定通りデータの読み込みまで行きます。が、その後Line Input #1, buf
で「データがこれ以上ありません」というエラーが発生します。
バージョンが違うだけでこれだけ挙動って変わるんですね…
>>329 ごめんなさい。
こっちでもダメかな?
csvws.Range("PreMD5") = fMD5.MDFile
怪しいところはRange("PreMD5")、fMD5あたりだから問題の個所を切り分けしたいところ。
少なくとも2007まではVBAの互換性は極めて高い。2010になって極端に互換性が下がるとは考えにくい もともと問題のあるコード書いてたんだろ まずエラーの出てる行を特定しろよ。xxあたりとか話にならん Range("PreMD5") = fMD5.MDFile の行は二つあるがどっちでエラーなんだ? その前のIfではエラーにならんのか?だったらその行を Range("PreMD5").Value = "test" MsgBox VarType(fMD5.MDFile) MsgBox fMD5.MDFile に変えたらどうなる? どうでもいいけど、Range("PreMD5")って何回か出てくるが、どれかはNowMD5の間違いじゃないのか? あとオープンのファイル番号は決め打ちするなとかデフォルトプロパティは省略するなとか
>>331 何をそんなに焦ってるんだ?w
質問者が焦ってるならともかく、お前が焦る必要なんてこれっぽっちもないわけだが。
質問者だってこれにつきっきりっていう暇人でもないんでしょ。
質問者のレスがくるまでゆっくりしようや。
334 :
桃白白 ◆9Jro6YFwm650 :2013/06/18(火) 18:47:49.66
で、みんなほんとのところはどう思ってる?
桃白白はこれが怪しいとにらんでるの。桃白白の涼しげな目線の先には
これがあるの。
ChDir ThisWorkbook.Path
・ファイルのサイズが0なら、
>>323 のエラーや
>>329 のエラーが発生する。
・ファイルが存在しなければサイズが0のファイルが作られる。
・ファイルパスが違っていればファイルが存在しない。
・ThisWorkbook.PathがExcel2003とExcel2010とで違う値を返すならファイルパスが違う。
っていうふうに理屈付けができるのよね。
___
/::::::::::::::::\
/:::::─三三─\ 桃白白を信じるのです……。
/:::::::::<○>三<○>.\
/⌒)⌒)⌒.:::::::::: (__人__) :::::: \ /⌒)⌒)⌒)
| / / /.. ` ⌒´ | (⌒)/ / / /,,
| :::::::::::(⌒) / ゝ ::::::. .........._
| ノ \ /_ /´ ヽ
ヽ / ヽ / /0 .',
| | {o ::}
': /
ヽ、___,.,/
そんなとこの仕様変えられたら大変だから、そこの仕様そのものは変更ないと思う ただし、UACの影響受けたりはするだろうけど もしファイルパス回りなら、アクセス権かUNCパスかUACの影響だと思うが あとはカレントディレクトリとカレントドライブが理解できてないか
Activate, Select使う族はまだ生き残っていたのだなあ
生き残っていたというより、新しく生まれ続けてるんだろ
VBAやり始めのころはマクロの記録が頼りだからActivate, Selectは意味も分からず使ってたなぁ。 ブック.シート.セルでセルの指定ができることが分かってActivateやSelectは必要ないって理解したよ。
Selectが不要とわかった頃はいちいち消して見た目スッキリにこだわってたけど 今はもう記録したまんま 動けばいい
VBAのライブラリって貧弱ですね
341 :
桃白白 ◆9Jro6YFwm650 :2013/06/19(水) 10:26:34.14
>>340 あるところにトムさんという人がいました。
トムさんはある日モデルルームに見学に行きました。
モデルルームには必要最小限の物しか置いてありませんでした。
実際生活するには不便だろうと思いました。しかし、いつのまにかモデルルームに見とれていました。
物が少ないからこそ美しさと気品が際立つことに気づきました。
そのことを後世に語り継ぎたいと考えました。これが、足るを知る者はとむということわざの由来です。
桃白白は日本古来に生存していたであろうトムさんに思いを馳せ、VBAを使うの。
タオパイはVBAなんかやってないで お笑い番組の放送作家を目指した方が才能を生かせると思う。 とりあえずケータイ大喜利あたりに投稿したらどうだろ
クイックソートとバブルソートどっちがいいですか? コード書くのはバブルソートの方がわかりやすいんですが、 スピードが全然違うんで悩んでます
>>343 Excelのソート機能をVBAで使えばいいのに何で面倒な方を採用したいのかよくわからん。
>>343 いいって何?
君の質問は質問になっていないよ
うん。わかりやすい、スピードが速い、どっちもいいプログラムだね 何を悩んでいるのかな?どっちが「いい」のか、アンケート?
347 :
桃白白 ◆9Jro6YFwm650 :2013/06/20(木) 13:39:32.03
>>343 桃白白はバブルソートがいいと思う。クイックソートは安定ソートじゃないし、
実装が難しいし、甘えだと思う。それを補って余りあるほどに処理速度が大事なんですって
ときじゃないかぎり使うべきじゃない。使わないべき。バブルソートを使うほうがいい。
バブルソートで実装して処理速度が問題になってからそこではじめてクイックソートを検討するべき。
とりあえず関数わけとけば問題ない。
Sub Bubble(a, l, u)
……
End Sub
Sub Sort(a, l, u)
Bubble a, l, u
End Sub
答えが割れる質問はアンケートと言って、質問スレでなく雑談スレでやるのが普通
問題個所が分かってて、しかも対策方法分かってるのに問題あるほうを残すってのは意味が分からん。 コード云々以前の話だな。
突然何の話だ?
バブルソートにしろ
>>343 Excel VBA質問スレなのにExcelのソート機能を使わないのはこのスレの住民に喧嘩売ってるの?w
>>354 >>1 但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。
わざわざVBAでソート書く理由はわからんが
>>355 > わざわざVBAでソート書く理由はわからんが
・シートに一旦値を設定する時間が大きい場合
・データ→シート→ソート→データというコードを書きたくない場合(めんどくさい)
・単純な数値や文字列ではないものをソートするとき
などなど。
・己の美学(キリッ
>>355 VBA有り(今回はソート機能)でも出来ることだが、あえてVBAでやりたいってことでしょ。
全然意味合いが違う。
Excel VBAにソート機能が無いということなら
>>1 に当てはまると思うけど。
>>343 が何であえてソートを書かなければいけないのか理由を明確にする必要はあると思う。
というかVBAにソートが無いことに驚きと失望を覚えた ひょっとしてVBAは日本の生産力を下げるためにMicrosoftが投入した情報兵器なのではないか
>>356 >・シートに一旦値を設定する時間が大きい場合
→今どきのPCでそんなに時間がかかるのか?
画面更新を停止させるだけでも充分対策になると思う。
>・データ→シート→ソート→データというコードを書きたくない場合(めんどくさい)
→データの格納は変数にしてもセルにしてもやることは大差ない。
単純に変数をセルに置き換えればいいだけだし。
ソート処理は一行で書けるわけで、こっちの処理のほうが楽。
どこがめんどくさいのかよくわからん。
>・単純な数値や文字列ではないものをソートするとき
→数値や文字列じゃないもののソートって例えばどんなものがある?
普通は数値、文字列、日付程度だと思うけど。
結論 他のスクリプトを使い快適なプログラミングライフを過ごしましょう
そういや、数字の羅列だけで構成されているシートをソートするのにバブルソート使ったことあったっけな。
×数字の羅列だけで構成されているシート ○数字の羅列だけでシート名が構成されているシート
>>360 >
>>356 > >・単純な数値や文字列ではないものをソートするとき
> →数値や文字列じゃないもののソートって例えばどんなものがある?
> 普通は数値、文字列、日付程度だと思うけど。
プログラム内でソートするときは、key-valueペアをkeyでソートとか、ユーザ定義体をとか
オブジェクトをとか。
ソートを実装する必要性を問いかけた結果、トイプログラマであることがばれました
>>360 > >・シートに一旦値を設定する時間が大きい場合
> →今どきのPCでそんなに時間がかかるのか?
> 画面更新を停止させるだけでも充分対策になると思う。
元データの構造にも寄るが、セル一つ一つに値をコピーせざるを得ない場合、10要素を持つ一万個の
データをコピーするのに必要な時間を計ってみる。
さて、何秒かかった?
この処理時間を無視できるほど巨大な計算量なロジックの一部なら、別にこれでもいいが。
Sub foo()
Dim i As Long
Dim j As Long
Application.ScreenUpdating = False
For i = 1 To 10000
For j = 1 To 10
Cells(i, j).Value = rnd()
Next
Next
Application.ScreenUpdating = True
End Sub
>>367 >>366 は、元データが10個の要素を持つユーザ定義体/インスタンスの場合を想定した処理。
10個の配列を用意して、そこにデータを入れてからシートに貼り付けてもいいが、めんどくさいでしょ。
さらに、ソート後、元データの構造に詰め替える処理もいる。
だったら、直接ソートしたのがシンプルだし速い。
直接ソートする場合は、元データがどんな物であれ、基本的には比較関数を変えるだけで良い。 (ユーザ定義体/インスタンスのswapのコードも必要な場合もあるが) Public Function fooCompare(obj1, obj2) As Boolean fooCompare = (obj1.key > obj2.key) End Function 的な。
370 :
桃白白 ◆9Jro6YFwm650 :2013/06/21(金) 13:11:17.57
>>369 1まんこのデータとなるとヴァブルソートじゃ厳しいかもしれんね。
贅沢して作業用シート作って画面更新も計算停止もしないで別関数コールしても1秒かからんかったよ。
それ時間かかってる場所ソートと関係ないからなんかズレてんじゃ?
>>367 の配列使おうってこういう事でしょ普通に。
Sub test()
Dim arr As Variant, row As Long, col As Long
arr = Range("A1:J10000").Value '←普通にセルの値を配列に入れて変更してから戻せばいい
'ReDim arr(1 To 10000, 1 To 10) 'セル経由しないなら自分で作ればいい
For row = 1 To 10000
For col = 1 To 10
arr(row, col) = arr(row, col) + Rnd() '個々の値になんかしたいらしい
Next
Next
Range("A1:J10000").Value = arraySort(arr, 1, xlAscending) ’かくにん
End Sub
'ソート結果を返す関数。中身はシートに転記してソート
Function arraySort(arr As Variant, fieldIndex As Long, order As XlSortOrder)
Dim sht As Worksheet, rng As Range, fieldCount As Long, recordCount As Long
fieldCount = UBound(arr, 2)
recordCount = UBound(arr, 1)
Application.DisplayAlerts = False
With Worksheets.Add()
Set rng = .Range(.Cells(1, 1), .Cells(recordCount, fieldCount))
rng.Value = arr
rng.Sort .Cells(1, fieldIndex), order, Header:=xlNo
arr = rng.Value '詰め替えとかしないで贅沢に入れ替える
.Delete
End With
Application.DisplayAlerts = True
'byRefだけど一応戻り値としてもいけるようにしとく。関数だしね。新しい配列作って詰めてもいいね
arraySort = arr
End Function
>>370 今のパソコンなら100マンコでも大丈夫
スペックが上がりすぎて初心者には違いがわかりにくくなった
マイコン時代はアルゴリズムが悪いと何時間とか何日って単位で遅くなったかんな
あとvbaのrangeから取ったり貼ったりする「配列」って、最近の言語みたいに配列の配列じゃなくて、 普通の2次元配列だから、いわゆるレコードやフィールドを並べ替えるみたいなのは自作めんどいよ。 1次元配列だったらよそのひっぱってくればいいけど。
>>375 > ここでクイックソートとバブルソートの比較やるとぜんぜん違うんだが
誰か違いが無いなんて言ってるか?
377 :
360 :2013/06/21(金) 17:50:43.29
>>366 >元データの構造にも寄るが、セル一つ一つに値をコピーせざるを得ない場合、10要素を持つ一万個の
>データをコピーするのに必要な時間を計ってみる。
この条件、現実的じゃないと思う。
データをコピーと言っているけどその元データはどこに格納されてる?
それとソートした結果は最終的にどこに出力される?
元データが格納されると推定される場所
・DB
データ取得時にSQLでソートできる。
→Excel VBAでのソートの処理必要なし。
Excelにデータを反映する処理は必要だけど、サンプルコードだとほんの数秒。
・テキストファイル
カンマ区切りであれ、タブ区切りであれExcelで直接読み込める。
→ファイルオープン処理のみで済む。
ソートはExcelのソート機能をVBAで実装。
・Excelのシート
既にデータ格納済みなのでデータの読み込み不要。
更にいうと
378 :
桃白白 ◆9Jro6YFwm650 :2013/06/21(金) 18:12:58.32
>>375 要素数が100万個だとそれをバブルソートするのに必要な時間は22秒の1万倍で
足かけ3日っすね。いまでもまだ厳しいな。バブルソート厳しいな。
>>377 > この条件、現実的じゃないと思う。
例えば、バイナリデータを直接ユーザ定義体の配列に読み込んだときとかですかね。
1秒1データで、データ要素が10個あるものを1日分(86400個)読み込んで処理するとか。
シートに展開してExcelの機能を使わないのであれば、VBAでやるなって話もありますが。
> データをコピーと言っているけどその元データはどこに格納されてる?
配列やCollection、独自コンテナなど。
> それとソートした結果は最終的にどこに出力される?
直接、配列やCollection、独自コンテナをソートします。
380 :
379 :2013/06/21(金) 18:17:43.09
付け加えると、CやC++で作ったDLLとデータをやり取りするので、シートに展開するよりメモリ上に データを保持して扱った方が便利なときがあったりします。
C#で作ったクラスを使いたいのですがどうすれば出来ますか?
COM相互運用をONにしてビルド DLLにCOMとしてのインターフェイスが生成される RegAsmでレジストリ登録 (ビルド時にやってくれる) 構成ファイルはもちろんExcel.exe.config ランタイムバージョンがどうなるか不明 (他ブックが似たようなことしてた場合とか)
384 :
360 :2013/06/21(金) 20:02:48.98
>>379 配列とかCollectionとか独自コンテナとかってあくまで処理に都合のいいデータの型であってデータとは違う。
配列とかCollectionとか独自コンテナに格納する元のデータはどこに格納されてるのかと言っているんだけど。
データ処理後の配列とかCollectionとか独自コンテナに格納されたデータは最終的にどこに出力するの?
要件定義が曖昧なまま、処理ありきで話を進めてるから現実的じゃないんだよね。
もう諦めろよみっともない
>>384 ん、だから例えばバイナリファイルが入力元とかだよ。
ソートやその他処理(例えば統計処理とかFFTとかね)をして、グラフ表示したり、
シートに出力したり、ファイルに出力したりだよ。
そこそこ大量の、単なる数値配列などではないデータ形式のデータを、オンメモリで処理すること
なんかありえないって言いたいのかなぁ。
ちょっと目的がわかりません。
ソート自分で書きたいなら書けば良いじゃん。その理由なんてどうでもいいわ VBAで処理すべきかEXCELの機能で処理すべきかの論議はよそでやってくれ
質問そっちのけでオレ流コーディングポリシーの 主張に余念の無い人が多いよねえ。 そういうことをするためのスレじゃないんだけどな。 これも一種のコミュ障?
VBAでソートしたいことだってあるよねというだけなんだが、ひどい言われようだな。
>>386 バイナリファイルを入力にしてグラフ表示やシート出力なら普通にExcel VBAのソート機能で充分だと思うし、
バイナリファイルを入力にしてファイル出力なら態々Excel VBAを使う意味が分からん。
>そこそこ大量の、単なる数値配列などではないデータ形式のデータを、オンメモリで処理すること
>なんかありえないって言いたいのかなぁ。
俺もよくわからなくなってきたんでもうやめるw
>>388 元々開発環境に用意されているものを態々自作で作るって意味なくね?って話でしょ。
ソート関数なんて一回書きゃ使い回せるから、俺からすればソートだけしたいのに なんで態々シートに転記してソートするかねって感じだな。
型が変わったら書き直しだから馬鹿らしい
ソートの話はもうお腹一杯
16進から符号なし10進への変換の良い方法ありませんか? hex2decだと余分な0が頭についていると駄目だし、 最上位ビットが符号ビットとみなされて8〜fではじまるものは負数になってしまいます。
シートに転記しないでいいなら、EXCEL使う必要あるのか疑わしいわけですが
"&h"を頭に付けてValに渡す。 負数になるときは、もっとサイズの大きい型で2の補数を求める。
>>395 hが変換前の16進(文字列型)として
d = Val("&H" & h)
399 :
デフォルトの名無しさん :2013/06/22(土) 01:00:41.32
VBAに符号なし32ビット整数ってあったっけ?
>397-398 できました! ありがとうございます。
401 :
桃白白 ◆9Jro6YFwm650 :2013/06/22(土) 02:15:48.60
>>395 ヘ⌒ヽフ
( ・ω・) ドキドキ
( ∪ ∪
と__)__)
Function H2D(s As String) As Double
H2D = H2D_(s, Len(s) - 3, Len(s))
End Function
Function H2D_(s As String, i As Long, l As Long) As Double
If i = -3 Then
H2D_ = 0
ElseIf i < 1 Then
H2D_ = CDbl("&H" & Mid(s, 1, i + 3))
Else
H2D_ = H2D_(s, i - 4, l) * &H10000 + CDbl("&H" & Mid(s, i, 4))
End If
End Function
パイパンオナニー発動!
こんな短いコードでも糞さ爆発
ドキドキかわいい しばらくそうしといてもらおう
既に終わっている話だし、質問者はコードの回答を望んでいる訳でもないのに何故あえて糞コードを晒すのか?
耐えきれずに具体的な突っ込みをする奴を待ち、途中切れたりしながら反論・再反論を繰り返すのを 2,30レスほどかまって欲しいんじゃないの?つまり、餌。 なので、具体的にどこがどう駄目なのかは言わない方が良いと思うよ。
短くても糞って逆に凄い
408 :
桃白白 ◆9Jro6YFwm650 :2013/06/22(土) 12:50:33.73
>>406 見てもらえばわかるんだけれども、ぶたさんの署名が入ってるでしょ。
桃白白の正式なコードだから不備はないよ。
署名ならシングルクォートくらいしてくださいよ コンパイル通らないじゃないですか 次からは気をつけてください、まったく
早速16進→10進変換システムを使ってみたのですが上手く動きません。 どこがおかしいのでしょうか。 Debug.Print H2D("01AF2158h")
毎週土曜日曜はVBAの日っておまいら知ってるか?
414 :
桃白白 ◆9Jro6YFwm650 :2013/06/22(土) 14:17:18.19
>>411 hは16進文字列として無効なものだから動かないのが正しい動作であり、
どこもおかしくなく、すべてうまく動いている。桃白白は桃白白の名前で
あると同時に桃白白のコードのブランド名なの。
自分はGOTO最強だと思ってるけど ここに常駐しているような方々は使ってないのですか?
>>416 この理由は
プロシージャ呼び出しを多用しすぎて少しでも怪しい呼び出し方をすると簡単にErrorを吐いてくるけど
膨大な数のGOTO命令を設置しても全く止まらない事がわかったのでgotoで書いてます。
418 :
桃白白 ◆9Jro6YFwm650 :2013/06/22(土) 14:57:12.39
>>417 桃白白はGotoを使わないな。怪しい呼び出しかたってどんな呼び出し方なの?
なんてエラーが出るの?最強の理由がよくわかんない。
>>418 プロシージャ呼び捨てにして不特定多数の処理へ繋ぎたい場合とか
多用するとすぐエラーを出す
GOTOは呼び捨てにしようがループしてようがErrorを出さない、構造化プログラミングの場合
>>419 を回避するために骨の折れるコードを書く必要がある。
421 :
桃白白 ◆9Jro6YFwm650 :2013/06/22(土) 15:15:43.57
>>419 そのようなコードはスパゲッティコードと呼ばれ
プログラミングの歴史の中で、止めた方がよいとされたスタイル
Gotoがスパゲッティになる理由だとされ、Gotoを使わないでも良いように
プログラムを組めるようにプログラミング言語は進化してきた
大昔の考え方でプログラム組むなら大昔の言語使ってください
,〜〜〜〜〜〜 、 |\ ( 釣れたよ〜・・・) | \ `〜〜〜v〜〜〜´ し \ ゙'゙":"''"''':'';;':,':;.:.,., ヽ○ノ ~~~~~|~~~~~~~ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ト>゚++< ノ)
個人で手っ取り早く仕事をかたづけたい場合とか 速く書けて正確に動けばどんなコードでも良いと思う (個人じゃなくても会社でもねw) スパゲッティーは超速く書けるしjくみかえも速く出来る。
と思って書き始めたコードが思わぬ肥大化や分業化して 誰も手をつけられなくなるのがスパゲティコードじゃないの?(´・ω・`) そら特定条件下や小物なら自由に書いたらいいけどもさ
他人が読む可能性がないなら好きにすればいい
超早く書いて使って仕事をこなして ソースを投げ捨てればいい
excel c#を作らないM$の意図は何なんだろう
今のVBAはジェンガ状態だからいじれないんだよ。 後方互換シカトして新しくすると一気にExcel自体から客が逃げそうで危ないし無理。 内部的にC#のコードをVBAにコンパイルするという変態コンパイラ作るくらいしかないだろうけど、 変態すぎてやりたがらないんだろ。
>>428 既に広く普及したVBAがあるからでしょ
君の思うよりもC#って普及していないよ
>>428 まあ、VBA 使ってる人に C# は、ちょっと荷が重いと思ってるんだろうな。
俺も、それは正しいと思うし。
>>429 後方互換なら単に両方使えるようにすればいいだけ。
現に Excel4 マクロから移行できただろ。
そもそも、VBA にコンパイルとかは意味不明だが。
432 :
桃白白 ◆9Jro6YFwm650 :2013/06/22(土) 20:09:29.67
>>431 _,. --- 、─-- .,
,. -イ ヽー 、
/ レ /,. ,ィ / } ヽ
/ iゞァ' _,.ノ / , / /i ヽ
〈 !、 ',. - 、∠,. ノ. - 、'' /| /
ヽ ! {;;;;;;;;;.},.- 、{;;;;;;;;;;;}' i / DimもAsもない2流言語になにができる?
,. -'" ヽ / ,`ー'´〃 ヾヽー' ト、/
i / i (ゝ.,_,ィr--- く_ァ' ) ! iヽ
/´ ,. ´ ̄`ヽ/,>  ̄ ̄ / ' ノ
" / 、 `ヽ. l_)________,. '",. '" ヽ
/ 、 \ Y-' `ー '" / / / |
. ,/ 、__ \ ヽノ \__ ,. - '7 | |
. { フ>-'"\ ,. - '/ | |
.. \___ノ i 〉 `ー-‐' / / |
>>432 豚さん書く時はシングルクォートしてって言いましたよね?
コンパイル通らないんです、まったく
載せるならC#じゃなくてVB.NETだろJK
>>426 この業界には「明日の自分は他人」、という格言があってだな
>>430 C#で書く人は少なくてもC#で書かれたソフトを使ってる人は多い
VBAを書く人は多くても、それを他人に使わせるケースは少ない
>>436 > それを他人に使わせるケースは少ない
なんかさあ、こういう無意味に上から目線なのやめた方いいよ。
LINQでシート参照したい
あなたたちのようにコードを書けるようになるにはどうしたらいいのですか? 本? けれど書店行っても、そういう本が並んでない・・・
>>441 必要は発明の母
「コードを書く」じゃなくて「コードを書いて何をする」を考えた方がいいよ
>>441 簡単な方法はC言語などほかの言語を学ぶこと
VBAだけ勉強しても役にたたないし歪んだ常識が身についてしまう
なせならVBAとC言語などでは使い手のレベルが段違いだから本やネットの情報に大きな格差がある
レベルが高い他の言語使いが書いた良い入門書を通じてプログラミングの正しい常識、作法、考え方を身につける
そうすれば二つめの言語を覚えるのはたやすい
4 44 4 4
>>443 VBAレベルでこんな質問をしてくる初心者に
ステップとしてCを勧めるとか、挫折させる気満満だなw
>>441 今の君にVBAがなぜ必要なのか、明確に言えなければ
身につけることは無理と思った方が良いよ。
>>441 きれいで読みやすいコードを書きたいならこんなところかな。下3つしか俺は持ってないけど。
言語は不問。
・Code Complete
・リーダブルコード
・プログラミング作法
・Cプログラミング診断室
・きれいなコードを書くための鉄則
設計の仕方が分からないということなら、どういう本があるのかよくわからん。
自分が書いたコードと上記の本で言われている内容を踏まえて書き直ししてみて
っていうのを繰り返していけば、自然と書けるようになると思うけど、これが一番っていうのはないな。
447 :
桃白白 ◆9Jro6YFwm650 :2013/06/24(月) 09:43:12.30
>>441 参考になるかわかんないけど、桃白白はワンピースとか封神演義読んでるよ。
448 :
441 :2013/06/24(月) 15:03:52.86
コードのきれいさはもとより設計の仕方がわかりません。 以前桃白白氏が競馬好きの人に書いたコードみて感心しました。 パッとコードを設計して出せるレベルに持って行きたいです。
最近は義務教育で情報処理ってやるみたいだけど、何を教えてんだろうね
>>448 基本は「入力」「処理」「蓄積」「出力」の4段階に分けるところから始める
現場でも基本は同じ
たとえ1行で終わるとしても、プロシージャに分けるクセを付けておいた方がいい
最初は1行で終わると思っていたことが、だんだん欲が出てきてどんどん長くなることも珍しくない
きちんと分けておけばあとで修正したくなった時に応用や再利用がしやすい
>>448 > 以前桃白白氏が競馬好きの人に書いたコードみて感心しました。
おい、勘弁しろよ。
あれは糞コードだ。見習っちゃいかん。
つか、全部桃白白の自演じゃないかと思うぞ。
日経ソフトウェアがいいと思うよ。
>>441 とりあえず5万円分本買ってきて、週30時間、月120時間を勉強時間に充てろ。
三ヶ月〜半年もすれば芽が出るだろう。
455 :
桃白白 ◆9Jro6YFwm650 :2013/06/24(月) 18:12:47.49
_, ,_ _, ,_
パコーン (Д´≡`Д) あおおぉぉぉ―――!
_, ,_ ((=====)) ←
>>450 (*`Д´) __ ((⌒(⌒ ))@))
⊂彡☆(( /\ ̄ ̄し' ̄ ̄ ̄\ ))
↑  ̄ ̄ ̄ ̄| | ̄ ̄ ̄ ̄
桃白白 | |
/ \
わざわざ糞コード書いてくれるんだから、反面教師として活用すればいいだけ
>>441 文法覚えたらセンスだよ後は
できるやつは新人から半年で、何年もやってきたやつらよりクールなコードを書けるようになる
>>448 パッとコードを設計できる人は殆どいないと思う。
パッと書いたコードは、まずきちんと設計されてないと思ったほうがいい。
459 :
441 :2013/06/24(月) 23:57:15.88
>>458 手慣れた人でもパッとはいかないものですか。
やはりチャート書いて、ゆっくり進めていくものなのでしょうか
1 コメントに処理手順をざっくり書き出す 2 手順を元に実装方法をコメントで追記する 3 実装する
461 :
458 :2013/06/25(火) 00:45:05.65
>>459 過去に作った経験があるのならパッとできると思うけど、
初めて作るものに関しては、パッと作れないと思う。
パッと頭に浮かんだものを、いろいろ想定されるケースに対応できるのか検討や検証する必要あるし。
勿論、検討や検証の結果最初に頭に浮かんだものが妥当ということもある。
最近はチャート書く人はいないと思う。
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
VBA関係ないし
>やはりチャート書いて、ゆっくり進めていくものなのでしょうか こういうの書いてないでプログラム組んだほうがいいよ とりあえずデータ処理プログラムを組め 自分の持ってる本とかを管理するソフトでいい 自分で題決めて1日8時間1ヶ月やればここらのレベルにはすぐ追いつく
本当に綺麗なコードを書きたいと思ったら、まず最初に仕様はちゃんと決めておくべき でないと、仕様に沿った最適なコードは書けるようにならない 個人で使うようなプログラムだと、仕様適当に決めて作り始めて プログラムの都合のいいように仕様を変えることはよくあるからな あとは良いソースをいっぱい見る事がセンス磨く一番の方法なんだが なかなか良いソースってのは見ないし、そもそも初心者には良いか悪いかわからないからなぁ
桃白白が書くような美しいソースみればおけ
466 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 05:32:28.19
>>461 16進数を10進数に変換するときにhを検討するような人はムチでぶたれるべきだと思う。
仕様はガッチリ固めないで大雑把のが良いプログラムを書ける なぜなら仕様書にはコンパイルチェックも実行時テストも含まれないから ひとつの歪みが全体の亀裂を生み無理に進めると簡単にクラッシュする コーディングの前に作る詳細な仕様書は本来 一から十まで教えなきゃコードを書けない底辺土方のために作るものなんだ
>>464 いいソースコードは見ただけで「これだったら俺にも書けそう」と思わせるコードかな。
これってできそうでなかなかできるものじゃない。
>初心者には良いか悪いかわからない 素人には判らないだろうけど 初心者くらいになれば判るだろ
471 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 09:22:47.11
472 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 09:24:50.97
461+1 :458 [↓] :2013/06/25(火) 00:45:05.65
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
桃白白、今日生理で機嫌悪いからこいつに粘着してやろうかな。
473 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 10:28:52.91
461+1 :458 [↓] :2013/06/25(火) 00:45:05.65
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
16進数を10進数に変換するコードなんだから16進数じゃないものを変換できないのはあたりまえだろw
設計したことあんのかよ?あ?
474 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 10:40:34.30
461+1 :458 [↓] :2013/06/25(火) 00:45:05.65
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
入力に不備があってそれを入力元に通知せずもみ消すのが妥当な設計ってどんな設計?
入力元に通知しても入力者はそれを理解できないだろうってとき?それがやさしさなの?
知らないふりをするのが処理を依頼された側の義務だと思量されるとき?それがオザワデザインだとでもいうわけ?
475 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 10:45:20.93
,..--‐‐‐‐‐‐‐‐---.. /::::ヽ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;) |::::::::::/ ヽヽ |::::::::::ヽ ........ ..... |:| |::::::::/ ) (. .|| i⌒ヽ;;| -=・=‐ .‐=・-.| |.(. 'ー-‐' ヽ. ー' | ヽ. /(_,、_,)ヽ | |. / ___ .| < あどうも ∧ヽ ノエェェエ> | /\\ヽ ー--‐ / / \ \ヽ. ─── /|\ r―n|l \ ` ー‐ ' .// ,/ ヽ
476 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 10:52:37.42
458+1 :デフォルトの名無しさん [↓] :2013/06/24(月) 23:51:17.92
>>448 パッとコードを設計できる人は殆どいないと思う。
パッと書いたコードは、まずきちんと設計されてないと思ったほうがいい。
16進数の変換でhを検討するようなバカがわかったようなことをいってんじゃねえよ
477 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 10:54:41.82
と小沢さんがいってました ..--‐‐‐‐‐‐‐‐---.., (;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::\ r‐-、 ,...,, // ヽ::::::::::| :i! i! |: : i! // ..... ........ /::::::::::::| ! i!. | ;| || 、 , \::::::::| i! ヽ | | |.-=・‐. ‐=・=- |;;/⌒i ゝ `-! :| |'ー .ノ 'ー-‐' ,) | r'"~`ヾ、 i! .| ノ(、_,、_)\ ノ ,.ゝ、 r'""`ヽ、i! .|. \ |_ !、 `ヽ、ー、 ヽ | ー'ニニニ=‐ヽ /|:\_ | \ i:" ) | ヽ ( ,' /´ //::::::::::::: ヽ `'" ノ /\`ー´_ / /:::::::::::::::
そんなに暴れなくても、末尾h、Hにちょこっと対応したコードにすればいいだけじゃん。
479 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 11:49:25.88
461+1 :458 [↓] :2013/06/25(火) 00:45:05.65
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
ノ´⌒`ヽ
γ⌒´ \
/""´ヽー⌒\ `ヽ
/ ノ (◎ )ノ ̄ ̄`ヽ、―ニ
/ (。 ) __)⌒/ ´`ヽ _ 三,:三ー三,:
| ::⌒(__ノ/ ノヽ--/ ̄ , ` ` ̄ ̄ ̄
。ヽ 。 )( }. ...| /! オザワパンチ
ヽo (__ン }、ー‐し'ゝL _
人 ー jr--‐‐'´} ;ーー------
/ ヾ---‐'ーr‐'"==
480 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 11:52:26.87
>>478 それが理にかなってないから桃白白は腹の虫が収まらねんだよ。
入力側で対処するべき問題だろうが。そんなこともわからないようなバカが設計などと口にするなということだよわかったかバーカ。
481 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 11:56:10.06
478+1 :デフォルトの名無しさん [↓] :2013/06/25(火) 11:30:17.56 そんなに暴れなくても、末尾h、Hにちょこっと対応したコードにすればいいだけじゃん。 バカすぎるwww 末尾のhはどっから来たんだよ。16進数の末尾にはhをつける必要があるとでも 思ってんのか?あ?ロバに噛まれて死ねよ。
482 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 11:58:14.28
∧__∧ ウマー 彡 ━ ━ 彡 ● ● 彡 ( | 彡 丶 |、 / ( o o) \ `/ __  ̄/ > ) (__L( /<丶/ | /  ̄ | /\ \ | / ) ) `ヒ/ ( \ \二)
いい加減にしろよ
こいつにちょっとでも触るとすぐこれだ。 これからは、完全スルー推奨だな。
おっさんが生理とか本当に気持ち悪い
486 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 16:11:47.56
>>484 桃白白相手だからといってこんなふざけた言動は許されないよな。
461+1 :458 [↓] :2013/06/25(火) 00:45:05.65
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
487 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 16:13:57.90
あーひさびさに長い距離歩いたら股関節に来たわ。 旦那が帰って来たら揉んでもらおう股間を、あとおっぱい。
488 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 16:15:09.46
461+1 :458 [↓] :2013/06/25(火) 00:45:05.65
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
16進数を10進数に変換するコードなんだから16進数じゃないものを変換できないのはあたりまえだろw
設計したことあんのかよ?あ?
489 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 16:15:44.28
478+1 :デフォルトの名無しさん [↓] :2013/06/25(火) 11:30:17.56 そんなに暴れなくても、末尾h、Hにちょこっと対応したコードにすればいいだけじゃん。 バカすぎるwww 末尾のhはどっから来たんだよ。16進数の末尾にはhをつける必要があるとでも 思ってんのか?あ?ロバに噛まれて死ねよ。
490 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 16:50:28.03
NGname決定
492 :
デフォルトの名無しさん :2013/06/25(火) 17:00:02.04
>>491 478+1 :デフォルトの名無しさん [↓] :2013/06/25(火) 11:30:17.56
そんなに暴れなくても、末尾h、Hにちょこっと対応したコードにすればいいだけじゃん。
バカすぎるwww 末尾のhはどっから来たんだよ。16進数の末尾にはhをつける必要があるとでも
思ってんのか?あ?ロバに噛まれて死ねよ。
493 :
デフォルトの名無しさん :2013/06/25(火) 17:03:56.72
なんだ、名無しでも暴れてたのか。 最低だな。
495 :
デフォルトの名無しさん :2013/06/25(火) 17:07:47.74
461+1 :458 [↓] :2013/06/25(火) 00:45:05.65
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
ノ´⌒`ヽ
γ⌒´ \
/""´ヽー⌒\ `ヽ
/ ノ (◎ )ノ ̄ ̄`ヽ、―ニ
/ (。 ) __)⌒/ ´`ヽ _ 三,:三ー三,:
| ::⌒(__ノ/ ノヽ--/ ̄ , ` ` ̄ ̄ ̄
。ヽ 。 )( }. ...| /! オザワパンチ
ヽo (__ン }、ー‐し'ゝL _
人 ー jr--‐‐'´} ;ーー------
/ ヾ---‐'ーr‐'"==
0xDEADBEEF
497 :
デフォルトの名無しさん :2013/06/25(火) 17:17:15.53
>>496 461+1 :458 [↓] :2013/06/25(火) 00:45:05.65
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
∧_∧
_( ´_ゝ`)
/ ) _ _
/ ,イ 、 ノ/ ∧ ∧―= ̄ `ヽ, _
/ / | ( 〈 ∵. ・( 〈__ > ゛ 、_―
| ! ヽ ー=- ̄ ̄=_、 (/ , ´ノ
| | `iー__=―_ ;, / / /
!、リ -=_二__ ̄_=;, / / ,'
/ / / /| |
/ / !、_/ / 〉
/ _/ |_/
ヽ、_ヽ
対応しているフォーマットは"^[0-9a-fA-F]+$"だけって言えば終了なのに、何を暴れているのやら。
499 :
デフォルトの名無しさん :2013/06/25(火) 17:24:28.37
..--‐‐‐‐‐‐‐‐---.., (;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::\ r‐-、 ,...,, // ヽ::::::::::| :i! i! |: : i! // ..... ........ /::::::::::::| ! i!. | ;| || 、 , \::::::::| i! ヽ | | |.-=・‐. ‐=・=- |;;/⌒i ゝ `-! :| |'ー .ノ 'ー-‐' ,) | r'"~`ヾ、 i! .| ノ(、_,、_)\ ノ ,.ゝ、 r'""`ヽ、i! .|. \ |_ !、 `ヽ、ー、 ヽ | ー'ニニニ=‐ヽ /|:\_ | \ i:" ) | ヽ ( ,' /´ //::::::::::::: ヽ `'" ノ /\`ー´_ / /:::::::::::::::
500 :
デフォルトの名無しさん :2013/06/25(火) 17:31:28.73
>>498 それで何が終了するんだ?
末尾のhに対応してないから設計ミスだっていってんだから
それで終了なら設計ミスで終了ということになるだろバーカ。
だから桃白白は堪忍袋の緒がぶちぎれてるわけ。
501 :
デフォルトの名無しさん :2013/06/25(火) 17:36:10.40
「それは設計ミスではなく仕様」で終了。
>>500 > だから桃白白は堪忍袋の緒がぶちぎれてるわけ。
だからといって、荒らして良い訳ではないことくらいわかろうな。
503 :
デフォルトの名無しさん :2013/06/25(火) 17:37:40.11
>>501 461+1 :458 [↓] :2013/06/25(火) 00:45:05.65
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
そう思うんならこいつに言ってやれよ。
それで
>>461 が納得して桃白白にいいがかりをつけたことを謝罪するのなら
引き下がってやってもいい。
504 :
デフォルトの名無しさん :2013/06/25(火) 17:40:33.83
>>502 荒らしてんのは
>>461 だろ。ふざけた言いがかりつけてきやがって、いい流れで来てたスレがこのバカのせいで台無しだ。
かわいそー。桃白白超かわいそー。
>>503 > そう思うんならこいつに言ってやれよ。
いやいや、
>>461 が納得しようがしまいが、お前がそう宣言してこの話題を終了させればいいだけ。
つか、トリップ付けて発言しろ。
506 :
デフォルトの名無しさん :2013/06/25(火) 17:45:03.97
>>505 は? 言いがかりつけて来た
>>461 が発言の撤回と謝罪を行わないかぎり
桃白白は引き下がらない。お前がトリップつけろや。誰だよお前。
>>504 元をただせば、自分が書いたコードが発端になってるわけで、
自分が蒔いた種は自分で刈り取れってことだ。
>>506 NGしてる人用に、トリップ付けろってことだ。
お前、暴れてるという自覚無いのか?
荒れすぎだろw
タオパイまさか本当に生理か?w
おれも
>>461 はどうかと思う
こんな数十文字で仕様を詰めらんないからタオパイ仕様になっちまうのは仕方ない
だからこの辺で手打ちにしようぜ、な
510 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 17:58:36.94
>>508 桃白白はお前を暴れていると認識しているが、お前はトリップを付けようとしないから、
お前は暴れているという自覚がないんだろう。さっさとトリップ付けろ。即刻NGにしてやる。
お前はそういうやりかたが正しいと思ってるんだろ。さっさとやれ。
かまって欲しいだけでしょ。 ほっとこうぜ。
一生トリップ付けとけ あと、ageんな
513 :
デフォルトの名無しさん :2013/06/25(火) 18:22:38.93
>>508 おいおい、他人に要求しといて自分はしらばっくれてダンマリか?
トリップ付けてくれてありがとうございます。寝たきりの母も
私の手を握り締めながら桃白白さんありがとうと私につぶやきました。
桃白白さんのおかげで母の笑顔を見ることができ、感謝の念にたえません。
私たち母子は桃白白さんにご努力いただいたことを決して忘れません。
本当にありがとうございます。これくらい言えないわけ?じゃあやめた。
>>507 桃白白がぶちぎれてんのは
>>461 の発言に対してだ。
そこを無視して桃白白が〜はただの責任転嫁。
>>461 の発言したやつ呼んでこい。
お前は
>>461 じゃないんだったら黙ってろや。
一生ゴミコード書いてオナニーしてろ
駄目だこりゃ
516 :
デフォルトの名無しさん :2013/06/25(火) 18:29:51.02
>>509 16進数を変換するってときにhを入れるのはバカだろ。バカの行いだろ。
聖書に書かれていてもおかしくないほどの愚行だろ。仕方ないというレベルじゃないだろ。
前世どころか現世もアルマジロなんじゃないかと疑うレベルだろ。来世ではアリクイになれると
いいですねと励ましの言葉で送り出してあげたくなっちゃうレベルだろ。完全にアリクイびとだろ。
>>516 > 16進数を変換するってときにhを入れるのはバカだろ。バカの行いだろ。
仕様による。
1000h
0x1000
&h1000
これらは全て普通に使われる16進数表現。
これらを受け入れるのか受け入れないのかは仕様次第。
お前のコードでは、全てはじく仕様だと言えばいいだけだ。
518 :
デフォルトの名無しさん :2013/06/25(火) 18:38:43.93
>>517 それは何の仕様だ?VBAの仕様か?あ?違う言語の仕様持ち出してきてどうすんだバカが。
そういうのを詭弁というんだ。
>>461 がアルマジロの脳みそしかありませんでしたで説明付くだろうが。
言い訳ばかり考えやがって真摯に謝罪できないもんかね!!
519 :
デフォルトの名無しさん :2013/06/25(火) 18:41:48.25
>>517 逆に聞きたいけど、なんで
>>461 は桃白白のコードを見て1000hを受け入れる仕様だと思ったんだ?あ?説明しろ。
末尾hくんはどこの世界で生きてるんだろうなあ
522 :
デフォルトの名無しさん :2013/06/25(火) 18:49:19.36
十六進法 - Wikipedia
https://ja.wikipedia.org/wiki/%E5%8D%81%E5%85%AD%E9%80%B2%E6%B3%95 一般には、16 個の数字 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F を用いる。
hなんてありまへん。
523 :
デフォルトの名無しさん :2013/06/25(火) 19:00:42.18
>>521 答えになってない。聞いてることとかみ合わない紋切り型のことしか言えない木偶の坊。ワニにでも噛まれてろ。
/ニYニヽ
/( ゚ )( ゚ )ヽ
/::::⌒`´⌒::::\ かぷwwwwwwwwwwwwwww
| ,-)___(-、|
| l |-┬-| l |
\ `ー'´ /
524 :
PLC屋 :2013/06/25(火) 19:04:22.13
普通に□hや□Hを使う。 経緯は知らんがメーカの取説などでもそう表記してある。 マ寄りの俺が0x□って仕様書くと「何これ?」って聞かれる。
525 :
デフォルトの名無しさん :2013/06/25(火) 19:04:46.89
>>524 /ニYニヽ
/( ゚ )( ゚ )ヽ
/::::⌒`´⌒::::\ でっていうwwwwwwwwwwwwwww
| ,-)___(-、|
| l |-┬-| l |
\ `ー'´ /
526 :
デフォルトの名無しさん :2013/06/25(火) 19:32:16.91
461+1 :458 [↓] :2013/06/25(火) 00:45:05.65
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
ノ´⌒`ヽ
γ⌒´ \
/""´ヽー⌒\ `ヽ
/ ノ (◎ )ノ ̄ ̄`ヽ、―ニ
/ (。 ) __)⌒/ ´`ヽ _ 三,:三ー三,:
| ::⌒(__ノ/ ノヽ--/ ̄ , ` ` ̄ ̄ ̄
。ヽ 。 )( }. ...| /! オザワパンチ
ヽo (__ン }、ー‐し'ゝL _
人 ー jr--‐‐'´} ;ーー------
/ ヾ---‐'ーr‐'"==
俺がお股揉んでやるからそろそろ落ち着け
コテ・トリ付けたら外すなや。 自分の発言に責任持てないなら一生外しとけ。
>522 :デフォルトの名無しさん:2013/06/25(火) 18:49:19.36
>十六進法 - Wikipedia
>
https://ja.wikipedia.org/wiki/%E5%8D%81%E5%85%AD%E9%80%B2%E6%B3%95 >
>一般には、16 個の数字 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F を用いる。
>hなんてありまへん。
↑あまりにもひどい墓穴をみた
表記方法[編集]
十六進表記はよく使われるので、プログラム言語ではリテラルとして特別な表記が準備されていることが多い。一般に、大文字の A-F と小文字の a-f を区別しない。 (1000)16 の表記の例を挙げる。
0x1000(C, C++, Java, Perl など)
x1000(HTML の文字参照における表記。例: က)
1000h あるいは 1000H(主にインテル系のアセンブリ言語・マイコン類の資料) この表記の場合、十六進表記が英字 (A-F) で始まるときは、変数名などと区別するため、先頭に 0 を付けねばならないことがある。例: 0A000H
&h1000(BASIC、とりわけマイクロソフト系のもの)
$1000(上記以外の BASIC や一部の Pascal 処理系、主にモトローラ系のアセンブリ言語・マイコン類の資料)
https://ja.wikipedia.org/wiki/%E5%8D%81%E5%85%AD%E9%80%B2%E6%B3%95
530 :
デフォルトの名無しさん :2013/06/25(火) 19:52:07.32
532 :
デフォルトの名無しさん :2013/06/25(火) 19:55:55.80
>>531 だから答えたんだろ。
>>522 を誰だと思ってるんだ?マジでウスノロだなお前。にぶちんと名づけてやろう。
こんどから名前欄ににぶちん#にぶちんと入力しろ。
533 :
デフォルトの名無しさん :2013/06/25(火) 20:03:04.90
プログラム言語ではとくべつなリテラルで16進数を表すことが多いからといって
16進数の文字にそのリテラルが含まれることになるわけじゃない。
それらしいこと言った気になってるだけで中身はぐっだぐだ。ガチでガキなんじゃねえかと思うわ。ガチガキ。
最近、1、2匹バカな奴がいるとは思ってたんだよな。
>>326 こいつとか、
>>330 こいつとか。
534 :
デフォルトの名無しさん :2013/06/25(火) 20:30:54.32
461+1 :458 [↓] :2013/06/25(火) 00:45:05.65
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
∧_∧
_( ´_ゝ`)
/ ) _ _
/ ,イ 、 ノ/ ∧ ∧―= ̄ `ヽ, _
/ / | ( 〈 ∵. ・( 〈__ > ゛ 、_―
| ! ヽ ー=- ̄ ̄=_、 (/ , ´ノ
| | `iー__=―_ ;, / / /
!、リ -=_二__ ̄_=;, / / ,'
/ / / /| |
/ / !、_/ / 〉
/ _/ |_/
ヽ、_ヽ
535 :
デフォルトの名無しさん :2013/06/25(火) 20:32:45.10
478+1 :デフォルトの名無しさん [↓] :2013/06/25(火) 11:30:17.56 そんなに暴れなくても、末尾h、Hにちょこっと対応したコードにすればいいだけじゃん。 バカすぎるwww 末尾のhはどっから来たんだよ。16進数の末尾にはhをつける必要があるとでも 思ってんのか?あ?ロバに噛まれて死ねよ。
ちょっともう異常だと感じるレベル
537 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 20:51:53.18
>>536 年に一度、かぼちゃを頭にかぶる日があるでしょ。
桃白白はそっちの方が異常だと思う。でもパンプキンヘッドの日だからといえば
みんな納得しちゃう。だから今日はオザワさんの日だと言えばみんな納得すると
思うんだよね。
539 :
桃白白 ◆9Jro6YFwm650 :2013/06/25(火) 21:09:15.10
>>538 だいじょぶ、わかってる。オザワさんの日で全部チャラだねおk。
もうたおぱいをしんじない
おれもたれぱいをしんじない
ちょっと煽られただけで こんな大暴れをする人だったのか…見損なった スレの私物化も甚だしい 運営に相談して出入り禁止とかにできないの? 由緒あるVBA質問スレがこんなんじゃ利用者が可哀想だよ
>運営に相談して出入り禁止とかにできないの? これくらいじゃ無理。板全部で暴れまわるなら別だけどw
質問者の為ではなく自分の為に糞コード書き続ける使えない人って印象だったし、こんなもんでしょ
>>542 完全スルー、完全無視位しかないと思うけど、質問者がスルー、無視するとは思えないし・・・
ルール化も検討する段階に来てると思う。
個人を無視するとかNGワードにするというものじゃなくてどんなに短くてもコードでの回答は不可とかね。
546 :
デフォルトの名無しさん :2013/06/25(火) 22:39:51.69
>>461 をはじめ、今回ばかりはみんな桃白白に悪いことしたよね。
じゃあさ、みんなで桃白白にごめんなさいしようか。
トリップはずすんじゃねぇ、馬鹿が
548 :
デフォルトの名無しさん :2013/06/25(火) 22:47:55.37
>>545 名案があるんだけど、hは16進数じゃありませんってテンプレに入れたらいいと思うの。
そしたらみんなハッピーじゃない?
2ch的にいうと桃白白が正しい。残念ながら。 まずコード書いたのが桃白白だけ。その他大勢は桃白白叩きをやった。 次に1回コテハンが暴れたぐらいでスルーできない煽り耐性のないその他大勢も悪い。 要は桃白白を叩くだけ叩いて、暴れたらすぐ動揺して「どうしたらいいか」って蜂の巣叩いたように大騒ぎするってのは 2chむきじゃないんじゃないか
551 :
545 :2013/06/25(火) 23:04:29.15
>>549 コテハン禁止にしたところで、今でも名無しにして暴れてるから効果は無いと思う。
第2、第3のパイパンが湧いてこないような対応をしないと、イタチごっこになるかなぁと。
>>550 またか、、、
どうしてそこまでコードにこだわるかなぁ
内容によるがコードを提示してしまったらその意図は伝わらないぞ?
それにここはクレクレスレじゃないしな
あとオレは家にExcel無いってのもある
すべてMSのhex2decがへぼすぎるのが悪い
>>552 2chには「スルーする」って技能も大事でしょ。
桃白白1人がコード表示したって、放置すればいいじゃない。
それをこのスレの住人は猛烈に叩いた。
その時点で、桃白白が完全に悪いっておかしくなるってことですよ。
突っ込み待ちなのか本気で頭おかしいのかわかんねえなこれ
16進の表記方法なんてメジャーなのはこれぐらいしかないだろ &h1234 0x1234 1234h &1234 全部対応しとけばいいじゃん
パイパンを擁護するレスは完全無視、スルーでいいと思う。
いいよ必死でググった結果発表しなくても
まだ全然叩いたうちに入らないよ。 あのコードが糞なのは1000hでエラーになるからじゃないよ。 ただ、具体的に指摘するとまた前回みたいに荒れ狂うからやらないだけ。
自分で暴れておいて、スルーしろと居直るような人と わかり合うことなど不可能 桃白白抜きのスレを作ってみんなで移動しよう スレタイおよびテンプレに桃白白出入り禁止って明記してさ そのスレにも来て好き勝手やるなら、完璧に故意犯なので運営に相談
>>559 具体的に指摘しなくても荒れ狂ったけどなw
僕はわかってますアピールもいらないから。 重症だな。
>>556 そうなんだけどさ、使えない奴ってのはそうは考えないんだよ
>そのスレにも来て好き勝手やるなら、完璧に故意犯なので運営に相談 相談したって無理。 馬鹿じゃねぇかって放置されるよ。 桃白白を放置する耐性をあなたたちが身につけない限り無理だって。
今回は前回より放置ぎみだぞ。 ただ奴が前回の何倍も発狂しただけ。
おら、新しい日付だからこの話はやめろい
最後に言っておくよ この糞眠い中 100%表示でBK列まで見えるマルチディスプレイで本当によかった! 睡魔と戦いながら広い範囲をスクロールさせてたら瞬時にセル番地を忘れてしまう。w
Cells(r, "BK")
BaKa
570 :
デフォルトの名無しさん :2013/06/26(水) 09:02:59.53
>>557 そーやって差別するわけですか、サイテーですね。
571 :
デフォルトの名無しさん :2013/06/26(水) 09:03:43.74
>>563 何がそうなんだ。使えないのはてめえだバーカ。
572 :
デフォルトの名無しさん :2013/06/26(水) 09:04:23.91
>>556 どれも16進数じゃねえな。なんで言語表現を16進数に持ち込むんだ?バカじゃね?
573 :
デフォルトの名無しさん :2013/06/26(水) 09:10:13.12
お前ら桃白白におんぶにだっこされてるぶんざいで生意気だよな。
>>572 ん?16進数自体が言語表現だぞ?
16進数を求める関数に0xとか与えるなってことなら同意
それは質問者が対応すべきだね
575 :
デフォルトの名無しさん :2013/06/26(水) 09:45:54.17
>>574 はああああ?????
16進数は16進数ですが?
0123456789ABCDEFで表される数ですが。
普段から詭弁ばかり使ってて正論がわからなくなったかぼちゃ頭なのかお前は?
お母さんに中身くりぬかれたのか?ご飯でも詰めてもらえよ。はい論破。
577 :
デフォルトの名無しさん :2013/06/26(水) 09:51:48.15
578 :
デフォルトの名無しさん :2013/06/26(水) 09:53:24.10
/!/{ / ヾ--r
_ /  ̄ <_
_>`´
>>576 ___<_
> r‐'" ̄ ̄ ノ ̄ ̄`ヽ、―ニ 二
/ , | `ヽ/ ´`ヽ _ 三,:三ー二
 ̄/ | ノヽ--/ ̄ , ` ̄ ̄ ̄
/ /⌒ヽ,| ミ } ...| /! 差別する奴って最低だよな
レ l d _}`ー‐し'ゝL _
| ヽ、_, _,:ヘr--‐‐'´} ;ー------
|/| \ ノ`ヾ:::-‐'ーr‐'"==-
ヽ/l/|` ー------r‐'"  ̄ ̄
|└-- 、__/`\-:、
__,ゝ,,_____/ \_」 \
579 :
デフォルトの名無しさん :2013/06/26(水) 09:55:13.64
461+1 :458 [↓] :2013/06/25(火) 00:45:05.65
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
ノ´⌒`ヽ
γ⌒´ \
/""´ヽー⌒\ `ヽ
/ ノ (◎ )ノ ̄ ̄`ヽ、―ニ
/ (。 ) __)⌒/ ´`ヽ _ 三,:三ー三,:
| ::⌒(__ノ/ ノヽ--/ ̄ , ` ` ̄ ̄ ̄
。ヽ 。 )( }. ...| /! オザワパンチ
ヽo (__ン }、ー‐し'ゝL _
人 ー jr--‐‐'´} ;ーー------
/ ヾ---‐'ーr‐'"==
580 :
デフォルトの名無しさん :2013/06/26(水) 10:02:05.61
461+1 :458 [↓] :2013/06/25(火) 00:45:05.65
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
∧_∧
_( ´_ゝ`)
/ ) _ _
/ ,イ 、 ノ/ ∧ ∧―= ̄ `ヽ, _
/ / | ( 〈 ∵. ・( 〈__ > ゛ 、_―
| ! ヽ ー=- ̄ ̄=_、 (/ , ´ノ
| | `iー__=―_ ;, / / /
!、リ -=_二__ ̄_=;, / / ,'
/ / / /| |
/ / !、_/ / 〉
/ _/ |_/
ヽ、_ヽ
質問失礼します。 環境:Windows XP, Excel 2007 A1にhogefugaとあり、B1にaiueoとあります。 C1にA1とB1の両方に含まれる文字列(oeua)を入れたいです。 10000行まで同じように処理したいです。どうすればいいですか?
478+1 :デフォルトの名無しさん [↓] :2013/06/25(火) 11:30:17.56 そんなに暴れなくても、末尾h、Hにちょこっと対応したコードにすればいいだけじゃん。 バカすぎるwww 末尾のhはどっから来たんだよ。16進数の末尾にはhをつける必要があるとでも 思ってんのか?あ?ロバに噛まれて死ねよ。
>>581 function CommonChars(r1 as range, r2 as range) as string
' r1.valueとr2.valueの共通部分を抜き出す
end function
という関数を作り、C1に「=CommonChars(A1,B1)」と入力し、それを10000行までコピーする。
>>583 その関数の中身がわからないから質問しています。コピーするのではなくてVBAでやりたいです。
それも質問から読み取ってもらいたかったです。結局あなた何ら意味のあることをいってませんよね。
質問の主旨も理解せずにずれたことをドヤ顔で返信されても困ります。
あなたがこのスレを荒らしている桃白白という人ですか?もし違っていたら謝りますが、本人であれば
正直迷惑なので、もうしわけないですけど私の質問に答えないでください。
Function 両含(s1 As String, s2 As String) As String Dim i As Integer Dim s As String ' 結果 s = "" For i = 1 To Len(s1) c = Mid(s1, i, 1) ' 1文字取り出す If InStr(s2, c) > 0 Then ' 両方に含まれる? If InStr(s, c) = 0 Then ' ガイシュツ? s = s & c ' 結果に加える End If End If Next 両含 = s End Function
586 :
デフォルトの名無しさん :2013/06/26(水) 12:17:31.58
461+1 :458 [↓] :2013/06/25(火) 00:45:05.65
因みに
>>401 でパイパンが書いたコードは
>>411 で変換できないと指摘されてる。
これは検討漏れの設計ミス。
本人は認めてないようだけどね。
ノ´⌒`ヽ
γ⌒´ \
/""´ヽー⌒\ `ヽ
/ ノ (◎ )ノ ̄ ̄`ヽ、―ニ
/ (。 ) __)⌒/ ´`ヽ _ 三,:三ー三,:
| ::⌒(__ノ/ ノヽ--/ ̄ , ` ` ̄ ̄ ̄
。ヽ 。 )( }. ...| /! オザワパンチ
ヽo (__ン }、ー‐し'ゝL _
人 ー jr--‐‐'´} ;ーー------
/ ヾ---‐'ーr‐'"==
ぼくがんばったよ Function h2d(h As String) As Long h = Trim(StrConv(StrConv(h, vbNarrow), vbUpperCase)) If Left(h, 2) = "&H" Or Left(h, 2) = "0X" Or Left(h, 2) = "OX" Then h = Mid(h, 3) ElseIf Left(h, 1) = "&" Then h = Mid(h, 2) ElseIf Right(h, 1) = "H" Then h = Left(h, Len(h) - 1) End If While Len(h) >= 2 And Left(h, 1) = "0" h = Mid(h, 2) Wend h2d = Val("&H" & h) End Function
>>577 周回遅れすぎ (w
16進数『表現』からの変換の話な。
>>587 もうちょい頑張って、EBCDIK にも対応してくれ。
590 :
583 :2013/06/26(水) 12:53:01.47
>>584 この問題を解決するには、大きくいうと二通りのやり方がある。
一つは、二つのRangeから共通部分を抜き出すユーザ定義関数を作り、それをセルに設定するというやりかた。
この方法のメリットは、「二つのRange」はセルに関数を設定するときに選択できるのと、「対象範囲」を「セルに
関数を設定する範囲」に置き換えることができること。
また、計算元となったセルの内容を変更すれば、計算結果も再計算される。
デメリットは、シート全体が再計算されるときに、時間がかかる場合があること。
もう一つは、全てをVBAのマクロで行うこと。
この方法のメリットは、上記方法よりも高速であるかもしれないということ。
デメリットは、計算元セルの位置や対象範囲を自由に変更できないこと。また、再計算にも対応していない。
*
普通、こんな丁寧な説明しないんだけどね。サービス。
もうどれがタオパイか分からなくなってきた┐(´〜`)┌ ヤレヤレ
ぼくだよ
>>591 それらしいと思われるレスは全て無視すればいい。
例え質問者であろうとも無視。
そこまでやるならエラー処理もしろよ Function h2d(h As String) As Variant 中略 d = Val("&H" & h) If h <> "0" And d = 0 Then h2d = CVErr(xlErrNA) ' 変換できない文字列には#N/Aを返す Else h2d = d End If End Function
>>585 ,590
ここまで書かないとわからないかも。
結局、全コードを求める奴しか質問しないのかもね。
function CommonChars(r1 as range, r2 as range) as string
CommonChars = 両含(r1.value, r2.value)
end function
あるいは、
sub hoge()
dim maxRow as long
dim i as long
maxRow = range("A1").currentregion.rows.count
for i = 1 to maxRow
cells(i, 3) = 両含(cells(i, 1).value, cells(i, 2).value)
next
end sub
どちらも動かしてない。
>>581 ,584ですら、パイパンの炎上狙いのやり取りと思ってしまう
598 :
デフォルトの名無しさん :2013/06/26(水) 14:15:04.03
600 :
デフォルトの名無しさん :2013/06/26(水) 15:48:00.56
>>588 は?誰がその話してんだよ一人でやってろやバーカ。
>>590 あなたには答えるなと申しあげたつもりでしたが、伝わりませんでしたか。
私はそんな説明も求めていません。自己満足のサービスご苦労様。もう黙っててね。
なんだ、荒らしか。
これがパイパンの自演じゃなかったとしたら、ゴミばっか寄ってくるな、このスレ。
604 :
583 :2013/06/26(水) 16:15:20.92
いや、荒らしたいだけでしょ、彼。
>>596 で完全回答が手に入ってるのに煽る必然性なんて皆無だし。
そんなに教えたいならママに教えてやればいいじゃん
>>604 何が部分的ですか?あなたは聞いてもいないことを書いて答えた気になってるだけです。
あなたのような人をトンチンカンといいます。テンプレを理由にあなたのくだらない答えが正当化されるわけがありません。
答えられないなら黙ってればいいじゃないですか。独り善がりのアドバイスがしたいのならそれこそTwitterででもつぶやいて
たらどうですか。技術的な回答をするのに向いていないと思いますよ。これは私からのアドバイスです。
普段はこんな丁寧なサービスはしません。私はあなたが桃白白ではないかとまだ疑っています。あなたもまだ否定されていませんよね。
>>603 バカな回答者が群れて増長してるからどうしようもないと思いますよ。
10000行だっていっているのに
>>596 のようなコード書く人もいます。
動かさなくてもわかるだろと。
>>605 完全回答、必然性
すげえかっけえなお前。悪い意味で。
これパイパンだろ
>>607 > 10000行だっていっているのに
>>596 のようなコード書く人もいます。
> 動かさなくてもわかるだろと。
>>585 と
>>596 のhoge()の方をコピペしてhogeを実行してみろ、このど素人が。
なんか、Yahoo知恵袋的な釣り師の匂いがするんだが。
反パイパンのふりをして、動作するコードを書くパイパンこそが素晴らしい回答者なのだという パイパン自身による印象操作だな。
>>600 はいはい、じゅうろくしんすうがわかってるぼくちゃんえらいねぇ (w
>>614 ∧,_∧ ♪
(( ( )
♪ / ) )) ♪
(( ( ( 〈
(_)^ヽ__)
>>587 両含で入力文字列をフィルタリングすればいいだろ。お前は応用力ゼロのナメクジか?あ?
砂糖かけてもちっちゃくなるんだぜ知ってたか?お?
>>611 maxrowはcurrentregionに依存しますよね。そんなことコード実行しなくてもわかりますよね。
回答する側の自分は素人じゃないとでも思ってるんですか?質問者より頭が悪いくせに
偉そうにするのやめてもらえないですか?それってとっても痛いですよ。
なら、for i = 1 to 10000にすればいいだけなのに、そんなこともわからないのか
ほらよ、完全回答。 sub hoge() dim i as long for i = 1 to 10000 cells(i, 3) = 両含(cells(i, 1).value, cells(i, 2).value) next end sub もう来るな。
なんかスゲーな。 回答厨とか言ってた奴思い出した。
何故このスレの住人は煽り耐性が低いの?
だな。見え見えじゃん。
荒らしなのかどうかわからんが、いずれにしても煽ればコードが出てくるという雰囲気になるのは良くないな。
君が感じる雰囲気にかかわらずム板でコードが出ないという事はありえんのだよ
>>622 パイパン臭が少しでもあれば荒らしとみなしていいと思う。
例えそれが本人じゃなかったとしてもね。
パイパンが名無しの成りすましになってるから、混乱してるようだけど。
俺も煽ればコードが出てくるっていうのはよくないと思う。
何より俺はまず最初に関数名が「両含」でいいのかと突っ込みたい なんて読むんだよ
>>624 桃白白が荒らしたことなんてあったか?俺は記憶にねえけどな。
アスキーアートの連貼りは荒らしに見えなくもない まあ上には上がいるからかわいいもんだけど、VBAスレでは今までそういうのがなかったから、 数回の連投でもそう見えてしまう
AKB
まああれだ。sageを覚えたなら進歩したんじゃないか 長い目でみて、完全放置しようぜ
631 :
デフォルトの名無しさん :2013/06/26(水) 22:08:01.81
/!/{ / ヾ--r
_ /  ̄ <_
_>`´
>>630 ___<_
> r‐'" ̄ ̄ ノ ̄ ̄`ヽ、―ニ 二
/ , | `ヽ/ ´`ヽ _ 三,:三ー二
 ̄/ | ノヽ--/ ̄ , ` ̄ ̄ ̄
/ /⌒ヽ,| ミ } ...| /! 差別する奴って最低だよな
レ l d _}`ー‐し'ゝL _
| ヽ、_, _,:ヘr--‐‐'´} ;ー------
|/| \ ノ`ヾ:::-‐'ーr‐'"==-
ヽ/l/|` ー------r‐'"  ̄ ̄
|└-- 、__/`\-:、
__,ゝ,,_____/ \_」 \
Excel2007 VBAで.NETのコントロールを利用する方法ありますか? DataGridViewやTreeViewを使用したいです
>>632 VB.NetのフォームにExcelのシートを貼り付けた方が早くね?
それで良いなら話は簡単なんですが・・
VBAで複数のシートを扱う場合快適に動くのは何シートぐらいまででしょうか? 今20シートぐらいに書き込むコードを作りましたがさらに複製して倍に倍にと増やす予定です、お勧めの最大シート数を教えて下さい。
マシンスペックも書きこむ内容も解らんと答えられるわけないと思わんのか?
マシンスペックと書きこむ内容が解ればお前に答えられるのか?
だね
「快適」の基準も曖昧だし
では質問を変えて今まで書いたVBAで最大何シートを操作した事がありますか? 50シート 100シート 1000シート 10000シート 100000シート 1000000シート 10000000シート 100000000シート 1000000000シート
1000000000シート 10000000000シート 100000000000シート 1000000000000シート 10000000000000シート 100000000000000シート 1000000000000000シート 10000000000000000シート 100000000000000000シート 1000000000000000000シート 1000000000000000000シート 10000000000000000000シート 100000000000000000000シート 1000000000000000000000シート 1000000000000000000000000シート 1000000000000000000000000000シート それ以上。
あーあ、スレが殺伐としちゃって機能していないね… 質問する方も答える方も、挑発的な態度は慎もうよ バトルしに来てるわけじゃないだろ?
エクセル・VBAユーザーなんてこんなもんでしょ
100シートのエクセルブックなんて用途が思いつかん 使うアプリ間違えてるとしか思えん
>>635 そういうのって誰かに聞いても
結局は自分のところで検証しなきゃならんから意味ないよ?
しかしシートが20から倍々ってのは
何か根本的な所で間違ってるような気がする
データの量が指数関数で増えるって事だろ
647 :
デフォルトの名無しさん :2013/06/28(金) 08:32:40.51
ただの誤爆でしょ
モモさん消えちゃったの?
652 :
桃白白 ◆9Jro6YFwm650 :2013/06/29(土) 15:59:38.38
>>651 いるけど?
∧,_∧ ♪
(( ( )
♪ / ) )) ♪
(( ( ( 〈
(_)^ヽ__)
おまえじゃねぇよ
学校の授業でVBAやってるんだけど、マジでちんぷんかんぷん……助けて
656 :
桃白白 ◆9Jro6YFwm650 :2013/06/30(日) 23:33:03.58
>>655 桃白白が助けてあげちゃう。どういうコードがわからんの?
>>655 VBAは実務でExcelを
活用しつつ使う言語だから
今はわからなくて当然
就職してから覚えればいいよ
>>655 おっと、覚え立てで教えたがりの俺もいるぜ
なんでも聞いてみな
つかVBAってむずくね? 一度挫折したけど別の言語やりだしてから何となく分かるようになった 初心者が最初にやる言語じゃないと思う
なでしこ
支店 部門 年度別 月別をシート増やしていくと いくつあっても足りないから 複数のブックに分けてる ブック操作はなでしこ使って シートの中はVBAで操作
>>662 そういうのは1枚のシートに全データをまとめて、必要に応じて条件を指定して抽出するんだよ
それでデータ数が10万とか行くんなら、それはExcelじゃなくてAccessを使うべき仕事
Excelシート上にマクロを実行する為のボタンを用意しました。 そのボタンをクリックした時のひな形コードが自動で生成されたのですが その時のボタンの名前が ボタン2 となっており名前が変なので直したいのですが どうしたらよいでしょうか? Sub ボタン2_Click '略 End Sub ↓ Sub executing_Click '略 End Sub
>>664 Excelのボタンには2種類あって、
自動的に付く名前が「ボタン1」になるのはフォームのボタンなので名前は変更できません
もう一種類の方、Active Xのボタンを貼り付けて下さい
同じメニューの中に並んでいますから、よく探してください
そして、貼り付けたボタンを右クリック→プロパティを開き、オブジェクト名をexeutingに変更してから
最後にボタンをダブルクリックすると、ご希望のひな形が作られます
>>655 VBAはゴミだから他の言語から覚えた方がいい
VBAから入ったやつは必ず変なクセ持ってるから使い物にならない
そういえばVBしか使えませんっての ちらほら居るな
しまったあああああああああああああああああああああああああああああああ エクスポートしとくの忘れてたあああああああああああああああああああああああああ あー、でもこれでなんかスッキリしたような気がしなくもない
あっ、誤爆失礼
ぜんぜんスッキリしない (´・ω・`)
シート2のデータの参照式をシート1に埋め込むようにして、1行終わったら次の行に移って繰り返すようにしたいんだが、どうやればいいですか?
>>673 先輩&社長から、量が膨大でミスが起きるから、VBA使って自動でやれるようにしろと言われたんで…
じゃあ、 ・シート2のデータの参照式をシート1に埋め込み、 ・1行終わったら次の行に移って繰り返すよう なマクロ書けばOK
先輩に質問しろよ
社長はオレだ
678 :
桃白白 ◆9Jro6YFwm650 :2013/07/01(月) 17:44:16.81
>>677 桃白白、Excel 2013のPreview版を使ってたんだけど、期限切れで使えなくなったの。
社長助けて。
679 :
デフォルトの名無しさん :2013/07/01(月) 18:31:01.53
一般的にVBAを記述する場所は @ Sheet1 A Module1 とあると思いますが、Formアプリケーションではない場合@Aどちらに 書くのが普通なのでしょうか?
主処理はA、主処理のトリガーとUI制御は@
681 :
デフォルトの名無しさん :2013/07/01(月) 19:22:19.69
サンクス
>>678 Windows再インスコで期限リセットできない?
別シートの最終行と最終列の取得、それと書式を標準にする方法教えて下さい。
>>679 普通はThisWorkbookに書くんじゃね?
必要なければモジュール使うことないだろ
Sheet1はイベントハンドラ周りとか必要な時に書くだけ
まあ、最終的には動けばいいんだけど
>>664 ボタンの名前変更は、ボタンを選択した状態で名前ボックスの所で書き換えれる
名前ボックスは数式バーの左横にあるやつな。セルの名前とか出るとこ
>>665 フォームのボタンでも名前は変えられます
>684 はぁ?
うっかりシートを削除しちゃうとシートに書いてあるマクロも消えちゃうよね 畜生ォ・・・持っていかれたァ・・・ッッ!!って感じで だからマクロはモジュールに書くようにしています
>>684 ThisWorkbookって
Workbook_open()とかの
ワークブックイベントしか書けないはずだが…違ったかな
VBAを1から勉強したいと思っています。 プログラミング言語が宇宙語に見えてしまう程全然やったことのない初心者です。 皆さんはどうやってVBAを勉強しましたか? 参考にさせてください。
あなたが短気で怠惰で傲慢なら すぐにマスターできるよ
単純作業を機械任せにして自分は楽したい、その為の努力は惜しまない、という人ならなんとかなるさ
私はC言語を勉強しました すると不思議なことに 次の日にはVBAのコードを楽々書けるようになっていたのです それだけではありません 身長も伸びスリムになりIQも増えました 上司からも認められ昇進が決まりました あなたもVBAをやめてC言語を学び豊かな毎日を手に居れましょう
面白いと思ったのかな?
VBAのおかげで彼女が出来ました!! ありがとうVBA こんな感じで合ってる?
>>688 > ThisWorkbookって
> Workbook_open()とかの
> ワークブックイベントしか書けないはずだが…違ったかな
そんなことない。普通に関数を書くことができる。
彼女のできるVBAのコードplz
Private Function GetKanojo(Man As Variant) As Boorean If Man.Face = vbIkemen Then GetKanojo = True End Function 糞コード
しかも判定しただけでゲットは自分でやれとか
T6セルから右に10個おきに文字を入力する方法を教えてください。
700 :
デフォルトの名無しさん :2013/07/03(水) 04:42:35.74
>>699 こんな感じ。
Dim r As Range
Set r = Range("T6")
Dim i As Long
For i = 1 To 3
r.Value = "ぱいぱい"
Set r = r.Offset(ColumnOffset:=10)
Next
offsetって結合セルでズレなかったっけ
702 :
デフォルトの名無しさん :2013/07/03(水) 10:58:38.71
>>701 そんなこと言ったら、雨降ってるときに傘ささずに外歩いたらずぶ濡れになるわ。はい論破。
>>699 セル範囲を指定する場合
For c = Range("T6").Column To Range("EZ6").Column Step 10
Cells(6, c) = "ほげ"
Next
データの個数を指定する場合
For i = 1 To 20 ' 個数
Cells(6, Range("T6").Column + (i - 1) * 10) = "もげ"
Next
列名に特定の文字列を含む場合、その列のセル全てに任意の文字列を埋め込む方法を教えて下さい。 現在、R8に列名が書かれており、R9以降に文字列を埋め込みたいと考えています。
列名に特定の文字列を含む場合、その列のセル全てに任意の文字列を埋め込めばいいよ
コードをよこせってよ 白桃はやくしてやれよ
>>704 「文字列を埋め込む」ってどういうこと?
まず穴を掘って
>>707 すみません、分かりづらいですよね…
入力したいと言うことです。
>>704 文字列が含まれるかどうか
→InStr()
文字列"abc"の二文字目に"XYZ"を挿入する
→2文字目から0文字を"XYZ"に置換する
→Application.Replace("abc", 2, 0, "XYZ")
712 :
711 :2013/07/04(木) 15:18:38.09
入力したいってどういうことだよ… R9「以降」ってどういうことだよ… 後はまかせた。
713 :
デフォルトの名無しさん :2013/07/04(木) 15:42:14.06
R8に列名が入っていて、それが特定の文字列の場合、R9に入力したい内容(今回は計算式)を入力したいんです。以降ってのは、R10、R11と同じことを繰り返したいという意味です。
>>715 forは書けます。
多分、IF文で列中に該当する文字列があるか見て、該当していたら、入力したい内容を、該当していなければ、また別の処理をさせるという流れなんでしょうが、列名で条件分岐の方法が分からないんです。
717 :
715 :2013/07/04(木) 16:20:56.51
>>716 Forステートメントの前の段階が問題なのか。
>>711 のレスを見ても分からなかったら致命的なんだけど。
718 :
デフォルトの名無しさん :2013/07/04(木) 16:29:17.01
>>716 If InStr(1, Range("R8").Value, "特定の文字列", vbTextCompare) > 0 Then
……
End If
>>714 計算式設定(C1:C3に「=A列*B列」をまとめて設定する場合)
→ Range("C1:C3").FormulaR1C1 = "=RC1*RC2"
720 :
デフォルトの名無しさん :2013/07/04(木) 21:06:33.37
721 :
デフォルトの名無しさん :2013/07/06(土) 22:50:25.03
ウインドウズ7のエクセル2002なのですが、 例えば行A列の1行目から5000行目までに適当な数値が書かれてるんですが そこに1行目から5000行目まで一気にそれぞれの数値を100プラスしたいというときに do loop文を使わずに一括で足し算するみたいなことってできるんでしょうか? loop使うと時間かかるので、この作業を出来ればloopよりもっと一瞬で行えるようにしたいです。
エクセル 値 貼り付け 乗算 でググれ
724 :
722 :2013/07/08(月) 12:58:12.16
>>722 なのですが
とりあえず考えてみてB列の1行から5000行まで100と入れておいて
C列の1から5000行に "=SUM(RC[-2]:RC[-1])" と文字で一括貼り付けする。というのが
一応早いみたいですが、これより良いのあるでしょうか?
725 :
722 :2013/07/08(月) 13:03:38.62
>>723 ありがとうございました。それが早そうですね。
○ 加算 × 乗算
遅いのはループのせいじゃないと思うが
728 :
桃白白 ◆9Jro6YFwm650 :2013/07/08(月) 18:05:14.80
ループで毎回RangeやCellsを参照すると遅い 配列に一括代入して、配列操作して一括で戻すと早い、EXCELVBAでの基本テク Sub test1() Dim i As Long For i = 1 To 50000 Cells(i, 1).Value = Cells(i, 1).Value + 100 Next End Sub Sub test2() Dim i As Long Dim r r = Range("A1:A50000") For i = 1 To 50000 r(i, 1) = r(i, 1) + 100 Next Range("A1:A50000") = r End Sub 比べて見れ。50000なのは5000じゃ体感できる差が無かったからな
730 :
729 :2013/07/08(月) 18:11:03.05
ぐは、空白が... これどうやったら空白のまま書き込みできるんだ?
731 :
桃白白 ◆9Jro6YFwm650 :2013/07/08(月) 18:12:32.81
>>730 ねー。この間まで でいけてたと思うんだけど、昨今は全角半角ばかりだよ。
>>730 &nbsp;で駄目なら、全角スペースで インデント すればいいよ。
あ、やっぱ駄目ねw
734 :
722 :2013/07/08(月) 18:51:55.48
>>729 ありがとうございます。それも一瞬でできるみたいですね。
ちなみに Dim r のあとは、as 何とかって形で形式は
指定しないんですね?
735 :
722 :2013/07/08(月) 19:03:16.34
ああ、バリアント型での変数でしか無理なので、省略したんですね。 解決しました。 たしかにこちらのやりかたは、加算、などする数値にまた変数を組み込めたりして 便利そうですね。ありがとうございました。
736 :
722 :2013/07/08(月) 19:59:02.02
っていうか、同型の変数を配列という形で一括で取り込めるというのを初めて知りました。 VBAを適当なマニュアルサイトで勉強してたときには無かったんですよね。 これは色々便利ですね。ありがとうございました。
>>722 セルの読み書きに時間がかかるから、配列に一気に読み込んで、演算処理して、一気に書き戻す。
一瞬で終わるかどうかは環境次第だけど、かなり速くなるはず。
Win7が入るようなマシンなら5000件ぐらい一瞬で終わる 5万件でも1秒
あんまり早く処理が終わると味気ないので、わざとCellsで回してます 人に使ってもらうマクロの場合も、一瞬で終わり過ぎると逆に不安になるらしく 頑張ってる感を演出する為にもCellsで回して、Application.StatusBarとかに進捗表示させてます
手作業で一週間かかってた作業がVBAだと一瞬で終わって事務員がリストラとかよくある話
そして3年後にバグの素通しによる会計ミスが発覚して会社ごとリストラとかよくあ(ry
エクセル2002が遅いじゃね
足し算のスピードなんかバージョン関係ないし
最近のは前のに比べて早くなったという噂が
745 :
722 :2013/07/09(火) 00:35:51.97
>>738 いやぁ、実際には5万件でも明らかにコンマ数秒ぐらいの1瞬でした。配列で飲み込まずに一個ずつやると
17秒かかったんですけどね。
746 :
722 :2013/07/09(火) 00:40:32.53
いや17秒はもりすぎでした。4秒ぐらいでした。まぁ、どうでもいいアレですがw
>>744 全体で見たら早くなってるけど、単純な演算は遅くなってる
早くなってるのはセルの値や情報の取得設定などの、所謂オブジェクト操作
>>747 ソースある?
単純な演算を遅くする or 遅くなる理由が思い付かないんだが
俺はアジフライにはソースではなく醤油派だ
そもそも最近のって具体的にどのバージョンだよ
僅かな差なんだから機にすること無い
c#でいうところのWebBrowserクラスはvbaには無いのですか?
ieをcreateobjectする
他の言語は素直だけどVBA回りくどいよね
vbに切り替えればいいのにね
Excelのマクロ言語に、使用言語切り替え機能なんてないぞ まぁ、そのうち任意切り替え(選択)ではなく、 強制切り替え(マクロ言語をVB6系からVB.NET系に変更)はされるかもだけどな まあ、今は他のオフィスソフトもマクロを強化されてるので マクロ言語をVB.NETに変えると一気にユーザー離れする恐れがあるから その辺はMSも慎重になるだろうけど
困るよー 使っているのはプロの開発者ばかりじゃないんだからさ エンドユーザーが忙しい業務の合間に苦心して開発して 自動化に役立てていたりするのが大半でしょ そういう人は他の言語を覚える余裕がないから VBAを切り捨てられたらたぶん世界中から非難の嵐
MSにとってもメリットないだろうしな
別に両方のせればいいだけ。 Excel4 マクロと VBA の両方が動作していた時もあるんだから (そう言えば Excel4 マクロってどうなったんだっけ?)
つExcel DNA
>>761 そういう欠点だらけで糞なものを紹介するな
DateAdd関数で質問です。 23:00:00に1時間足すと翌日の零時にならないのは何故ですか? イミディエイトウインドウで試したら下のような結果になります。 ? DateAdd("h", 1, "2013/07/01 22:00:00") 2013/07/01 23:00:00 ? DateAdd("h", 1, "2013/07/01 23:00:00") 2013/07/02 ? DateAdd("h", 1, "22:00:00") 23:00:00 ? DateAdd("h", 1, "23:00:00") 1899/12/31
試しに、23:00:01でやってみたらOKでした。 ? DateAdd("h", 1, "2013/07/01 23:00:01") 2013/07/02 00:00:01
>>764 表示だけの問題かと。
?Format(DateAdd("h", 1, "2013/07/01 23:00:00"), "YYYY/MM/DD hh:mm:ss")
2013/07/02 00:00:00
即レスありがとうございます。 途方に暮れていました。 結果を変数に入れててもエラーが出てたので気づきませんでした。 本当に感謝です。m(_ _)m 結果が00:00:00だとこの現象になる見たいです。 ?dateadd("n",10,"2013/07/01 23:50:00") 2013/07/02
VBAには日付だけとか時刻だけの型はないからなぁ 日付時刻の型で、時刻部分が00:00:00なら日付として使ってるだろっていう勝手なおせっかいだな 逆に日付が部分がデフォルト日付なら時刻として使ってるだろっていう勝手なおせっかいもあるのか しかしなぜそれが1899/12/30なんだろ
1900でいっか。ちょっとだけ余裕持たせね?んー、せやな。1日?うん、あ、いや、2日にしとこ。せやな。
>767 その理由を説明するにはlotus 1-2-3の話に遡る必要がある。
日付形なんて迷惑なものを使うな 整数で十分だろ
>>769 スレ違いなので、やりたければBソフ板の
Excel雑談スレでやってね
他のスクリプト言語で初心者に毛の生えた程度には仕事アプリ作ったことがありますが質問です。 エクセルのマクロでは自分が作ったコード郡をどのように保管運用するのが普通なんでしょう。 エクセルのデータに埋め込むマクロはそれでいいんでしょうが、そうでない汎用的なサブルーチンや エクセルの個別の書類にあまり依存しないマクロを書いている場合、今現在はエクセルが勝手に作る personal.xlsとかいう書類に埋め込まれて保存されている状態で、そこからインポート・エクスポート して使っている状態ですが、みなさんはどのような環境で自分のコード郡を作成・保存し、他人に あげたりしてるんですか? なんか気持ち悪いけどこれが普通なんでしょうか。
コード郡ってどこにあるんだよ、、、、、。仕事ばれるorz
VBAソースってフォルダに保存 業務だとバージョン管理システムとかあるけどVBAに適用している例は知らない
>>777 エクスポートして subversion に突っ込んでる。
>>779 それはDB操作やロガー等、再利用性が高く再利用前提のクラス?
>>780 クラス、フォーム、モジュール 全部 + Excel ブック
きっちりやってるねぇ 差分取るには良いかもだけど面倒そう
ロードモジュールに変換して渡す
VBAでキーロガー的なアプリを作れる? アクティブじゃない時のキーボードイベントってどうすれば捕捉できるんだろう
無限ループでキーボード監視 アクティブかどうかは関係無いっしょ
>>782 全部のモジュール等をエクスポートするためのマクロボタン作ってあるから、エクスポートしてコミットするだけ。
変更の有無は subversion が判断するから、慣れればさほど面倒じゃないよ。
ただ、フォーム (*.frx) の差分がとれないのが残念。
>>785 それは流石に非効率かな
イベントで処理したい
非効率でも仕方ないでしょ 効率的にやりたいなら、組み込みマクロ言語ではなく アプリ開発言語使えば良いだけだし
VBAでもAPIが使えればなんでも出来るでしょ? そう思ってた時(ry
VBAって確かサブクラス化が出来ないんだよね
サブクラス化w
サブクラス化w
>>790 VBAではAddressOfが無いからなぁ、と思ってたが
有るじゃないか、AddressOf演算子
いつのバージョンからあるんだろ?頑張ればできるんじゃね、今のバージョンなら
非力だなあ
関数を入力するテキストボックスあるじゃないですか あれを今アクティブなセルを書き換えないで関数を呼びたいのですができませんか? あとサブルーチンも呼びたいです
Excel初心者ですが sellに001 002 と0が頭についた数値を表記したい場合はどうすれば良いのでしょうか?
文字列の最初に'をつけて
798 :
796 :2013/07/14(日) 13:34:57.03
>>797 できました!
ここはVBAスレだったのですね・・板違いな質問にも関わらずありがとうございました。
つでにセルはSellではなくCellな
って誤字指摘してる俺も誤字ってるじゃんw ×つでに ○ついでに
ひゅう〜www
excel 2007です Option Explicit Public Sub Hoge() Debug.Print "Hello" End Sub Public Sub Fuga() Debug.Print "*****" Application.Evaluate ("Hoge()") Debug.Print "*****" End Sub ***** Hello Hello ***** なんで2回よばれてしまうんですか?
一度評価し正しければ実行 かなあ
OnActionなんかでも、2回呼ばれてしまうケースと、それを回避する方法があったな 同じ方法で対応できるかは解らないが、ググってみれば? あとは対処療法で1回しか実行されないようにする方法はいくらでもあるので、それで間に合わせるとかね
805 :
796 :2013/07/15(月) 18:31:17.35
VBAに生命をやどす事はできるのでしょうか?
VBAを使うメリットを教えてください 会社の先輩が言うには持ち込み禁止の現場でもエクセルならまず入ってるからと苦しい理由を述べていたのですが… いくらなんでも開発用の環境はあるはずなのでそれを使うべきではないでしょうか?
初歩的な質問ですが オートフィルタの抽出結果の中にある空白セルをカウントするには どうしたらいいでしょうか? 空白セルの有無で処理を分岐させたいのです。
>>806 甘いな
開発環境がExcelしかない現場など星の数ほどある
その現場ではエクセルマクロを納品するのですか?
>>809 ホントか?
Excel 入ってて Word 入ってない PC なんて見たことないし、メモ帳あれば vbs とかでも開発できるんだよ。
>>810 そうだよ
というか、現場で既存のExcelブックにVBAを打ち込んで
そのまま使ってもらうだけ。
納品も実に簡単だ。
それはかわいそうな現場ですね それ以外の現場であえてエクセルを使う理由はありますか?
世間知らずのニートは黙ってろ 理想と現実は385度ぐらい違うし民衆の約122%はバカで豚なんだよ
うわっ
起点セルから10個おきに計算式を埋め込み、それをデータが記入されているセルまで続けたら、 2行目へ移動して同じ事を繰り返す方法を教えてください。
>>817 それをそのままコードにすれば良いだけじゃん
>>817 forかwhile内でif置くだけの簡単な処理です
要件の規模によっては手でやれよってなる
>>817 どこまでコードができてるの?
コードができていないというのは論外だけど。
821 :
ピラフ :2013/07/17(水) 10:31:43.54
>>817 ピラフが教えてあげちゃう。
こんな感じ。
Dim row
For row = 1 To 256
If Cells(row, 1).Value = "" Then
Exit For
Else
Dim column
For column = 1 To 256 Step 10
If Cells(row, column).Value = "" Then
Exit For
Else
Cells(row, column).Formula = "hoge"
End If
Next
End If
Next
823 :
ピラフ :2013/07/17(水) 10:51:02.72
>>822 For文やIf文でネストするなとでもいうつもりでしょうか?
可読性下がって保守しづらくなるばかりだと思いますが?ピラフ的にはそう思いますが!!
256とかどっから出てきた数字なんだ つか相手にしちゃいけない奴のにおいがするな
825 :
ピラフ :2013/07/17(水) 11:52:52.97
>>824 256というのはピラフの頭脳から出てきた数字。
別になんでも良かったんだが、きりのいいところで適当に選んだ。
ピラフはそういう決断力を持ってる。256で足りなければ65536でもいいし、
Rows.Countでもいい。その辺は質問者の環境に合わせて適当に書きかえればいい。
テンプレにも書いてあるとおり質問者はプログラマーであることが前提となってるわけだから、
その辺は適当に対処できる能力を有するものと考えて差し支えないものと思われる。
ピラフは256という数字でいいがかりをつけたお前を心底頭の悪いやつだと思ってる。
マジックナンバー使うなっていうプログラミングの基礎事項があるわけなんだが まあ、やっぱり相手にしちゃいけない奴だったようだから以後無視することにするわ
ピラフちゃん好きだよ
828 :
ピラフ :2013/07/17(水) 12:30:17.58
>>826 書き逃げw ダッセwww
書き換えればいいじゃねえか。マジックナンバが嫌なら。
質問とは関係ないがな。お前どうせ回答できねえだろ。
無視するとかカッコつけてるが、答えられないだけだろ。みんな気付いてるよ。
書き換えが必要なものなど埋め込むな、って趣旨の話であることを理解できない奴w
>>821 範囲がわからないときは、とりあえずcurrentregion使っとけ
831 :
ピラフ :2013/07/17(水) 13:12:18.37
>>829 それが嫌なら嫌だと思った奴がやらなきゃいい。
それくらい自分で判断してできるだろ。お前はピラフからいちいち指示されなきゃ
できない3歳児なのか?テンプレに書いてあるプログラマは他人から質問と関係ないような
細かいことまでピラフから指図されなければできない奴のことを言ってるんじゃないんだよ。
質問に回答してないやつがくだらない揚げ足取りしてんじゃねえよ。ピラフぶち切れんぞ。お前もピラフぶち切れさせたくないだろ?
ピラフが世界最強の殺し屋だったらピラフはお前を一撃で殺害してやってるところだわ。
暴れるな
またパイパンか。
834 :
ピラフ :2013/07/17(水) 13:15:32.71
>>830 それはピラフに言うことじゃない。質問者に言うことだ。こっちの方がいいよと
お前が質問者に全力で示せばいい。ピラフは関係ない。
白白と二大巨頭になりそうな余寒
どうみても同一じんぶt
なんでコイツときどき発狂するんだろう?
839 :
ピラフ :2013/07/17(水) 13:40:59.55
>>838 ピラフ今日初めてここに書き込んだからときどきというのは
間違ってると思うけど、ピラフは嘆かわしいよ。こんな書き込みしかなかったんだよ。。。
1年前は2〜3人技術力のあるすてきな人がいたと思うんだけど。
818 :デフォルトの名無しさん [↓] :2013/07/17(水) 02:32:53.96
>>817 それをそのままコードにすれば良いだけじゃん
819 :デフォルトの名無しさん [↓] :2013/07/17(水) 02:45:35.83
>>817 forかwhile内でif置くだけの簡単な処理です
要件の規模によっては手でやれよってなる
820 :デフォルトの名無しさん [↓] :2013/07/17(水) 04:31:34.83
>>817 どこまでコードができてるの?
コードができていないというのは論外だけど。
>>839 818 819 820
>>817 の論点の絞れない質問に対しては皆まともな回答じゃん。
中でも
>>820 どこまでコードができてるの?
が一番適切だろう。これに質問者が答えてようやく回答の方向が見つかるレベル。
現状でコードを書くならピラちゃんの
>>821 こんな感じ が限度じゃない。
「こんな感じ」のヒントコードに文句をつけている人は単なるクレーマにしか見えない。
クレーマより白白みたいに質問者の意図を考慮しない自己満足コードを張り付けて「どうだ」
と開きなおっているほうがまだましな。
841 :
ピラフ :2013/07/17(水) 14:44:47.98
>>840 Aする方法を知りたい。
817
Aすればいい。
819
Aしなくていい。
820
俺は論外。
ピラフ
こうすればいいよ。
正常なのはピラフだけ。
842 :
ピラフ :2013/07/17(水) 14:51:13.86
結局お前ら情報を小出しにして質問者に偉そうな態度とって 優越感に浸りたいだけなんだよな。だからピラフがふつうの良識ある回答する とがたがた難癖つけて怒る。かわいそう!ピラフかわいそう!!
843 :
ピラフ :2013/07/17(水) 14:59:27.18
マルチポストすんなとか後出しすんなとか質問者には偉そうに言うくせに 回答者はあっちこっちで同じような回答したり、情報を後出ししたり平気でやる。 回答者のモラルが崩壊している。ピラフはこのスレで回答者のモラルを 取り戻すために頑張りたい。それがこの落ちぶれたスレのためになると思う。 応援よろしくお願いします。
糞コード貼り付けて 「これを使いたまえ」 全然正常じゃない。
突っ込まれて自分で書き換えろとかいうコード書いてるレベルで何を言ってんだか
847 :
ピラフ :2013/07/17(水) 15:18:49.73
>>844 ちがうよ!ぜんぜんちがうよ!!
ピラフという名前が高貴さを感じさせるからピラフを貴族だと
思ったのかもしれないけれども、ピラフは使いたまえなんて言えるほど貴族じゃないよ。
ピラフという名前はピラフがまだお母さんのお腹の中にいるときに
おばあちゃんが食べ物のピラフのように熱いハートを持ってピラフの味のように
人々をほっこりさせるような人になってほしいというそういう優しいおばあちゃんの
思いが込められたものなんだよ。ピラフは大好きなおばあちゃんに誓っていうけど、ぜんぜん違うよ。
848 :
ピラフ :2013/07/17(水) 15:27:37.99
>>845 マジックナンバは突っ込みどころ間違ってると思うんだー。
だからマジックナンバ嫌な人はマジックナンバを自分で書き換えたまえ。
大丈夫。ピラフちゃんは正しい。
おいパイパン、マジでいい加減にしろ
851 :
デフォルトの名無しさん :2013/07/17(水) 15:48:23.78
■ 的確で親切な説明 → 桃白白 ・ ピラフ
これだけ突っ込まれて的確で親切だって言い張れる心臓には感服するわ
だからといって、模範解答を出すわけでもない
855 :
ピラフ :2013/07/17(水) 16:42:53.44
>>854 ほとんどピラフじゃん。なにそれ意味わかんない。ピラフゴミじゃないし!!
>>853 そもそも「10行おき」ってstep 10なのか?みたいな曖昧な質問だから、模範解答も糞も無い。
step 11なんじゃないかとも思ったりするが、答えるつもりも無いんでどうでもいい。
10行おきじゃなくて、10個おきだからなぁ A1からA10までの計算式セットをA11からA20まで、A21からA30まで ってやりたいんじゃないかと思ったり
もう質問内容について質問者不在であーだこーだ言うのやめね?
859 :
ピラフ :2013/07/17(水) 19:23:27.40
>>858 回答者が議論することで読解力を身につけるいい機会だと思うよ。ピラフ的には問題ないと思うよ。
ポジティブだねぇ
>>821 は
>>817 の要件に合いそうな箇所が
Cells(row, column).Formula = "hoge"
しかなくておじさん辛い。
質問者「
>>821 さんので試したところ、なにも起きませんwwwww」
>>821 「読み解いて適宜修正しろや!シネカス!」
他「プークスクス」
ファクトリパターンと言うのがどういうのかわかりません。 誰かVBAでちょろっと説明して下さい。
ものすごく説明が下手くそなんで、意味が解らなかったらごめんなさい。 sumifsとかcountifsの文字列結合版のユーザー関数(catifs)を作ってみました。 引数はほぼsumifsとかcountifsと同じで、違いはデリミタを指定できる点ぐらい。 =catifs(結合範囲, デリミタ, 条件範囲1, 条件1, 条件範囲2, 条件2...) 一応期待通りの動きはしてるんですが、各条件範囲をぶっこんだVariant型配列(仮にCriteriaRanges)の呼び出しが重い。 このCriteriaRangesは、条件範囲(Range型)を代入したVariant型の配列をさらに、 CriteriaRanges(0)に条件1の条件範囲、CriteriaRanges(1)に条件2の条件範囲・・・となるようまとめた代物です。 (ex.CriteriaRanges(3)(5, 1)で「条件4の条件範囲の、上から5番目の左端のセルの値」にアクセスできます) 試しにこの数式を200行くらにい貼り付けると、30秒近く画面が固まったままになります。 やっぱりこの配列が原因なんでしょうか? また、より高速に処理する方法はないでしょうか?
セルに関数を設定しなけりゃいいんじゃないの
>>863 ○○とはでググれば一番最初に丁寧な概念解説がでてくるじゃん。
Excel実装例でいったら、OSやMSの版によってオブジェクトの有無や違いがある場合に、版を取得・判断し、必要とするオブジェクトを返す。とか。
HTTP通信関係のオブジェクトの、MSXMLだかなんとかSERVERなんかで、OBJECTの版数(x.x)が端末によって違いがあって、create→onerrorで探す・・・あ、これはエラー回避処理か。
>>864 ソースはよ
1,000まで
>>864 のブラッシュアップで遊ぼうぜ
ユーザー定義関数をいっぱい貼ると重くなるのは仕様なんじゃないの?
検証してみたいけど、自分で一から書くのは面倒だもんなあ 人の書いたソースをいじった方が楽だし
クソ重くなるよ(実体験)
単にオプションの計算方法を手動に設定すれば早くなったりして。
計算中は再計算を無効化するとか
>>864 セルへのアクセスは遅いってのは定説
セル範囲で受け取ったら、セル範囲の値を配列に入れてから使えよ
これ以上はソースさらせ
質問です。 セルP2にセルG4の文字列"20130718"を .Range("P2").value = Mid(.Range("G4"), 5, 2) & "/" & Right(.Range("G4"), 2) の様に変換して入力し、セルの書式設定で"dd"として日付のみ表示しています。 (数式バーには 2013/7/18 と表示されています) これをセルQ2に=P2+1と数式を入れ行方向にオートフィルしています。 G列にはG4の様な8桁の数字(日付)が入力されているので このオートフィルした範囲をG列の各セルをキーワードとして検索したいのですか Findでヒットしません。 ちなみに I = .Range("Q2").value とするとローカルウィンドウには"2013/07/18" と表示されます。 下手な説明で申し訳ありませんが、このような場合どうしたら検出来るようになりますか?
>>873 とりあえずそのヒットしないって言うFindのとこさらせ
あとオートフィルした所は結局どんな値か式が入ってるんだ?
どうせ検索元と検索対象で型が違うだけだろ。日付を文字で検索してるかその逆か
>>873 GとQをtypenameで確認
Gが数値でQが日付なんだろう
それにしても読みにくいな
説明が云々を免罪符にせず
100回読み直して添削してよ
>>874 Dim lRow As Long
Dim r As Integer, s As String
Dim Obj As Range
With Worksheets("データ")
.Range("P2").value = Mid(.Range("G4"), 5, 2) & "/" & Right(.Range("G4"), 2)
lRow = .Cells(Rows.Count, 1).End(xlUp).Row
For r = 4 To lRow
s = Cells(r, 7).value
s = Right(s, 2)
Set Obj = .Range("P2:CU2").Find(s, SearchOrder:=xlByRows)
If Obj Is Nothing Then
MsgBox "データが見つかりませんでした。"
Else
Obj.Select
End If
です。
この状態で最初のP2は検索にヒットしますが、
s = Mid(s, 5, 2) & "/" & Right(s, 2)
とするとP2もヒットしなくなります。
オートフィルした所は左隣りのセル+1としてします(Q2なら=P2+1,R2ならQ2+1)
>>875 確認した所P2,Q2ともDateでした。
おっしゃる通りで申し訳ない。
>>876 みんなが指摘しているように検索キーと対象の型があっていないだけでしょう
特に日付型の場合はFormatを完全に合わせないと検索できないよ
s = Mid(s, 5, 2) & "/" & Right(s, 2) '見かけ上の日付型を
s = Format(s, .Range("P2").NumberFormat) 'Range("P2")の型に合わせる
で試してみて
>>876 張るならちゃんとしたコード張れよ
NextもEnd Withも無いじゃないか
検索の初期値は数式で検索だから、値で検索しろよ
Findの引数にLookIn:=xlValues追加するだけだ
>>877 アドバイス通り試しましたが、"20130521"で検索したのに対し、
Obj.Selectしたのは6/21のセルとなり、
また、"20130625"で検索をするとObj.Selectしたのは5/25のセルとなり、
望んだ結果通りにはなりませんでした。
>>878 コードのコピペミスすみません。
LookIn:=xlValuesを追加して試したのですが、
同じように違う月の日付が検索結果として出てきました。
お二人のアドバイスを両方組み合わせたり、
s = Left(s, 4) & "/" & Mid(s, 5, 2) & "/" & Right(s, 2)
s = Format(s, .Range("P2").NumberFormat)
としたりしてみたのですがどうも思うような結果になりません。
どうしたらいいでしょうか?
>>879 s = Cells(r, 7).value
s = Right(s, 2)
検索してるのは日付だけなんだから、違う付きの日付が検索されるのは正常だろうが
何がやりたいんだよお前
>>880 それに気づき、879にも書いたように
s = Left(s, 4) & "/" & Mid(s, 5, 2) & "/" & Right(s, 2)
でもためしましたが、だめでした。
Dim I As Variant I = .Range("Q2").value とし、せるQ2を確認するとDate型で#2013/05/22# となっていました。 これに検索キーワードの型を合わせたいのですが、 Dim s1 As Date s = Cells(r, 7).value s1 = Format(s, Date) としても型が合わないと実行時エラーが出ます。 どう修正したらいいでしょうか?
>>881 >セルの書式設定で"dd"として日付のみ表示しています。
を見落としていたわ
日付だけで月の違うデータが混在する表にどんな意味があるのか想像できないが
セルの表示 01,02,・・・01,02・・・
(セルの値 2013/05/01,2013/0502,・・・2013/06/01,2013/06/02・・・)
こんな表で 2013/06/01 のセルの場所を見つけたいってことだろう
見つかったセルのValueが[2013/06/01]かどうか判定する
(参考)FindのHelpをそのままコピペ、Doの中に判定文
Set c = .Find(s, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
If c.value = "2013/06/01" Then
おおあたり
Exit Do
End If
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
>>882 当然でしょう
Date はFormat関数に使用する表示書式指定文字ではありません。
日付型にを変換したいのなら yyyy/mm/dd の文字列にしてから CDate
但し、検索に使うならあまり意味はないよ。合わせるのは Format ね。
>>882 だから何がしたいんだ?
計算式で日付計算して日しか表示してないのに、年月日で検索したいのか?
.Findでやりたいなら
計算式やめるか、日しか表示してないのを年月日まで表示する
.Findでなくてもいいなら
自分でループしてチェックする
どっちかでやれ
886 :
882 :2013/07/19(金) 23:50:12.28
皆さんのアドバイスを参考に試行錯誤しましたが
なかなか思うようになりません。
やりたいことはガントチャートを作ろうとしていて
出来るだけページの横幅を抑えたいので
日付は1行目に月、2行目に日を表示してセルの幅を最小限に抑えようとしています。
材入り日をキーワードとし、P2から横方向に検索し、該当セルに色付けをしたいのです。
該当部のみ抽出したサンプルをupしました
よろしければ一度確認してみてください。
http://www1.axfc.net/uploader/so/2969597 DL Key tesu
SYORI1にFindで SYORI2にループでやろうとしていますが
どちらも失敗に終わっています。
>>883 さんのも試しましたが、
If Not c Is Nothing Then
ですぐにEnd IFになりました。
書きかけのコードで見にくいと思いますが、お力をお貸しいただけると助かります。
887 :
ピラフ :2013/07/20(土) 00:00:28.60
>>886 ナイスアップロード!ピラフも見ちゃう。
あとはピラフに任せようず
890 :
ピラフ :2013/07/20(土) 00:44:41.68
>>888 ぇ・・・。
日付の検索は厄介だって田中さんも言ってた。
891 :
ピラフ :2013/07/20(土) 01:13:48.47
>>886 じつはピラフ、エクセル持ってなくてLibreOfficeで確認してるんだけど。
SearchOrderをxlByColumnsにしたら検索できた。
いいキャラだねぇ
893 :
ピラフ :2013/07/20(土) 01:23:17.89
>>886 SYORI2は
If .Cells(r, 7).value = .Cells(2, a).value Then
これを
If s1 = .Cells(2, a).Value Then
にしたら検索できた。
>>886 いやガントチャートとか材料入り日とかそんなのどうでもいいから
エクセルブックとか怖くてダウンロードとか出来ねえわ
.Findでやりたいなら
計算式やめるか、日しか表示してないのを年月日まで表示する
.Findでなくてもいいなら
自分でループしてチェックする
どっちか選べよ
>>886 >If Not c Is Nothing ThenですぐにEnd IFになりました。
アホか
対象が見つかったらDoで回せというコードだから見つから無ければそのまま終了だろう
例でいうと 01が表示されているセルがいくつか見つかったらそのうちどれが正しいか判定するものだ
ヒットしたセルのValueを調べて事前に用意した正しいValueと比較-同じなら正解-違っていれば次を検索
>>879 のようにddにはヒットするが対象が違うというコードの中に組み込んで初めて機能する
Helpもよく読め。
>日付は1行目に月、2行目に日を表示して
表を変えてよいのなら別の手もある
1行目に"yyyy/mm/dd"、2行目に月、3行目を日にして1行目を見た目非表示にする。
1行目を検索対象にして2行目、3行目の表示も1行目を参照。
これならセルの表示形式に惑わされることもない。
896 :
デフォルトの名無しさん :2013/07/20(土) 08:52:47.52
>>886 >>894 は滅茶苦茶斜め上から目線で気に食わないけど言ってる事は正しいな。
対処方法としてはぱっと見て3つ位思い付くけど、
一つ目は
>>893 が言ってる様に、G列のセルから取得した値をDate型に変換して
シリアル値として比較する方法。
二つ目は逆に2行目の日付セルから取得した値を文字列型に変換して
文字列として比較する方法。
三つ目は隠し行を仕込んでおいて、そこに2列目に相対する年月日を書いておいて
それと比較する方法。
まぁこんなところか。
なんだ被ったな。実際には
>>893 の方法が一番今のコードから直すのに楽だし
変なものシートに仕込まなくていいから現実的かな。
横方向に日付が+1されていくだけなら、検索したい日付と基準日の差をとれば いちいちセルの値チェックしなくても横位置は解る まあ俺なら多分そうする。要件次第だけど
ExcelにactiveXコントロールのコマンドボタン作って、それをクリックしたら起こるイベント CommandButton1_Click()を作りました 次にフォームを作り、そのフォーム上にactiveXコントロールのコマンドボタン作って、それをクリックしたら起こるイベント CommandButtonForm_Click()を作りました そのCommandButtonForm_Click()イベント時にCommandButton1_Click()の動作を行いたいのですが、どうすればいいのでしょう フォームのコードのsub CommandButtonForm_Click()に CommandButton1_Click Call CommandButton1_Click Sheet1.CommandButton1_Click Call CommandButton1_Click を入れてもエラーが起きてしまいます。
>>899 多分、Sheet1.CommandButton1_ClickがPrivateになってる
Publicにすれば呼び出せるけど、つくりとしてはお勧めじゃない
CommandButton1_Clickで処理する内容をPublicな別プロシジャーに書きだして
それを両方から呼ぶのが正当派なつくり
901 :
882 :2013/07/20(土) 19:00:23.42
893さんの方法で上手くいったので For r = 4 To lRow s = Cells(r, 7).value s = Left(s, 4) & "/" & Mid(s, 5, 2) & "/" & Right(s, 2) s1 = CDate(s) For a = 16 To lColumn If s1 = .Cells(2, a).value Then .Cells(2, a).Select MsgBox "あたり" Exit For End If Next a Next r で行こうと思います。 皆さんありがとうございました。
903 :
864 :2013/07/20(土) 19:38:54.00
返事が遅くなってすみません。 皆様アドバイスありがとうございました。 いただいたアドバイスを元にあれこれ検証したところ、 30秒かかったものが10秒程度まで縮めることができました。 このまま自力での解決を試みてみます。 ソース公開の声もあるようですが、 例外処理も何もなっていない糞コードですのでご勘弁下さい。
可視セルのみ5セル色を変えたくてこの様なコードを組んだのですが、 Range(Cells(5, 3), Cells(5, 3).Offset(0, 5)).SpecialCells(xlCellTypeVisible).Select Selection.Interior.ColorIndex = 5 これを仮に3列列非表示にしてためすと、非表示セルは塗りつぶしされませんが、 可視セルも3個しか塗りつぶしされません。 非表示セルに関係なく可視セルのみ6セル分塗りつぶしたい場合は どのようにしたらいいでしょうか?
>>904 Loopして可視セルだけ塗る
案1、順に可視セルか否かを判断して可視セルなら塗る。6個塗ったら終了
案2、対象範囲のSpecialCells(xlCellTypeVisible)をFor Eachで6個だけ塗る
余計なお世話だが元コードもなんだかなー
Range(Cells(5, 3), Cells(5, 3).Offset(0, 5)).SpecialCells(xlCellTypeVisible).Select
Selection.Interior.ColorIndex = 5
↓
Cells(5, 3).Resize(, 6).SpecialCells(xlCellTypeVisible).Interior.ColorIndex = 5
>>905 ありがとうございます。
コードもスッキリしました。
2008/07/18 こちらのサイトで、有償でのVBAを相談しましたところ 親切な方に組んで頂きました。 (あの時は感動しました。ありがとうございました!) 実はまた、ちょっと検証したいことがあり VBA(有償)をお願いしたかったのですが その後、お約束通り、やり取りしたメールや振込先銀行口座等 一切の記録を破棄してしまい連絡の取りようがありません。 もしよかったらまたお願いしたかったのですが・・。 メールお待ちしております。どうぞ宜しくお願い致します。
当時、こんな感じでお願いしました・・。
458 : デフォルトの名無しさん[
[email protected] ] 投稿日:2008/07/18(金) 00:30:09
かなりなスレ違いお許し下さい
過去の株価をVBAで検証したいのですがスキル不足です。
検証の内容は、ごく単純なもので恐らく数十分ほどで組めるのではないかと思われます。
(検証条件=システムは、恥ずかしい位、幼稚なものです。期待なさらないで下さい。
特別な秘密など有したものではありません・・)
どなたか有償でVBAを組んで頂けませんでしょうか。
909 :
ピラフ :2013/07/22(月) 20:50:54.12
>>908 質問書いちゃったら?
ただでやる人がいるかもよ?
910 :
908 :2013/07/22(月) 21:00:26.32
説明書いたらたぶんすごく長くなるかと・・ 単純な検証だとはおもうんですけど・・ トレードに関わっている人なら簡単な説明でわかるかなぁ
911 :
ピラフ :2013/07/22(月) 21:01:36.39
>>912 さん
ありがと!
ある程度待ってみてコンタクト取れなかったらクラウドソーシング考えてみます。
>>912 どんなものかと覗いてみたけど、時給1500〜のプロジェクトに複数応募があったりして
暗い気持ちになった。
需要と供給が合致してるんだから、第三者がとやかく言うなと言われれば、何も言えないんだけどさ・・・
915 :
908 :2013/07/24(水) 23:09:20.29
たびたびすみません コンタクト無理そうなので クラウドソーシングに頼もうと思って今みてみましたが 登録その他諸々メンドそう・・ どなたかやって頂ける方いらっしゃいませんでしょうか たぶんそれほど難しいものではないかと(たぶんですけど) 金額は、8000円位で考えております。 小額のお金で恨みを買ったりして 後々まで気分悪く過ごすの絶対イヤなので お約束の金額は必ず(即日で)お支払致します。 メールお待ちしてます!(スレチごめんなさい・・
917 :
908 :2013/07/25(木) 01:03:51.50
>>916 ありがとうございます!
本メールから送信致しました。
ご検討どうぞ宜しくお願い致します。
誰も何も言わないけど、
これってモロに
>>1 ★5なんじゃないのか。
それ以前に2ちゃんでこう言うやり取りが許されるのか知らんけど。
だからメールでやってるんじゃないの?
1つのBookに30〜60くらいのシートがある シートには中身の概要として2文字〜6文字くらいで名前を併記している 例えば、「富士山・葡萄・山梨・メロン・リンゴジュース・・・・」(名前は「・」で区分し、全文字数はMAX15文字) ただしシートは期毎に追加しているため、複数のシートに同名、例えば「富士山」を記入している シート中身を見れば作成年月が解るので同じ「富士山」を含むシートを見ても違いは判別できる やりたいこと シート数が多すぎるため見たいシートを見つけるのに手間が掛かりすぎる 入力ダイアグラムを表示させ、例えば「富士山」と入力し「OK」すると、富士山を含むシートがアクティブになる 内容を確認して、時期が違う、つまり別のシートを検索したいときは「NEXT]ボタンをクリックすると 次のシートを検索しアクティブになる、を繰り返す ということをExcel VBAマクロで組みたいのですがどうやればいいのでしょうか?
>>921 まずはどこまでできたのかコード教えて。
コード作成依頼はここじゃできないよ。
>>1 ★5
VBAわからないの?わからないなら目次用シートを作ってbook内にハイパーリンクすればいいよ。 シートの追加・更新・対象年月日とかを併記すれば一発だよ。 全部のシートに目次用シートへのハイパーリンクを置けばよりいいでしょう。 もっと言うとシート名を年月日とかにして概要はシートのどこかに書けばいいよ。 エクセルの検索機能を使えば当初の目的も果たせるようになるだろうし。 とりあえずそのbookを作った人にきれいに構造化しろよバーカって言っていいよ。
一応出来たので 入力ダイアグラムで検索文字列を入力 ↓ ブック内のシート名を順に抽出 ↓ シート名から文字列検索 ↓ 該当があったらMSGボックス表示とシートのアクチベート ↓ MSGボックスのOKボタンで次を検索 ここまで出来たんだけど該当シートをアクチベートしたところで一旦停止して つまりMSGボックスではなく、シートが操作できる状態にする その後、シート内を確認して 検索再開して次のーシートを検索 ↑ この部分はどうやったらいいのかな?
エクセルを捨てよ さすれば道は開かれん
>>924 入力ダイアグラムってなんのことだ? InputBox? まあ、それは置いといて
一旦停止して「シートが操作できる状態」を実現したいのならユーザーフォームをモードレスで
使うことを検討してみたらどうかな
またはSheets(1)をコントロールを張り付けた操作専用シートにして常に表示しておくとか
ダイアログのことだと思う
バイアグラのことだと思う
>>924 検索ワードをスタティックで保持しといて
msgboxはOK、キャンセルで分ければ
マクロのショートカットキー登録か
専用のボタンをシートに作るかツールバーに作るか
930 :
デフォルトの名無しさん :2013/07/30(火) 12:38:49.90
>>921 ・検索用シートを別に作って、検索用ワードを入れるセルとマクロのボタンを用意
・他の全シートに、検索用シートへのリンクを用意 (セル・ボタンなど)
・ボタンを押すと、全シート名を検索して、該当するシート名をリンク付きで表示 <- マクロ作るのここだけ
・該当シートに行って内容を確認 〜 違ってたら検索用シートに戻る、を繰り返す
でどう?
931 :
デフォルトの名無しさん :2013/07/30(火) 12:41:38.19
>>924 ActiveSheet.Index + 1から検索すればいい
Public Type complex x As Double y As Double End Type Function Cmul(z1 As complex, z2 As complex) As complex Cmul.x = z1.x * z2.x - z1.y * z2.y Cmul.y = z1.y * z2.x + z1.x * z2.y End Function Cmulを使うとby ref 引数の型が一致しませんと表示されます。 そこで Function Cmul(ByVal z1 As complex,ByVal z2 As complex) As complex と書くと ユーザー定義型をbyvalで渡すことはできません と表示されます。 どうすればいいでしょうか。 excelのバージョンは2010です。
>>932 excel2002では普通に動くけど。
Cmulをコールしているコードはなんて書いてあるのかな?
>>932 Cmul()に渡す方の引数を定義するときに型を明示する。
Dim c1 as complex
Dim c2 as complex
935 :
932 :2013/07/31(水) 16:59:59.16
>>933-934 レスありがとうございます。
動かなかった原因はそこじゃなくて
public a,b,c as complex
Function aa()
a=Cmul(b,c)
End Function
みたいな感じで使ってたのですが
public a as complex
public b as complex
public c as complex
みたいな感じで宣言すれば大丈夫でした。
変数の宣言ってまとめるとダメなんですね。
>>935 型は変数1個ごとに書く
Public a As Complex, b As Complex, c As Complex
なら大丈夫
937 :
932 :2013/08/01(木) 00:15:41.32
>>936 ありがとうございます。
そうやって書くんですね。
938 :
デフォルトの名無しさん :2013/08/01(木) 19:31:48.28
age
WINXPsp3 エクセル2007です エクセルVBAでOSの操作って出来ますか? やりたいのは 「タスクバーを固定する」を解除 タスクバーの高さが1倍の時は2倍に、2倍の時は1倍にする タスクバーを固定する です 検索してもエクセル自身の設定を変更するマクロしか出てこないんです
VBAでもWin32API呼び出せるみたいだから できるんじゃないかな
>>939 VBA:Visual Basic for Applications Excel VBA : Excel用のVisual Basic(VB6)
よってVB6でできることはほとんどできる(そのままコピペではだめな部分も多いがたいてい抜け道はある)
タスクバー・・・Win32 API を駆使することになると思うので限りなくスレチに近い。
「VB6 タスクバー 高さ 取得」あたりでググれ。
942 :
939 :2013/08/05(月) 23:27:33.31
945 :
デフォルトの名無しさん :2013/08/06(火) 10:28:06.59
安達祐実がヌードになりましたが中途半端。 あそこまでやるならマンコやケツの穴まで見せるべきでは? VBAでなんとかなりませんか?
スクロールバーを操作するとリンクセルの数値が変化しますが 操作と同時にその数値を使ってマクロで計算をさせたいのですが スクロールバー操作→連動してマクロ実行 ってどうやればいいですか?
自己解決しました、すんまそん
948 :
デフォルトの名無しさん :2013/08/09(金) 00:00:27.26
stconv関数で、数列を標準→数値にする方法はありますか?
OSはWindowsXP、Excel2003です。 セルの文頭に「'」(シングルクォーテーション)がある場合、 データとしては「'」が見えるのに、 表示自体はされないってことがあるかと思います。 例) データ:'○○○〜 表示:○○○〜 VBAでこの「'」があるかどうかを判断したいのですが、 表示されたデータを取得する方法しかわからず困っています。 文頭に「'」がついているかどうか判断する方法はありますでしょうか?
VBAを使ってモザイク図を作れるようになりたいのですが、 何からはじめればよいでしょうか? ソースから勉強した方が早いでしょうか?
>>949 Range.PrefixCharacter
>>951 ありがとうございます!
おー、なんてこった!
数日悩んでいたのにあっさり解決するとは!
シングルクォーテーションではなく、接頭辞で検索すればすぐ出てきたみたいですね。
検索の仕方が悪かったみたいです。
ともかくありがとうございます。
IE10へのupdateに伴ってIEがきちんとしたタイミングでBusyを返さなくなった(と思う)。 突然全てのプログラムでエラーが出現。 vbaでIE呼出 ↓ ページ読み込み(URLへ飛ばし) ↓ vbaでフォーム入力(ラジオボタンクリックでも)の箇所でエラー ページ読み込みの後ウェイトをかけると解決するという特徴から 恐らくIEがページを読み込みきれていない 自動update辛い …
954 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/08/11(日) 02:06:31.77
>>950 画像処理。各区間の画素を平均化して塗りつぶす
>>953 なんでそれをここのスレに書こうと思ったんだろ
>>953 Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.application")
objIE.Navigate " URL "
Do While objIE.Busy = True
DoEvents
Loop
Do While objIE.ReadyState <> 4
DoEvents
Loop
これでも、アカンか?
>>953 そうなるだろうからIEとか全力拒否&責任が及ばないように予防線張るでしょ
普通の人なら
M$を少しでも信頼したら負け
それでもAppleとかgoogleよりは信用できるけどな 叩かれて育っただけあって
IE10は裏でキャッシュの整理をするようになった タスマネ見てると窓を閉じたあとでも5秒から10秒ぐらいプロセスが動き続けてる おかげでIEオブジェクトの生成のところで失敗する
それは設定次第 IE5とか、たぶんもっと前のでもその機能あるよ
テンプレ読め 優先度でソートをマクロ記録すればできるだろ
「考え中」にクスっとした
IE6とか使ってる情弱まだいるのか
968 :
デフォルトの名無しさん :2013/08/13(火) 01:40:49.47
「情弱」「誰得」「ステマ」みたいなキモい言葉を使うな。
IE6じゃないと動かないシステムがまだ多いから仕方ない
大きな企業ならなおさらその傾向にあるから
>>967 はニートか学生か底辺サラリーマンなんだろうと思うよ
>>963 VBAを組むってレベルじゃないだろ
表の下限を調べて範囲指定してソートで終わり
>>967 使ってるというか、環境としては用意してあるよ
Win98やExcel95もね
作った物を売る前には、相手先と同じバージョンでの動作確認は必須だから
過去の資産にしがみつくと結局高くつくんだよな なぜ連中はわからないのか
> 過去の資産にしがみつくと結局高くつく が間違いだと知っているからだよ 個人と企業では違うからな まあ限度はあるけどね
企業レベルの話じゃなくて国レベルの話ね お偉いさんがケチケチしてエンジニアに古いシステムの保守ばかりさせるから新人が育たない
それも勘違いだけどね
・IE10で所定のwebページを開く ・所定のダウンロード用ボタンをクリックする ←ここまではExcelVBAでわりと簡単にできる ・画面の下の方に 「ファイルを開く」「保存▼」「キャンセル」 の選択が出る ・「保存▼」の▼を押して「名前を付けて保存」をクリックする ←ここをExcelVBAでやる方法がわからない IE6だったらsendkeyとかでサクッとできてしまうんだろうけど IE10だとググっても「無理」とか「面倒」とか「VBAを使うな」とか出てきて有効な方法がよくわかりません。 どうやったらよいとか、何を調べたらよいとか、なにかアドバイスはありますでしょうか?
直接HTTPでgetしろよ
直接HTTPではgetできないファイルなんです
981 :
デフォルトの名無しさん :2013/08/13(火) 11:01:03.33
フィルターがかかったり非表示のため、見えないセルがある領域から 同じくフィルターがかかったり非表示のため、見えないセルがある領域へ 値をコピーするためのコードを教えてケロ。
982 :
981 :2013/08/13(火) 11:01:41.85
当然、見えないセルの値はそのまま変更しちゃダメ。
>>980 ftpか?なら、直接ftpでダウンロードしろよ
985 :
981 :2013/08/13(火) 12:06:05.74
986 :
978 :2013/08/13(火) 12:10:44.98
>>983 直接ダウンロードも試みましたが、以下のいずれかのパターンで今のところ出来ていません。
何かやりようがあるのかも知れませんが。
・ログイン認証が必要なサイトなので、直接ダウンロードしようとしても
なんらかのガードがかかっているようで、ダウンロードされないパターン。
(ログイン認証が不要なサイトでは、同様のコードで直接ダウンロードに
成功してるので、サイト側のガードの問題かと)
・そもそも直接ダウンロードするためのURLが不明で、ソースにもなく、
探れないパターン。
>>986 やりようがなきゃブラウザでダウンロードできるわけ無いだろ
ちょっとは頭使えよ
988 :
978 :2013/08/13(火) 12:55:56.75
>>978 に書いた手順で、ブラウザ上で手動ではダウンロード出来ますよね。
それをどうやってVBAで行えばいいのか・・・
具体的に、どのように頭を使えばいいんでしょうか?
>>988 まず、ブラウザがどうやってダウンロードしてるか調べろよ
990 :
978 :2013/08/13(火) 13:18:31.39
ごめんなさい、どうやって調べればいいですか? ググるヒントとかもらえますか?
Firefox -> Firebug Chrome -> デベロッパーツール
Firefoxは素の開発ツールでもいけるか
993 :
978 :2013/08/13(火) 13:27:35.03
ありがとうございます。ちょっとあれこれ読んでみます。
ちなみに、ブラウザ上で普通にダウンロードボタンを見ても、そのボタン画像のURLぐらいしか分からないですよね?
>>989 の書き方だと、公開されている普通のwebページからftpサーバ名なりを探るノウハウがありそうに読めたのですが、
この理解は見当違いですか? 見当違いだったらすみません。
>>993 WebProg板で具体的なURLを示して、コードでダウンロードを実行できるか聞いてこい。
既にスレ違いだ。
995 :
978 :2013/08/13(火) 13:51:04.10
いろいろありがとうございます。
そもそも発端はVBAに関する質問だったので、引き続き
>>978 についてもお願いします。
>>995 >>1 > ★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
997 :
978 :2013/08/13(火) 14:02:56.55
了解です。 つい、スレの流れにつられて書き込んじゃってました。完全スレ違いでごめんなさい。 スレ違いにも関わらず相手して頂いてありがとうございました。
ume
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。