1 :
デフォルトの名無しさん :
2013/10/07(月) 22:15:17.66
コード作成依頼スレです。
似たようなスレ立てんなや
このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
5 :
デフォルトの名無しさん :2013/10/08(火) 06:04:33.40
>>2 ちがいます。ここは質問スレです。
依頼だなんだというくだらない論争をやめましょうよ。
7 :
デフォルトの名無しさん :2013/10/08(火) 06:53:07.94
>>6 そんなこと言ってません。
勝手なこといわないでください。あなたはご自分のスレからでてこないでくださいよ。
>>7 >>1 の「俺たちに任せろ」は嘘ってことか?
俺たちに任せろと言っておきながら、コード作成にケツ持ちませんなんて無責任なことを言おうとしてるのかな?
9 :
デフォルトの名無しさん :2013/10/08(火) 07:17:15.12
>>8 なんでよそのスレに口出すのですか。スレちがうんだから干渉しないでくれませんか。
書いてあることそれいじょうでもいかでもありませんよ。
新しくスレ立てて勝手にやれみたいなことを言っといて その新しいスレを荒らしに来るんだから立派だよね
>>9-10 そういうことを言うからには本スレには来ないっていう宣言でいいのかな?
★★★★★★★★ ★ 俺たちの掟 ★ ★★★★★★★★ 1.ループカウンタ含め一文字変数は絶対使いません。 2.変数名、プロシージャ名等の名称は適切な名前を付けます。 3.ByRef、ByValは省略しません。 4.最低限のコメントは必ず入れます。 5.エスパーコードは書きません。 6.書いたコードは最後までケツを持ちます。 7.掟に背いたら二度とコードで回答しません。
>>13 ケツを持ちますという言い回しから察するにもうひとつのスレを建てたひとですよね。
再三いいますがスレが違うんだから干渉しないでくださいよ。勝手なルールを持ち込まないでください。
あなたの身勝手なルールとあなたとのくだらない論争がいやだからこのスレを建てたんです。出てってください。
すまん誤爆
結局ここに落ち着いたのか
18 :
デフォルトの名無しさん :2013/10/15(火) 06:29:16.54
ここが次スレか。 グダグダなテンプレが全て取っ払われてすっきりしたな。
質問です。 VB.Netで使おうと思っているのですが、 一々セルに値を設定するコードを書かなくても、アクティブレポートやクリスタルレポートの様に 一度テンプレートを作ってしまえばデータから一覧をEXCELで作ってくれる ツール?DLLファイル?があったと思うんですけど名前を忘れてしまいました。 誰かご存知の方はいらっしゃいませんか?
>>21 テンプレのどこにも作成依頼スレとは書かれていないしここではテンプレが全て。
むこうは★5や、VB6で使えるオブジェクトのことは書いてはいけないことで
がんじがらめになったのが好きなドMな人用。
使い分けだよね。
>>23 それはテンプレじゃなくてただのレスだよね
同じタイトルで分かり難い 分けるんだったらタイトル考えるべき
うん、次スレ立てるときに考えよう
という訳で、ここはコード許容スレ、 あっちはコード拒否スレと言う住み分けか。 スレタイにも作成依頼なんて一言も書いて無いし、 立てるならちゃんと別スレとしてスレタイにも書いて立てるべきだったな。 ここをコード作成依頼スレとするのはこのスレタイで立った時点でもう手遅れだ。
http://toro.2ch.net/test/read.cgi/tech/1376371376/ ↑から誘導されてきました964です
テーブルに小計を挿入しようと色々調べてみたんですがどうもテーブル状態だと
小計が挿入できないみたいなんで
上のURLを参考に
「"シート2"を開いたときに"シート1"にある"テーブル1"を"シート2"に
テーブルじゃない状態で貼付け
貼り付けた表を項目1項目2の優先順位でソートし項目3の小計を入れる」
っていうのをマクロでやりたいんですが
Private Sub Worksheet_Activate()
Dim rngDat As Range
Dim pvtTbl As PivotTable
'データ範囲※
Set rngDat = ThisWorkbook.Sheets("シート1") _
.Range("テーブル1").CurrentRegion
このあと貼付けのとこからほとんどわからないんですがどう書いたらいいか誰かお願いします
ほとんど丸投げ状態の質問ですいません
>>28 本当にソートされた小計を持つ一覧作成のトリガーはシート2を開いた時でいいの?
そうするとそのままだとシート2を開く度に一覧を作ろうとするけど。
>>28 ちょっと待て。
なんか変数にPivotTable切ってあるけど、これは何に使うつもりだったんだ?
コードで議論するんじゃなかったっけ?
なに言ってんだこいつ
34 :
28 :2013/10/15(火) 20:00:41.64
>>29 OKです
>>30 URLのマクロそのまま最初コピペしたようなもんなんでよけいなのはいってるかもです…
複数ある特定の文字を含まないシート名から、a1 ,b1,c1,b1…をSheet1に貼り付けする方法はありませんか? シート名取得はできたのですが不要なシートも取得してしまいます。 よろしくお願いします。
dim targetworksheets as new collection dim r set r = CreateObject("VBScript.RegExp") r.pattern = "[abc]" ' "[複数ある特定の文字]" dim ws as worksheet for each ws in worksheets if not r.test(ws.name) then targetworksheets.add ws end if next
38 :
デフォルトの名無しさん :2013/10/16(水) 10:56:54.06
テキスト文から数字のみ取り出すマクロってありますか。例えば、以下のような文がある時、数字をセルに落としたいです。 例 高さ30mの位置から質量1.0kgの球を鉛直下向きに4.9m/sで投げ下ろした。 高さ=30 質量=1 初速度=4.9 のようにしたいのですが。
>>38 1文字ずつ数字かどうか調べて欲しい部分だけ連結していくしかないです
For 〜 文章の文字数
If 〜 Mid 〜 数字、符号、小数点かどうか
Val 文字列を数値に変換
40 :
720 :2013/10/16(水) 11:40:30.58
前スレの720です。
報告が遅くなりすみません。
教えて頂いた方法を試してみましたが出来ませんでした。
>>722 さんのですが、
対象となるチェックボックスがユーザーフォーム上では無く、
シート上にあります。
(チェックボックスはActiveXのものです)
for eachのところでシート上のチェックボックスを見るようにすれば出来そう、と思い
下記コードを作成してみました。
Dim c As Object
For Each c In Worksheets("Sheet1").OL EObjects
If c.Object.GroupName = "Group1" Then c.Value = False End If Next
しかし、「このプロパティまたはメソッドをサポートしていません」とエラーがでます。
どなたかどこがおかしいか教えて頂いけないでしょうか?
あと
>>721 さんの方法ですが、
上記のようにActiveXのコントロールを使用しているので
グループボックスがありませんでした…。
フォームコントロールを使用する機会があれば試してみます!
長文になってしまいすみません。
よろしくお願いします。
41 :
36 :2013/10/16(水) 11:42:27.02
>>37 ありがとうございます。
For Each ws in worksheetsで
実行時エラー 13
型が一致しません。
と帰って来ます。
>>38 それ、仮に数字が取り出せたとして、それぞれの数字が何の数字なのかはどうやって判断するの?
>>40 TypeName判断してるとこはどこにいったんだよ
あれが何をやってるか理解してないのか
>>43 ぶつぶつ言ってないでさっさと作れってことだろ。
>>44 いいからお前は向こうのスレから出てくんな
>>41 For Each ws in ThisWorkbook.worksheets
>>46 いいなぁ。正規表現って苦手なんだよなぁ。
質問です。 上、下、左、右のキーでオートシェイプを移動させる処理を作っています。 ループを組んで移動させる様にしているのですが、 移動する度に画面更新の為、Do Eventsを呼んでいます。 そうすると、本来のEXCELの挙動であるカーソルの移動も行われてしまいます。 各キーが押された時、EXCEL本来の挙動はして欲しくありません。 バージョンは2010だとDo Eventsを呼ばなくてもうまく画面更新がされる様なのですが、 2003ではそうも行かないので、誰かご教示して頂ければありがたいです。
49 :
デフォルトの名無しさん :2013/10/16(水) 19:43:22.60
>>49 いや、俺は
>>42 じゃないけど、多分言いたかった事は
文章から取り出した数字がいつも決まった順序やフォーマットなのか、
要するに規則性がなければ取り出した数字がどの項目に当てはまるのかを、
どうやって判断を付けるのかということなんじゃないかと思うよ。
51 :
デフォルトの名無しさん :2013/10/16(水) 21:22:40.82
>>42 >>49 ある文字列を長い文の中から検索し、
その直後にある数字を拾いたいのです。
身長は高く、185cm、体重はその割に軽く70.5kg,年齢は30です。
この例ですと、体重という文字を入力すると70.1が帰ってくるようなマクロが欲しいのです。
>>51 最初からそう書いて欲しかった…
それだと全然違うプログラムになるよ
あと70.1なんかどっから出てきた
身長180cmで体重78Kg体脂肪19%ダイエット中のオレはどうすればいいんだ?
70.1ってのは70.5のタイプミスだろうなぁ(しょーもない間違いが多いタイプ?
>>51 これはねぇ・・・
もう少し細部に渡って要件をつめないと作るの難しいと思うよ。
例えば文章内に同じキーワードが2回出てきたらどうするのか、とか、
文字列の被るキーワード(例えば「体重」と「体重計」)みたいのは有るのか 、とか、
数字と見なすものの扱いで、カンマは数字の桁区切りとみなすか数字以外とみなすか、とか、
符合も例えばキーワードを「値段」とした時、もしこんな文章だったらどう扱うのか
「値段は個数×金額なので、10×50で500となる」とか、他にももろもろ。
コンマの処理をどうするかも難題だな 「X,Yはそれぞれ100,200です」 「値段は1,200円です」 日本語の文法解析でもしないと区切りか位取りか区別できないべ VBAでは不可能に近い プロでも逃げ出すレベルの難問になる
57 :
デフォルトの名無しさん :2013/10/17(木) 07:49:46.63
51です。ありがとうございます 万能なものがあれば有難いのですが いま自分が求めるものはもっと簡単です。 検索文字は身長、体重、年齢のように違う文字です。文字重複はありません。 数字にカンマはありません。小数はあります。桁数は決まっていません。 検索文字と知りたい数字の間には、数字、ドットはありません。 A1に検索文字を入力 B1に出力 文はA10からA20に貼り付けます。 これでお願いします
58 :
デフォルトの名無しさん :2013/10/17(木) 07:54:20.01
>検索文字と知りたい数字の間には、数字、ドットはありません。 間違ました。数字、ドットはありませんではなく、 ドットが単独で存在することはありません。 です。
Vbaでstring文字列の圧縮ってできますか? rest で文字列をpost するのに 圧縮してからpostしたいのですが DeflateStream, GZip が使えないっぽいので
できますよ
>>57 いや、まだ聞きたいことはある。
キーワードに対して必ず数字は存在するの?
後、符合は?特にマイナス。
63 :
28 :2013/10/17(木) 09:48:52.51
>>35 お礼が遅くなりました
ありがとうございます
まだ使ってみてなんですが明日使ってみます
64 :
720 :2013/10/17(木) 10:37:25.39
>>43 typenameの所ですが、すみません。
理解していませんでした。
調べて入れてみましたが、動きませんでした。。
私が書いたものを少し変えて、
Dim c As Object
For Each c In Worksheets("Sheet1").OL EObjects
If c.Name = "aaa" Then
c.object.Value = False
End If
Next
としたところ動作はしたのですが、これでは名前を取得しているので本来の目的のグループネーム毎に切替えるができません。
nameのところをgroup nameにするとまた「このプロパティまたはメソッドをサポートしていません」とエラーがでます。
チェックボックスではグループネームを取得出来ないのでしょうか?
何回もすみませんがどなたか分かる方よろしくお願いします。
>>57 (1) 文字列をInstrで検索、それが判定のスタート位置になる
(2) Midで1文字ずつ判定して、数字が出てくるまで探す
(3) 数字、小数点以外が出てきたら終了
これだけ
>>65 コード作成依頼スレなんだから作ってやればいいじゃん。
文章での回答を嫌ってる回答者が立てたスレなんだから。
こんなんでいいか? ' 文字列sから単語wを探して、その直後の数値を返す Function SearchNum(s, w) p = InStr(s, w) Do p = p + 1 Loop Until Val(Mid(s, p)) Or p > Len(s) SearchNum = Val(Mid(s, p)) End Function
68 :
デフォルトの名無しさん :2013/10/17(木) 13:21:57.54
回答している人はどこでどうやってEXCELやMacroを勉強したのでしょうか? 上司には「いずれ結果は出るだろうけど、歩みが遅すぎる。私のマクロを見て勉強しなさい。」 と言われました。 そんな上司のマクロはぐうの音も出ないものですが、Dimがないのとifが多くてさっぱりわかりませんでした。
Option Explicitもないようなソースを作っておいて自分のマクロを見て勉強せよとは片腹痛い
>>69 Dimが無い人の言うことは聞き流せばOKです。
Dimがないとか欠点を指摘できてる時点でわからないふりしてるだけにしか見えない 性格悪い
>>71 このスレはコード以外も許容している。
何度も言うが、お前はそのスレからこっち来るな。
>>73 わたし処女なの
とか言いながら
玉なめしてくるような違和感ですね
わかります
77 :
デフォルトの名無しさん :2013/10/17(木) 18:17:59.59
ワークシート上で使いたいのですが、 条件を満たす文字列と一致する文字列を含む他のブック上のセルの位置を返す関数 を教えてください。
>>76 いや、俺も最初そう思ってたけど、
このスレを立てたのは別人だろう。
最初の方のレスを見ると合点がいくはずだ。
しかも向こうは本スレと言い張っているが、
タイムスタンプを見てもこちらの方が立ったのが早い。
向こうのスレは削除依頼を出せば重複スレとして
さっくり削除されるレベルって事だ。
>>74 それはない。
勝手にスレタイを付けて、
>>1 に前スレとしてExcel VBA 質問スレ Part31を
記載してるだけのコード作成依頼スレでしょ。
もっと言えばこのスレに前スレなんてない。
このスレは今までのExcel VBA 質問スレの過去スレの趣旨と反している訳で本スレとは言えない。
本スレはこっち
Excel VBA 質問スレ Part32
http://toro.2ch.net/test/read.cgi/tech/1381151995/ 今まできちんとしたテンプレがあったスレが、いきなりまともなテンプレもないスレになるなんてありえない。
しかもこのスレのこれまでの内容のほとんどは質問じゃなくてコード作成依頼だし。
コード作成依頼であれば何も言わないけど、
>>69 のような内容はこのスレの趣旨とは違う。
推奨NGワード 「コード作成依頼」
84 :
ピラフ :2013/10/17(木) 20:10:06.32
>>75 /\___/\
/ ⌒ ⌒ ::: \
| (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄
| ,,ノ(、_, )ヽ、,, | < やるじゃん
| ト‐=‐ァ' .::::| \_____
\ `ニニ´ .:::/
/`ー‐--‐‐―´´\
>>64 Dim c As Object
For Each c In Worksheets("Sheet1").OLEObjects
If TypeName(c.Object) = "CheckBox" Then
If c.Object.GroupName = "Group1" Then
c.Object.Value = False
End If
End If
Next
>チェックボックスではグループネームを取得出来ないのでしょうか?
チェックボックスでは取得できるが、それ以外では取得できない(出来るやつもあるけど)
OLEObjectsにはチェックボックス以外も含まれてるから、それがチェックボックスかどうか判断してるのがIf TypeName の所
>>80 お前の思い込みなんてどうでもいい。
こっちのスレとあっちのスレ、どっちを今後本スレとして使うのかはスレの住人が決めることだ。
>>69 本読んだり仕事仲間に教わったりしてかな。
最初にいい仲間に恵まれると、こう組むといいよって色んな意見が聞けるから、成長も早いと思うよ。
いい仲間に恵まれないと、平気でOptionExplicit付けなかったり、本来クラス化したり関数化しなければ
いけない所を一直線にズラーっと書いていい感じにスパゲッティソースにしたり
それで威張って部下から煙たがられたりするよ。
>>86 質問する場所はスレの住人じゃなくて質問者が決めること。
スレの住人なんておかしなことをいう奴だな。
>>88 いい加減向こうの糞スレに帰れよ。
こっちはみんないい感じでやってるんだ。
自分の立てた糞スレで人に意見押し付けて好きなだけ暴れ回ってろ。
いいんじゃない? 質問者はみんなこっち選んでるみたいだし
自演臭いけどなw
>>91 ここまで全部俺の自演でもいいから
とっとと自分の立てた糞スレに帰りなさい。
羨ましそうに荒らしに来ない様に。
>>92 ということは、自演することで本スレかのように見せてるのか。
コード作成依頼の内容なら何も言わないけど、それ以外の質問なら本スレに誘導させてもらうよ。
>>93 誘導する前に何か書き込まないとDat落ちするぞーw
95 :
デフォルトの名無しさん :2013/10/17(木) 21:36:23.98
>>93 スレタイは「Excel VBA 質問スレ」だけど
質問者がこっちのスレがいいと判断して質問してる。
まー、いざとなったら削除依頼だせばいいんじゃない? 試しにこっちのスレの削除依頼出してみてこっちのスレとあっちのスレ どっちが削除されるか少し興味ある。
>>93 これ以上ウダウダ言うならむこうの糞スレ、削除依頼出させてもらうよ。
>>97 つガイドライン
質問させて下さい。 複数のオートシェイプにマクロ登録をしているのですが、 結構数があるので別呼び先にすると〜_Clickの様なイベントだらけになってしまいます。 似た様な処理なので呼び先を一つに纏めたのですが、 その後どのボタンが押されたのかを判断したいです。 出来れば内部であまり分岐を増やしたくないので、 Senderのオブジェクトで判断するのではなく、オートシェイプに引数を持たせることは可能ですか?
>>98 削除されたらさっさとこのスレ埋め立てて、元の本スレを立てればいいだけの話。
プッ
>>99 そのためのSenderなのにどうして使おうとしない?
どうしてもシェイプごと固有のパラメータを渡したいならオブジェクト名を引数の代わりに使えばいい
>>103 引き渡したいパラメータがそこそこあるのと、ボタン数も結構あるので、
内部で分岐させるよりは直接内部の関数の引数として渡してやれればいいかなって思いました。
方法が無いのであれば、Senderを使うしか無いのですが・・・
>>101 よし分かった。では次何かあったら容赦なく削除依頼出させて貰うことにする。
>>107 なんだ。俺が何もしなくても面白く思わなかった奴はいたみたいだな。
もっとも、あっちのスレはDat落ちを待つばかりで
このスレとは既に100レス差がついて、次スレにまで抜かれる始末だったしな。
結局、たった一人のワガママに誰も賛同しなかったのが顕著に出る結果になったな。
惨めでお粗末な最期だったな。
>>105 意味が良くわからんな
ボタンを押すタイミングによってパラメータを変えたいってこと?
ボタンごとに固有の値を持たせたいだけならテーブル化しても手間はほとんど変わらんと思うが
>>105 やり方は忘れたけど以前やったことがあるから出来るのは間違いないよ。
やり方思い出したらまた書くよ。
111 :
デフォルトの名無しさん :2013/10/18(金) 00:04:26.06
>>109 >>110 >>112 すみません。
VBのも組んでたんで混同してしまいました。
でもおかげで思うようなものがこれで作れます。ありがとうございました。
115 :
28 :2013/10/18(金) 15:51:43.07
>>35 コメント入りで丁寧なコードありがとうございます
このやりかたとは別に
シート1のテーブル1を元に
テーブル1をシート2にコピー → そのまま貼り付けたものを右クリックでテーブルを範囲に変換
並べ替えを押して項目1、項目2でソート
小計ボタンを押して グループ基準を項目2 集計の方法を合計 集計するフィールドを項目3
というのを今まで手動でやってました
この手動でやっていた作業そのままをマクロで出来ないものでしょうか?
また
テーブル1をシート3にコピー → そのまま貼り付けたものを右クリックでテーブルを範囲に変換
並べ替えを押して項目4、項目1でソート
小計ボタンを押して グループ基準を項目4 集計の方法を合計 集計するフィールドを項目3
という作業も追加できればありがたいです。
参考のファイルをアップします。
要は参考のファイルのシート1のテーブル1からマクロでシート2とシート3の様な結果ができればいいなと
わがままですいませんが何卒よろしくおねがいします
http://uproda.2ch-library.com/lib718468.xlsx.shtml DLキー:1
>>115 えー、今ポケモン中なのに・・・
ま、いいや。でも気分で作ったり作らなかったりなんで
あまり宛てにはしないでね。
http://uproda.2ch-library.com/lib718673.xlsm.shtml DLキー:1
前回はテキトーに作ったからコメント結構いれたけど、
今回はコメントは殆どなし。どの関数が何をやってるか位しか書いてない。
でもそれで解らなくなる様な長さの関数はホントは書いちゃいけないんだよね。
そのまま使うなり解析するなり好きなようにして下さい。
本当は
>>69 が言ってた上司に見てもらって、だいたい関数ひとつを何行くらいで
書くものなのか、分岐はどの位の比率で入るものなのかを見て欲しいなぁ。
.................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... ..................................
.......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... ..........................................................
.......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... .......................................................... ..........................................................
Excel2010 シートに貼り付けたボタンについてですが、セルの幅を広げた時に一緒に伸びて しまうのですけど、これって固定にすることは出来ませんか?
>>122 右クリック
コントロールの書式設定
プロパティ
>>125 > これってVBAに関係ないんですか?
ないですね。
そして、お願いだから見当違いな反論して暴れないでね。
127 :
デフォルトの名無しさん :2013/10/22(火) 20:30:25.05
会社の社内システムでデータベースを使っているのですが(まあ普通の会社なら同然なんらかのデータベースはあると思いますが) Webベースで、なにか検索するにはHTMLのFORMを使ってアクセスしなければならず、不便でしかたがありません。 ExcelのVBAの力で、そのデータベースの全体のテーブルをExcelにインポートしたいのですが、どうやりますか?
ADOとSQLを勉強すればよろしい 若しくは MSQueryあたりか
129 :
127 :2013/10/22(火) 20:47:29.34
>>128 ということはできるんですね!
すごい!
教えていただけませんか?
>>127 その前にデータベースは何?
Oracle?
SqlServer?
いくら2007からシートの扱える行数が増えたからとはいえ
EXCELには行数制限があるし、重くなるからある程度以上の規模がある場合は余りお勧めしない。
ある程度以上の大きさがある場合はDBに接続して必要な分だけ絞り込みを掛けて表示したり、登録したり、更新したり
する様にした方がいいと思うよ。
131 :
128 :2013/10/22(火) 21:40:10.41
132 :
デフォルトの名無しさん :2013/10/22(火) 21:49:46.72
ぽすぐれもフリーだお
133 :
デフォルトの名無しさん :2013/10/22(火) 21:51:12.87
会社のDBでエクスポートして エクセルでインポする手もあるけど これはVBAぢゃないね
134 :
デフォルトの名無しさん :2013/10/22(火) 21:57:20.90
こんなやつにDBユーザ与えるとかどんな会社だよ…
136 :
デフォルトの名無しさん :2013/10/22(火) 22:17:38.54
>>135 個人情報や社外秘情報の持ち出しを企でている音がしますね。
>>127 >不便でしかたがありません。
なんか、ゴメン
138 :
デフォルトの名無しさん :2013/10/22(火) 22:50:45.06
>>127 >Webベースで、なにか検索するにはHTMLのFORMを使ってアクセス…
ブラウザをVBAで操作したらどうかな、IEならば可能だけど。
現状のWEB操作を、VBAで自動化する方が効率良いのでは。
「VBA IE操作」等で検索すると、
「フォームへの入力」や「ボタンを押す」等沢山例題が有る。
139 :
デフォルトの名無しさん :2013/10/22(火) 23:06:18.22
140 :
デフォルトの名無しさん :2013/10/22(火) 23:52:49.12
>>139 使いやすいのを使えばいいと思うよ
UccXで出来るなら、それでもいいと思う
VBAを使わずに、多言語でエクセルを操作している人もいるくらいだから
最近のエクセルには、外部データの取り込みって機能があって、そこにWebクエリってのもあるんだぜ まあ、VBAでどうやるかって言われれば、普通にそのDBに接続してデータ引っこ抜くだけだが そのDBのクライアントがVBAで動くかどうかはしらんが
質問させて頂きます。2003です。 コントロールツールボックスでオプションボタンを並べて配置し、 どのオプションボタンのValueがTrueになっているかブックを開いた時に取得したいのですが、 「オブジェクトが必要です(実行時エラー424)」とエラーが出て取得できません。 ThisWorkbookのOpen関数で、 Private Sub Workbook_Open() ’オプションボタン値取得関数呼び出し OptBtn_Init End Sub 標準モジュールで、 Sub OptBtn_Init() どのオプションボタンがTrueになっているか判定 If OptBtn1.Value = True Then ← ここで「オブジェクトが必要です」エラー SelFlg = 1 ElseIf OptBtn2.Value = True Then SelFlg = 2 ElseIf OptBtn3.Value = True Then SelFlg = 3 End If End Sub と言った具合です。オプションボタンのオブジェクト名をOptBtn1〜3としています。 何が悪いかご指摘頂ければ幸いです。
143 :
デフォルトの名無しさん :2013/10/23(水) 15:08:52.67
>>142 If Sheets("Sheet1").OptBtn1.Value = True Then
どのシートに有るのかを入れましょう
>>143 できました!ありがとうございます!何でこんな原始的な事ができないの??
とあまりにも初歩的過ぎるのかググっても判らず・・・本当に助かりましたm(__)m
>>144 こちらの板に初めて書き込みましたがスレが複数立っている様子で
その経緯も良く分からず・・・本スレ了解です。
146 :
デフォルトの名無しさん :2013/10/23(水) 16:54:50.92
>>145 騙されないように、
>27 が良い表現をしている。
あっちはコード拒否スレ
>>145 このスレはクレクレ君の為のコード作成依頼スレ。
>>146 そういう書き方をすると質問者がコードを書いちゃいけないような印象を受けるからやめてほしい。
質問者がコード書いて質問する分にはクレクレ君というわけではないから問題ない。
149 :
デフォルトの名無しさん :2013/10/23(水) 18:06:40.86
>>148 惨めだなぁおいw
誰か何か書き込んでやれよw
152 :
デフォルトの名無しさん :2013/10/23(水) 21:06:36.51
そっちの自称「本スレ」の人が来る前に今一度確認しておきたいんだけど、 このスレは向こうにあった有害なテンプレを排除しただけであって、 コードを書くことを強制されてるわけじゃないから ケツを持つだの責任取るだのって話にはならないよね。 質問者がきちんとした自助努力を怠らない人だろうが 単なるクレクレだろうがそこは関係なく、 回答者が書きたいと思ったらコードを書く。 (向こうのテンプレはこれを禁止、もしくは制限している) そういうスレ住人各自の自由裁量に基づいて VBAにまつわる話題をあれやこれやするスレッドだよね? クレクレがひどけりゃスルーすれば良いんだし、 質問者がクレクレでも その回答のコードが見るべき価値のあるものなら 結果的に傍観者の益にもなるし、 どう考えてもこっちのが居心地いいじゃん。
★5ガーとかクレクレ君ガーとかうるさかったしな。
ああいうの一々騒がないでスルーしてれば こんな風にならなかったのに馬鹿だよね
>>153 スルーしないバカがいるから問題になるっていい加減何度言ったらわかるんだ?
コードで回答をする人間は今まで見ればわかるように見るべき価値なんてない。
お前の言っているようにできれば居心地いいと思うけど
餌を与えるバカがいる限り居心地は悪くなると思うよ。
バカ見参
最初はルール無くて途中からルールが出てきたんだろうから ルール無くしても荒れるときは結局荒れると思う。 ルール無いんだったらやりたい放題なんだしw
>>153 「本スレ」の人ご苦労様ですw
スルーしない人がコード書いても別に良いじゃん。
見るべき価値が有るか無いかも、
その評価は人それぞれでアンタ一人が決め付けるもんでもない。
第一、クレクレが居ても良いって人達がこのスレにいて、
スレは上手く回ってるしあんたの本スレには誰も来ない。
これが現実。
160 :
159 :2013/10/24(木) 18:35:55.93
>>159 まぁそう言うことだよね。
多分この人が新しいスレをまた立てたとしても、
また同じ結果になると思うよ。
そろそろ荒らしに餌やるのやめない?
>>159 > スルーしない人がコード書いても別に良いじゃん。
質問スレじゃなくなるから。
実質このスレの内容は殆どクレクレ君だし。
> その評価は人それぞれでアンタ一人が決め付けるもんでもない。
過去スレ見てないのかな。
かなりボロクソ叩かれてるんだけど。
それも偏見じゃなくて一般的に指摘されている内容で。
> スレは上手く回ってるしあんたの本スレには誰も来ない。
ほとんど自演&クレクレ君なのに上手くまわっているとはよく言うよ。
164 :
159 :2013/10/24(木) 19:14:40.48
もっと僕にかまってよ!!
166 :
デフォルトの名無しさん :2013/10/24(木) 20:42:10.66
かまってよ、君のために〜
さだまさしは、年齢に関係なくハマるよね トークも面白い
本当にまじめな質問ですよろしくお願いします 2003から2010に移行後、オートシェイプに登録していたマクロで、 散布図グラフの選択有無判定"If ActiveChart Is Nothing Then"が、常に"Nothing"と判定されるようになってしまいました コードウィンドウから実行したり、コマンドボタンに割り当てると正常に判定できます なんとかビューティフルなボタンに割り当てる方法は無いでしょうか? ※期限:明日の夕方頃まで
おまえの態度が
サーセン 「仕様です」で乗り切るコツでも良いですのでお願いします
173 :
デフォルトの名無しさん :2013/10/25(金) 01:49:56.27
「はぁー仕様?仕様ってんならなんか目的があるんだろ?それを説明してくれよ!でなきゃ俺も上に説明なんてできねーよ!」
>>170 へぇ、変な事象だね。
シートモジュール側にOnActionで設定してやっても駄目?
>>174 ありがとうございます
明日試してみます
>>170 コードで語り合うスレです。
お引き取りください。
>>170 2007でもうまいことActiveChart捕まえられないっぽいな
つかシェイプをクリックした段階でグラフのアクティブ外れるのがホントじゃないのかとも思うが
とりあえずグラフをクリック(選択)したときに変数にでも放り込んでおけば?
選択解除どうするかって問題はあるが
グラフのActivate/Deactivateイベント使う手もあるだろうけど、埋め込みグラフだとちょっとめんどくさげ
まあ、どうやってグラフ書いてるかにもよるだろうけど
178 :
デフォルトの名無しさん :2013/10/25(金) 04:43:50.94
179 :
170 :2013/10/25(金) 04:54:47.45
OnActionは使ったことが無かったのですが、こんな感じでいいのでしょうか? 自宅には2003しかないので、明日2010で試してみます 例:選択したグラフのプロットエリア幅増減 Const MyWidth = 5 Sub Auto_Open() Worksheets(1).Shapes(1).OnAction = "PlotWidthMinus" Worksheets(1).Shapes(2).OnAction = "PlotWidthPlus" End Sub Sub PlotWidthPlus() '右向き△ 'Dim MyWidth As Single 'MyWidth = Worksheets(1).Range("L3").Value If ActiveChart Is Nothing Then MsgBox "グラフを選択してください" Exit Sub Else ActiveChart.PlotArea.Width = ActiveChart.PlotArea.Width + MyWidth End If End Sub つづく
180 :
170 :2013/10/25(金) 04:55:46.05
つづき Sub PlotWidthMinus() '左向き△ 'Dim MyWidth As Single 'MyWidth = Worksheets(1).Range("L3").Value If ActiveChart Is Nothing Then MsgBox "グラフを選択してください" Exit Sub Else ActiveChart.PlotArea.Width = ActiveChart.PlotArea.Width - MyWidth End If End Sub >177 やはりそうですか、情報ありがとうございます 昨日はSelectionをObjectにしてタイプ判定でつかめそうな感じはしたのですが、なにぶん手間がw 機能的にはコマンドボタンで何の問題も無いのですが、空しいです >178 ごめんなさい
181 :
nanashi :2013/10/25(金) 17:34:34.02
ExcelVBAの初心者なのでお願いします シート1にはユーザーフォームを表示するボタン ユーザーフォームの内容を表示させる CSV形式で別シートにシート内容を表示させるボタンがあります シート2には2行目からA〜Iまでにそれぞれ 月・日・時・分・かな・会社名・氏名・面会者・人数が記載されています つづく
182 :
nanashi :2013/10/25(金) 17:38:07.98
現在ユーザーフォームには テキスト1=年 コンボ1=月 コンボ2=日 コンボ3=時 コンボ4=分(15分毎) コンボ5社名 コンボ6=氏名 コンボ7=人数 コンボ8=面会者が 入るように設定したいと考えています 一応時間までは正常に機能するのですが、社名、氏名、人数、面会者がコンボボックス に表示されなくて困っていますのでどうか力を貸していただけませんか? つづく
183 :
nanashi :2013/10/25(金) 17:45:22.77
つづき 条件としてリストの時間と前後1時間のものを対象とし、かつひらがな1文字を コンボボックスに入力してもらい、それと一致するものをそれぞれの指定のコンボ ボックスにセットするようにし、氏名と、人数は表示されてから修正できる仕様に したいと考えています どうにかなりませんか?
もうちょっと論点と仕様を整理したほうが良いですよ たとえば、183で出てくる「リスト」って どこにあるものなのか一切説明がないんですが。
185 :
nanashi :2013/10/25(金) 19:10:21.55
論点から言うとソースを教えていただきたいと考えています 仕様はシート1にユーザーフォームを表示させるボタン ユーザーフォームの内容を表示 シート1の内容をCSV形式で別シートに出力させるボタン シート2には2行目からA〜Iまでにそれぞれ 月・日・時・分・かな・会社名・氏名・面会者・人数が記載されています ユーザーフォームには テキスト1=年 コンボ1=月 コンボ2=日 コンボ3=時 コンボ4=分(15分毎) コンボ5社名 コンボ6=氏名 コンボ7=人数 コンボ8=面会者が入る つづく
つづけ
187 :
nanashi :2013/10/25(金) 19:21:32.71
表示条件なですがユーザーフォームの月・日・時(前後1時間を含む) をシート2と比較し一致する、かつコンボ5に入力したひらがな1字が シート2のかなと一致したら、コンボ5、6、7、8にシート2の一致した 社名、氏名、人数、面会者を表示させる また、氏名と人数は修正ができるようにするです
>>187 どこまで出来てて、何が分からないんだ?
丸投げする気なら俺は知らんが、そうでないならこれ見て考えれ
Private Sub ComboBox5_Change()
Dim r As Long
Dim c As Range
If Len(ComboBox5.Text) <> 1 Then Exit Sub
ComboBox5.Clear
For r = 2 To Sheet2.Range("E2").End(xlDown).Row
Set c = Sheet2.Cells(r, "E")
If Left(c.Value, 1) = ComboBox5.Text Then
ComboBox5.AddItem c.Value
End If
Next
End Sub
>>185 >シート1の内容をCSV形式で別シートに出力させるボタン
シート1の構成が全く分からん。
別シートにCSV形式で出力ってのも分からん。
CSVファイルとして別ファイルに出力するって訳でもなさそうだし
CSVの出力対象シートにボタンがくっ付いているとか本当に訳が分からんな。
>>190 >丸投げする気なら俺は知らんが
どうみても別人だろ
>>192 そうか。今時変数に1文字の名前付けるなんて桃白くらいかと思ってたんだが。
>>193 今時変数が1文字で有る事だけを問題にする奴がいるとは思わんかったが
さて、ここから1文字変数は有りかなしかのループを再開するかね
197 :
デフォルトの名無しさん :2013/10/26(土) 07:49:06.76
VBAスレで荒れるネタ set オブジェクト = nothing 一文字変数 ソースクレクレ 他にどんなもんがあったっけ
2Byte文字で変数定義 同じくメソッド名定義
199 :
デフォルトの名無しさん :2013/10/26(土) 08:00:11.54
なっすぃんぐによるオブジエクト解放はなんで荒れるん 関数の終わりでの記述の必要性?不要ってことで決着ついたでしょ? ループ処理内やグローバル変数などにおいて必要がある場合にのみ記述するって。
200 :
デフォルトの名無しさん :2013/10/26(土) 08:06:26.62
ExcelVBAの次に JavaやCやC++を経験しようと思うけど これらのプログラミングにEditerってそれぞれそ何を使うの? もちろんExcelVBAみたいに入力候補や、間違った命令を入力したときエラーとして教えてくれる機能は必須です。
VisualStudio
>>189 1文字変数だけだと思ってるようなら本当にダメだな。
変数名もまともに付けられない、マジックナンバーあり、インデントなしの糞コード乙。
>>187 >>189 のコードは動くかもしれないけど参考にしちゃいけない糞コードw
203 :
200 :2013/10/26(土) 08:36:45.49
>>201 それは他言語でしょう。
JavaやCやC++のEditerは何がいいですか?
こんな短いコードなのに糞満載w
>>193 インデント付けられないアホもいる見たい。
2chブラウザだとインデントを付けていても投稿時に自動解除される
そんなことも知らない
>>202 はコード提供の経験もなさそうな口だけ野郎w
>>189 ComboBox5ってなんだよw
質問者をバカにしてるとしか思えないコードだな。
>>206 言い訳なんてどうでもいいからインデント付けろアホ。
インデントの付け方も分からないのにコード書くなよw
自動解除の意味も理解できない叩き専門野郎が連投中につき注意
>>206 Sub Test()
Dim Foo As Integer
End Sub
212 :
デフォルトの名無しさん :2013/10/26(土) 09:01:08.98
JavaやCやC++のEditerは何がいいですか?
>>211 Tabキーの代わりにスペースキーで頑張ったの?えらいねぇボク
ついでに
>>189 もぜんぶスペースキーでちまちまインデントして直しといてくれないかな
>>200 VB.NetやC# はVBAとたいして変わらないからそんなに心配することはないよ。
プロパティウィンドウがデフォルトで左右逆になっているくらい。
インテリセンスについてはVBAより遥かに高機能だからこれも心配ない。
Javaは遠い昔Ecripseでちょっとだけ組んだことがあるけど、あれも大差なかった様な。よく覚えてないけどね。
>>212 ああ、ゴメン、何のエデイタを使えばいいかって話ね。
やっぱりVisualStudioに用意されてるのが一番いいと思うよ。
とは言っても他は秀丸やサクラくらいしか知らないけどね。
JavaはEclipsしか知らないから分からないので他の人に聞いてください。
>>216 C、C++でもEclipseは使える。
Java、C、C++を全部使うのならEclipsでいいと思うけど。
218 :
デフォルトの名無しさん :2013/10/26(土) 09:39:35.22
>>214 糞コードに手を加えても糞コードにしかならないし止めておくよ。
目的を達成するのに構造やアルゴリズムとか考えるのに頑張るっていうのは分かるけど
コードを書くのに頑張るって力入れるとこ間違ってるなw
ルールが無くても荒れてるね。
>>221 基本ふっかけて荒らすのはテンプレ厨なので、
お前があの糞スレに引きこもってれば最初からなにも起きない。
別にがんばらなくてもインデントぐらい付けられるんだが コードは勝手に流用させてもらった Private Sub ComboBox5_Change() Dim r As Long Dim c As Range If Len(ComboBox5.Text) <> 1 Then Exit Sub ComboBox5.Clear For r = 2 To Sheet2.Range("E2").End(xlDown).Row Set c = Sheet2.Cells(r, "E") If Left(c.Value, 1) = ComboBox5.Text Then ComboBox5.AddItem c.Value End If Next End Sub
コードに全角スペースw
>>189 何故一文字変数にしたのか理由をききたい。
半角連続スペースは消えるってそんな基本的なことまで理解できんのか釣りなのか
>>227 インデントの付け方今日知ったみたいだからマジだと思う。
全角スペースインデントwww
231 :
デフォルトの名無しさん :2013/10/26(土) 14:56:03.15
VAL("1個")は1が返ってきますが、VAL("第1")は0がかえってきます。 何故ですか?
>>231 string VAL(const string& arg)
{
double d = 0;
sscanf(arg.c_str(), "%lf", &d);
char s[256];
sprintf(s, "%f", d);
return s;
}
>>231 VAL関数は文字列の中に数字以外の文字が見つかれば文字の読み取りを中止する。
VAL関数は読み取った数字の数が0であれば0を返す。
文字列"第1"の最初の文字は数字以外の文字。
ゆえにVAL関数が読み取る数字の数は0。
ゆえにVAL関数は0を返す。
全部想像だがそんなには違ってないはず。
>>232 そんなに一文字変数を使いたいのなら仮引数も一文字に統一しろよw
統一感全くなしw
書いてて恥ずかしくないのかな。
以下、「一文字変数」をNGワード登録してあぼんすればよろし
VBA初心者ですが なにが追加されるかわからない段階の表を組むとき表の項目が沢山増えても困らないようにするために 表のわくの外に何セルぐら間を空けておくと良いのでしょうか? とりあえず5セルで困った事があるので今回は10セルマージンを空けてみようかと思いますが。。
んなもん、VBAに全っっっっっっっ然かんけーねー話
240 :
デフォルトの名無しさん :2013/10/26(土) 17:29:44.57
>>233 >VAL関数は文字列の中に数字以外の文字が見つかれば文字の読み取りを中止する。
その関数意味なくないですか?
これはもの凄くいい例が出て来たな。
>>240 「VAL関数は」の後に「1文字ずつ値を取得し」の文が挿入されていれば理解出来るだろうか。
これは1文字変数にも通じる所があって、本人は分かっていて相手も分かると思っていても
実は相手は理解に至らないということがままあるということだ。
ましてや1文字変数など、その変数の意味を一見で理解するのはもっと困難だろう。
244 :
デフォルトの名無しさん :2013/10/26(土) 17:57:59.42
240です。 VAL関数は数字以外の文字と数字が混ざった文字列のなかから、数字のみを抽出する関数と思ってました。 間違ってますか? それに対し、文字列に数字以外の文字があったら中止するという233さんの回答は矛盾してませんか?
>>244 >VAL関数は数字以外の文字と数字が混ざった文字列のなかから、数字のみを抽出する関数と思ってました。
>間違ってますか?
間違ってないです。
>それに対し、文字列に数字以外の文字があったら中止するという233さんの回答は矛盾してませんか?
中止することが数字以外の文字が見つかるまでに読み取った数字を返さないことだとするならば僕の回答は矛盾します。
247 :
デフォルトの名無しさん :2013/10/26(土) 18:50:55.38
>>246 >中止することが数字以外の文字が見つかるまでに読み取った数字を返さないことだとするならば僕の回答は矛盾します。
この文どういう意味ですか?私の理解力の問題ですか。
いいからヘルプ読めよ
釣りとしか思えない
俺は
>>233 じゃないけど
VAL関数って単に文字列を数値に変換するだけで、数値に変換できない文字列の扱いとか考えたことなかったわ
大昔のBASICだと変換できない文字があるとエラーだった気がするんだが
たしかに今のヘルプ見ると
>VAL関数は数字以外の文字と数字が混ざった文字列のなかから、数字のみを抽出する関数と思ってました。
こう考えるのも無理はないか
>>244 ,247
たしかに数字を抽出してるんだが、抽出条件がお前の希望通りではない
文字列の途中で中止しても、(それまでの)数字は出力するわけだから
抽出してる事には間違いないだろ
>>247 AがB、ならば、CはD。
という構造です。
ならばのまえを前件と呼び、
ならばのあとを後件と呼びます。
ならばは、前件を仮定して後件を結論します。
A(中止すること) が B(数字以外の文字が見つかるまでに読み取った数字を返さないことだとする)
ならば
C(僕の回答) は D(矛盾します)。
中止すること = 数字以外の文字が見つかるまでに読み取った数字を返さないこと
という仮定が正しければ
僕の回答は矛盾するってことです。
>>244 > 文字列に数字以外の文字があったら中止する
ちゃんと読んでやれよ。
「読み込みを」中止するだぞ。
>>253 文字列の「先頭から」”数字”とみなせる文字を抽出するといえばわかるのか?
>>252 公開範囲考えるなら可読性も考えろよ。
関数が短いからと言っても処理を見るまで分からないものは可読性は低い。
1文字変数をよしとするとそれ以外の変数と混在させそう。
こうなると、作り手が何考えてるのか分からなくなる。
知らないうちにバグを埋め込むことになってるって意識ないんんだろうなぁ。
1文字変数だけじゃなくコメントなしっていうのも大いに問題があるんだが。
向こうのスレにも書いたが1文字変数の件は
>>196 で既に結論がでている。
流石にマイクロソフトの推奨を無視して自分の意見を押し付ける奴はいないだろ。
2ちゃんのスレに貼り付けるソースにまで文句つけるアスペわろすw
>>257 書式を整えることは言ってるけど、一文字変数を推奨なんてしてない。
日本語読めんのか?w
>>259 説明が悪かったかな。
その通り、1文字変数なんて一部を除いて推奨してなどしていない。
俺が言いたかったのはマイクロソフトの推奨しているコーディング技法には
1文字変数は使うなと書いてあると言いたかったんだ。
ハンガリアンを推奨してたような会社だぞ
>>261 そんな会社が作ったアプリケーションのスレな訳だが
>>225 2chの仕様で行頭の半角スペースは消される
VBEにそのままコピペすると全角スペースは自動的に半角スペースに置換される
よって問題なし
>>226 積極的に1文字以外の変数を使う理由がないから
あれはコードの分かりやすさを重視していない
あのコードでは変数名が1文字か長いかはコードを理解するためには大きな差ではなく
あのコードが1文字変数で有るがために読みとけないのでは
そもそもの技術力に問題があると考えてる
なるほど。 多数の初心者が来るこのスレで 可読性そっちのけで相手の技術力だよりと言うことか。 余り威張って言えることではないな。
で、
>>232 については可読性落ちてると言えるの?
267 :
デフォルトの名無しさん :2013/10/26(土) 22:26:46.25
>>265 そのコードの長さ(行数)と、変数の個数、複雑さが問題と思う。
今回のは12行(Sub・End除けば10行)で、変数2個。
私も、この程度の量で、後に残さない試験程度ならば1文字変数を多用する。
>>267 ネットに残してるわけだから1文字変数なんて使えないだろw
>>265 丸投げ(するようなレベル)ならお断りだってことが
相手の技術力だよりってなら、まあまさにその通りだな
これが1文字変数を使うな派の主張(
>>268 )である。
>>265 あと言っておくが、理由を聞かれたから答えただけで、別に威張って言っているわけではないが
>>267 言いたいことは分からなくもない。
だが初心者などはその様な背景を読み取れる訳もなく、
そのままそれを当たり前だと思ってしまう。
俺には1文字変数を使うなという強制力は全く無いが、
それはクソコードだと罵られるのは仕方のないことだとも同時に思っている。
>>267 短いコードなら最初からきちんと作っても、適当に作るのとそんなに時間は変わらない。
何が問題なのかさっぱりなんだが。
っていうか可読性を無視してる時点でアセンブラでも使ってろと言いたい。
274 :
デフォルトの名無しさん :2013/10/26(土) 22:46:35.21
私は二文字変数派。 A0、A1、A2...Z9と順番に使う。 名前を考える必要がないのでとても速い。
変数名が短いだけでクソコード()
一文字変数使ってるやつって、適切な変数名をつけるのに一時間とかかかるものなのか? 適切な変数名をつけられないヤツがまともなコード書けるとは思えないが。
277 :
デフォルトの名無しさん :2013/10/26(土) 22:51:10.35
いや私は二文字変数派なんで。 一文字変数教団とは無関係です。
278 :
デフォルトの名無しさん :2013/10/26(土) 22:52:59.92
ロングロングネーム党の本拠地はOracle州Javaシティですよね?
適切に短い名前つけられないやつがコンパクトにまともなコード書けるとは思えないが。
280 :
デフォルトの名無しさん :2013/10/26(土) 22:56:36.94
ロングネームを使うとコメントが不要。
Dim ronguneemuwotukautokomentogahuyou As Integer ronguneemuwotukautokomentogahuyou = 10 ほんとだ、10が何を意味するか丸わかりだ
>>281 英語くらい使える様になれ。
それが無理ならせめて漢字で書いとけ。
>>276 1文字はどんなときでも適切じゃないと信じてるやつがまともなコード書けるとは思えんが
>>283 ああ、あれね。
型の頭文字を変数名にしている時点で
答える気も失せた。
1文字変数がダメっていうやつは、じゃあどんな変数名付ければいいんだ?
たとえば
>>189 や
>>232 のコードならどんな変数名が良いか具体例で教えてくれよ
288 :
デフォルトの名無しさん :2013/10/26(土) 23:25:58.99
val_1、val_2、val_3と順番に。
>>287 そうやって答えられないのを誤魔化すわけですね
290 :
デフォルトの名無しさん :2013/10/26(土) 23:27:01.70
>型の頭文字を変数名にしている時点で どうせtempDoubleValueとか付けるんだろそれなら同じだろ 可読性はどうなんだって聞かれてるのに話そらすとことか見てられない
291 :
デフォルトの名無しさん :2013/10/26(土) 23:29:09.34
C++でハンガリアン使うと、命名に悩んでたことに気付かされる。 日本語名を解禁すると、日本人グレートプログラマが生まれるかもしれない。 そんなことすら考えてしまう吉宗であった。
292 :
デフォルトの名無しさん :2013/10/26(土) 23:29:18.88
同じ原因の討論を2つのスレでやってる。 向こうはここの引用が多いが、アンカー意味為さないし。 両方見るのは疲れるなぁ。
>>289 >>189 であれば、rの意味するもの、cの意味する適切な名前をつければいいだけだと思うが。
糞コード読む気にもならないから何を意味するものか知らんから書けないw
>>288 複数文字でも適切じゃない例は要らん
1文字は適切じゃないと信じてるなら適切な例を出せって話
俺は適切かどうかの判断に文字数は関係ないと思ってるが
むしろ理解度同じになるなら短い方が適切じゃないのかと
>>293 そうやって答えられないのを誤魔化すわけですね
296 :
デフォルトの名無しさん :2013/10/26(土) 23:33:32.59
いや私は二文字派なんで。 二文字以外は認めませんよ。 二文字の美しさ! ロングネームも一文字も論外です。
>>294 >>189 を例にする。
> Dim r As Long
> Dim c As Range
変数名でr,cという名称。
ExcelでいうとrならRow、cならColumnをイメージする。
そこからrは行数、cは列数かと思いきやcの型はRange。
この時点で????となり、読む気にもならないw
読む気にもならないw = 底辺だから読めない(涙目)
そうだな、俺なら
>>189 を例にとるなら
rはtargetRow
cはpseudonymCompanyName
とでもするかな
でた名前に困って翻訳サイト使奴 pseudonymCompanyName
ルール無くても荒れてるね。 結局クレクレ君に餌を与える行為にどうであれ反応して荒れるのなら 結局荒れないようにという意味で、元のルール適用でいいと思う。
>>297 なるほど
rに対するcというのはその通りだな
>>189 でrとcという変数名は不適切だと認めよう
で、適切な変数名は?
>>302 ★5で荒れてたんじゃなくて
あれをコード禁止だって言い張る奴のせいで荒れてただけなんだが
荒れるってどういう状況のことを言ってる? 自分が劣勢になると荒れている?
>>300 そうだな。最近では翻訳サイトがあるから昔みたいに辞書を引かなくても済む。
便利な世の中になったもんだ。
>>297 >ExcelでいうとrならRow、cならColumnをイメージする。
あなた、Rowを表す変数をr、Columnをcすれば可読性は落ちないこと認めちゃってますよね
>>301 何言ってんだ。
そのスレならもうあるじゃないか。
何で活用しないんだ。
>>291 日本語名を解禁しても、もとのステートメントや関数が英語なので
混在してよけい読みにくくなることもあった
じゃあ全て日本語のプログラム言語が良いかと言うと、これも何と言うか
頭がうまくプログラムモードにならずに、日本語の自然文書との差が気になって
うまく使うと有る程度は可読性あがるんだけどねぇ
読む側も翻訳サイト使わないとわからない変数ってどうなんかなって 長い名前をつけなければいけないという体裁整えるだけのために 直訳で意味不明な英文を変数名にしたり
311 :
デフォルトの名無しさん :2013/10/27(日) 00:00:48.66
>>302 同意
各個人の主張を押し通そうとする行為が荒れる。
他人を認めず、非と思える所を見つけて貶し(ケナシ)、
自分の優位を主張しているように見える。
日本の諺(コトワザ)には「十人十色」が在るのだが。
>>310 それは俺の英語力の無さが祟っていて申し分けないな。
俺も英語勉強しないとな。
だが、根本的な所はそこじゃない。
既にMSDNでもそのように提示されていることと、
つまりは一般的に広くその技法が取り入れられていることがポイント。
313 :
デフォルトの名無しさん :2013/10/27(日) 00:27:22.73
スレ進んでるなー 誰か三行でおせーて
コーディングのルールに正解なんてなかったんや 正解があると思って議論するから堂々巡りになるだけで
>>314 考えてみれば大概締め付ける様なことをすると荒れてたな。
このスレが立ったのもそれのせいだったしな。
じゃ、いいや。俺の中では無しだったけど確かにみんなに強要出来ないしする様なもんでもない。
自分ルールとしてしまっとく。
316 :
デフォルトの名無しさん :2013/10/27(日) 00:41:32.12
>>313 3行もいらない
主義主張ばっかりの、1文字変数の善悪議論。
317 :
デフォルトの名無しさん :2013/10/27(日) 00:45:55.36
>>309 そうなんですよ!
そして私は二文字派になったのです!
N-BASICは2文字縛りだっけ? 源流はVBAと同じMS-BASICだぞ
321 :
デフォルトの名無しさん :2013/10/27(日) 01:03:23.69
美しい縛りだと思います。
日本語もありでいい?
323 :
デフォルトの名無しさん :2013/10/27(日) 01:10:16.60
いいよ。 変数←わかりやすい変数名だと思わない?
大昔のBASICでは英数1文字+数字0−1文字ってのがあったな あと長い変数名つけれるけど、短い方がパフォーマンスが良いというのも
ぴゅう太のことか?
長い変数名を書いてもいいけど、最初の2文字しか認識しないって素敵な仕様のマシンもあったよなあ
>>324 8bit時代の初期は英字1文字+英数1文字以下が大多数だと思ったけど
>>327 >>324 は英数1文字って書いてるな
英字1文字+の間違いだな
2文字目は数字しか受け付けないやつもあったと思うが、もう記憶が定かではない
2文字目英数うけつけるやつは、
>>326 の仕様のやつだったと思うが別にあったのかもしれん
最終行の取得で Dim lastrow As Integer lastrow = ActiveSheet.Range("a1").End(xlDown).Row Range("A" & lastrow) Range("s" & lastrow) ↓ Range("A10:S10").Select と最後のA10の10の箇所を変数に置き換えたいのですがどのように記述すればいいのでしょうか?
330 :
329 :2013/10/27(日) 04:55:33.51
>>329 事故解決・・
Range("A" & lastrow : "s" & lastrow).Select →NG
Range("A" & lastrow & ":" & "s" & lastrow).Select →おK
ひたすら””に入れて&で繋げはいいわけですね なんとなくわかりました。
331 :
デフォルトの名無しさん :2013/10/27(日) 04:59:54.11
>>240 240です。少し勉強しましたが、まだわかりません。
VALは文字列を数値に変換します。でも例えば、
第1という文字列をVAL(第1)とすると0がかえってくるとのこと
何のための関数かやはりわからないです。文字列が1だけならばVAL(1)なんて書く必要ないでし。
逆に使い道をご教下さい。
332 :
デフォルトの名無しさん :2013/10/27(日) 05:04:12.57
規約は統一のためだから利害関係にない者同士での押し付けあっても無益だよね あ、真理を突いてしまったわ、ごめんね君ら
>>331 ヘルプ読んで、ググって、それでも理解できないなら
もう君の頭では理解できない問題かと…
締め付けなくてもこのありさまw
コードを書くなって言われてないのに荒れてるし。
世間一般で言われるバグになるコーディングしてんだから指摘されるのは当たり前。
>>332 質問者が糞コードを正しいコードと認識してはいけないということで指摘されているのだが。
それが分からない限りまた荒れるだろう。
335 :
デフォルトの名無しさん :2013/10/27(日) 07:37:51.30
>>334 記述に関するところは正しいも誤りも、規約があって初めて判断できるんだし指摘するに値しないよ。
ロジックでクソだっていうなら話は別だが。
>>334 いや、今回は「1文字変数は使ってはいけない」と言う、やはり締め付けだったんだ。
考えてみれば、VBAは今ある言語の中でも最も間口が広く気軽に使われている言語だし
仕事上や他のObject指向言語とこのスレを同列と考えてはいけないのかも知れない。
俺も1文字変数は使うべきではないと思っているが、やはり押し付けは良くない。
お前の行動もよかれと思ってやっていることだと分かったが、
他の人からしてみて、それが大きなお世話と言うのであれば仕方がないだろう。
>>304 だね。
コード禁止って誰も言ってなくて、叩かれてるやつが勝手にコード禁止って言ってただけ。
質問者がコード晒すのを禁止してたわけじゃない。
クレクレ君に餌を与えないようにってあれだけ言われていたのを理解してないだけでしょ。
というより★5が無くてもあってもコードを書くだけでこの荒れよう。
コードを指摘されている訳だからそれを直せばいいだけなのに。
★5とかコードを晒す云々以前の問題。
>>337 そう思う人はもう一つのスレに行けばいいじゃん。
殆ど誰も行ってないみたいだけど。
>>338 質問が無ければ書き込む必要ないだろ。
ってかそんなこと言うってことは自演っていうのはネタじゃなく本当のことだったのかと。
自演でスレを存続させて何のメリットがあるんだ?
金でも貰ってるのか?w
いや、失礼。今見に行ったら昨日の件で少しレスが付いたのか。 最もあっちは徹頭徹尾荒れっぱなしみたいだけど。
>>339 ?
どこがどう自演だと言ってるのかさっぱり分からない。
単芝君は意味不明なことを書いて場を荒らすのが人生の唯一の楽しみなので かわいそうな子なんですよ
>>331 VALは文字列を数値に変換する関数
VBAでは暗黙的に変換できたりするから、存在意義に疑問をもつかもしれんが
昔のBASICからの名残で存在してる関数
344 :
デフォルトの名無しさん :2013/10/27(日) 12:27:13.56
逆に VBAで数字を数値か文字列か自動判断するのがウザすぎる。 どっちに判断してるか調べないといけない場面もよく出てくるし。 素直にVAL関数とかSTR関数つかってた時代のほうがなにも不安なくスッキリした気分でプログラミングができる。 いろんな省略も同様。 Cell(r,c)=・・・じゃなく、Cell(r,c).Value=・・・、が絶対というルールにして欲しい。
345 :
デフォルトの名無しさん :2013/10/27(日) 13:18:30.32
試してみた Sub testMojiSuuti() Dim a_Str, b_Str, c_Str As String Dim d_suuti, x_suuti As Single Dim e_suuti As Single a_Str = "1" b_Str = "3" c_Str = a_Str + b_Str '文字列扱いの13になる d_suuti = a_Str + b_Str '文字列扱いの13になる ←DimでSingle指定が効かない e_suuti = a_Str + b_Str '数値扱いの13になる ←DimでSingle指定通り x_suuti = a_Str + b_Str '数値扱いの13になる Stop End Sub d_suuti と e_suuti は同じSingle だが結果が違う。 2007だけの問題?最新版ではどう、持ってる人教えて?
変数名がローマ字
まず演算子の優先順位を理解したほうがいいと思うよ 代入演算子より+演算子の方が優先度高いからそれが正常な動作だしバージョンも関係ないよ 逆に結果が4になったらそんな言語危なくて誰も使えなくなる
>>345 わざとらしいね。
適切な変数の名称ができないなら一文字変数と同じ。
>>345 アホらし
Dim d_suuti As Single, x_suuti As Single
350 :
デフォルトの名無しさん :2013/10/27(日) 13:33:13.22
345です 自己解決 d_suuti はバリアントになってた
VBA初心者ですが Excel関数で2番目3番目に大きい値を検出する =LARGE(C2:C11,2) をVBAで記述し見つかった値が書かれているセル番地を知り変数に置き換えるにはどうすれば良いのでしょうか?
353 :
デフォルトの名無しさん :2013/10/27(日) 13:39:12.24
>>348 Dim e As Double
e = 2.71828
354 :
デフォルトの名無しさん :2013/10/27(日) 13:43:53.09
二文字変数が一番いい。
suuti (スーティ) って何?意味がわからん
356 :
351 :2013/10/27(日) 14:08:50.74
>>351 事故解決中
=LARGE(C2:C11,2)の値を検出
22だった場合
Find_Range(22, Range("C2:C11")).Select
Dim a
a = ActiveCell.Address
こんな感じでできそうですがあってますでしょうか?
357 :
デフォルトの名無しさん :2013/10/27(日) 14:09:53.88
二文字変数なら「数値」ですぐに意味が分かります。
359 :
351 :2013/10/27(日) 15:04:03.26
>>358 このスレの方にそう言って頂けると心強い物があります
ありがとうございます。
これだけ叩かれてるのに安心するのかw
前向きは力なり
俺のは左曲がり
UpperCamelCaseとSnakeCaseの組み合わせって時点でキチガイ認定するわ
コーディングルールにケチをつける連中に限って 実際に改善したコードを提示しない件について 結局、コード曝して反論されるのが怖いんだよね
368 :
デフォルトの名無しさん :2013/10/27(日) 19:20:30.06
またそんな キチガイに餌与える様なことを
>>367 コーディングルールってどこのだよw
世間一般に言われてるやっちゃいけないことにケチつけてるやつはいるけど。
直近だと
>>365 とか
批判はするが具体的な改善例を提示しない(出来ない)
そういう話は本スレでやれ
あのスレを本スレと呼んでるってことは やっぱりテンプレ厨か
>>371 改善例もなにもUpperCamelCaseとSnakeCaseのどっちかに統一するだけだろ
お前UpperCamelCase, SnakeCaseの意味わかってないだけだろ
恥ずかしい奴だな
375 :
デフォルトの名無しさん :2013/10/27(日) 22:01:15.99
能書きは良いからさっさと書け 俺が言ってるのは完璧なコードなんてそうそう無いから どっちにしてもケチはつけられるってことだよ
376 :
デフォルトの名無しさん :2013/10/27(日) 22:05:37.55
お前らまだやってたのか。
>>374 もう諦めろ。
>>1 ★5の件でも、1文字変数の件でも
駄々をこねているのはお前だけだ。
正しいと思っていることを貫きとうそうと言うのは素直に偉いとは思うが
スレの空気を少しは読める様になった方がいい。
>>375 だからと言って糞コードを書いていいわけじゃない。
誰も完璧なコード書けって言ってないし。
>>379 わかってて言ってるだろ
コーディングルールが統一されてない以上、どうせ何を書いても別の派閥から叩かれるだけだって
381 :
デフォルトの名無しさん :2013/10/28(月) 07:55:52.20
ExcelのVBAからWebページを操作したいのですが (1)すでにあるページがひらいてるか調べる (2)もしひらいていたらそのページをアクティブにして前面に出し、そうでなければ新しく開く という手順を実行したいです。 苦労してるのは、InternetExplorerというブラウザを使っているのですが そのタブ機能があるのでブラウザは1個だけどその内部にタブが複数開いてるのを どうアクティブにするかで悩んでいます。 どうかよろしくお願いします
そういう(不毛な)話は本スレ()でやれ
384 :
デフォルトの名無しさん :2013/10/28(月) 09:29:22.52
変数の引数は VBAという1言語の視点ではなくプログラマ的には 「値渡し」「参照渡し」「矢切りの渡し」のどれをデフォルトとして採用すべきですか?
385 :
デフォルトの名無しさん :2013/10/28(月) 10:17:09.78
>>385 Sub Macro1()
With ActiveSheet.QueryTables.Add(Connection:="URL;
http://225225.jp/4fx/511_usdjpy.php ", Destination:=Range("A1"))
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.Refresh BackgroundQuery:=False
End With
Range("A1") = Left(Range("A6"), 6)
End Sub
387 :
デフォルトの名無しさん :2013/10/28(月) 11:32:18.26
Privete Sunのプロシージャと Private Functionの戻り値のない関数は 同じものと考えてもOKですか?
>>380 もちろん分かってて書いてる。
それでも相手のコードをクソと言うなら
クソでない見本を見せるべき。
>>389 これのどこが理解できないんだ?
>>374 > 改善例もなにもUpperCamelCaseとSnakeCaseのどっちかに統一するだけだろ
太陽を自分のものにだけするとは!
求められているのは具体的なコードであって説教ではない
>>390 そうだな、何が理解出来ないかって言えば
偉そうなこと言っておいて変数名に
UpperCamelCaseやSnakeCaseで統一しろとか言っちゃうその頭の中身かな。
>>393 UpperCamelCaseとSnakeCaseを混ぜたのを糞コードだと言ってどこが偉そうなんだかわからないが、
その改善策はどちらかに統一しろってことだろ。
何が理解できないんだ?
論点は命名規則じゃなかった
具体的な改善例を提示してみろと言われているのが なんで理解できないのか不・思・議〜
>>389 > それでも相手のコードをクソと言うなら
> クソでない見本を見せるべき。
ちょっと前に良くあった、橋下流の政策談義にでも毒されちゃったのかな。
そもそもコードレビューの文化は、替わりのコードを示すなんてことはやらないよ。
駄目出しと、やって改善への指針の提示。
>>399 >その改善策はどちらかに統一しろってことだろ。
を
>その改善案自体が糞
だと言うのなら、その改善策を示せ
UpperCamelCaseとSnakeCaseが混ざってても気にしないってことだろ
ちょっと何か指摘されると、全人格を否定されたかの如く異常な反応するやついるよな。 しかも、自分が書いたコードじゃないのに、わけわからんわ。
>>394 色々なコードや色々な改善案があるんだから、
>>394 の付けるすばらしい変数名の数々も実際に見てみたいんだよ。
変数名の付け方なんて、当然個人差や組織差があるだろうけど
そういうのを具体的に見るのが面白いし、ためになったりするだろ?
>>401 変数名にはLowerCamelCaseを用いる。
定数には大文字のSnakeCaseを使う。
お前が言ってることは中途半端なんだよ。
そもそもVBAで扱うビルトインメソッドなんかの仮パラメータ名なんかがPascalCaseの場合が多いからね。(camelCaseってあるのか?)
>>406 その線引きは何だ?
だったら1文字でも意味が分かればいいということになるだろ?
お前のはただの自分の感覚の押し付けだ。
>>404 >
>>394 の付けるすばらしい変数名の数々も実際に見てみたいんだよ。
いや、だから、UpperCamelCaseとSnakeCaseを混同して使わずにどっちかに統一するってことだろ
なにがわかんないんだか
>>408 > その線引きは何だ?
ちょっと何の線引きを聞かれてるのかわからない。
>>410 そうすると言った部分と
許容すると言った部分。
互いにわからない人だらけだなw
>>412 だからその線引きは具体的になにを指標にして許容するのかと聞いているんだが。
感覚で言ってるなら1文字変数名を感覚でいいと言ってるのを許容しないのは何故なんだ?
>>414 指針も何も、否定する理由がないから許容するんだけど。
・メソッド名や変数名をPascalCaseに統一する派
・メソッド名や変数名をSnake_Caseに統一する派
がいたとして、何か否定する理由ある?
両者とも俺とは流儀が違うが、それは許容できる考え方で、俺内部で全く矛盾はない。
ちなみに俺は1文字変数許容派だよ。つか、よく使う。rとかcとか。
>>409 わかりたいんじゃなくて、わかったうえで具体例を見たいと言っている
わからないか?
自分の説明能力が欠けてるとは、ほんの少しも思わないんだろうか。
>>415 一文字変数名許容ならそれでいいよ。
ずっと1人で駄々をこねているテンプレ厨かと思った。
すまんかったな。
駄々をこねて暴れているのが自分だと気づいてない模様
取り敢えずテンプレ厨の見本コード待ちか 胸が熱くなるな。
もうこれやめろよ。 > クソでない見本を見せるべき。
そうだな。クソでない見本を見せるべきだな。
そもそも桃白白のコードみたく根本から糞の場合、見本となると全書き換えになるのでだるいわ
怠惰はカッコ悪いぞ 頑張れよw
そもそもここでエラそうに言ってる テンプレ厨がコード書いてるのって まだ見たことないな。 本当に書けるのかな?
おそらく
>>365 は
>>364 のリンク先のFunction Find_Range()のコードに対するものだと思うが、リンク先読むとFind_Range()自体は
さらに別の人が書いたコードで、自分がPascalCase派ならそれを使うときに
> Set FoundRange = Find_Range()
とやるのはしかたないと思うが。
全部自分が書いたのなら、
> UpperCamelCaseとSnakeCaseの組み合わせって時点でキチガイ認定するわ
と言われても仕方ない。
まあまあ、ここはVBAスレなんだし 細かいこと気にすると頭禿げるよ
そういう事情を想像すらせずに、いきなりキチガイ認定しているところがむしろキチガイじみているかもな。
キチガイだらけの青春
430 :
デフォルトの名無しさん :2013/10/28(月) 18:14:29.07
uppercamelcaseとか lowercamelcaseとか snakecaseとか Pacaseとか それぞれどういう意味ですか?
upper camel case: FindRange lower camel case: findRange snake case: find_range PascalCase: upper camel caseと同じ
頭の高いラクダさんと、頭の低いラクダさんと、地面を這ってるヘビさん
> クソでない見本を見せるべき。 こういうことをいう奴って自分で考えようともしないクレクレ君だろw
クレクレ君が立てちゃったスレか。 まさしくコード作成依頼スレだなw
VBAでは.NETコンポーネントは使えないのか? いちいちCOMにしないといかんのか?
で、いつになったらテンプレ厨は
見本コードを晒してくれるんだろ。
>>245 の疑惑を払拭するためにも
早い方がいいよな。
1文字変数をダメと言う人は代わりの変数名を出さない 糞コードというひとは代わりのコードをださない ここはすばらしいインターネッツですね
クレクレ君そのものだなw
そうです。クレナイ君は要らないんです。
道理で前からスレにコードを書いてはいけないとか言ってた訳だよな。 自分が書けないんじゃそりゃおもしろくないもんな。
クレクレ君って騒いでるのがクチダケ君だったからね
446 :
デフォルトの名無しさん :2013/10/28(月) 22:59:32.66
447 :
デフォルトの名無しさん :2013/10/28(月) 23:02:57.36
Privete Sunのプロシージャと Private Functionの戻り値のない関数は 同じものと考えてもOKですかな?
448 :
デフォルトの名無しさん :2013/10/28(月) 23:07:45.42
二文字変数が一番です
そもそもVBAに戻り値のないFunctionは存在しないが 戻り値を無視するのは呼ぶ方の勝手
452 :
デフォルトの名無しさん :2013/10/29(火) 00:09:36.69
プライベート サン!!
453 :
デフォルトの名無しさん :2013/10/29(火) 00:12:34.10
サンを使わずにファンクションで統一していいよ サンに出来てファンにできないことはないけど ファンに出来てサンにできないことはあるから あ、サンじゃなくてサブだった
サンって何かで見た様な気がする ゲド戦記?
455 :
デフォルトの名無しさん :2013/10/29(火) 00:24:34.29
アノ子は人間だ!ソノ子を解き放て!
その子?鈴木?河合?
で、結局テンプレ厨の手本コードは上がったの? それとも本当に口だけ?
クレクレ君全開w
こりゃテンプレ厨、口だけ君確定かな
>>452 よく読め
Private Sub でも Private Sun でもなく
Privete Sun だ
もはや俺たちが想像も出来ない別の何かなんだよ
そこはかとなくヨーロッパの香りがするコード
Sunに気を取られてPriveteには気づいてなかったわ すっかり釣られてるのか、俺たち
463 :
447 :2013/10/29(火) 13:41:56.19
なんか悲しいね
おーい、オレ(
>>461 )も釣れたアホ魚の仲間に加えてくれよ
てっきりスペイン語かなんかのコードかと思ったぜw意味通じないけど
466 :
デフォルトの名無しさん :2013/10/29(火) 14:44:58.24
VBAでは 開いてない複数のbook内の、指定したシートの、指定したセルの値を そのbookを開かずに値を取得することは可能ですか?
467 :
447 :2013/10/29(火) 14:46:01.47
>>465 OK。あなたも仲間入り。網の中では他のお魚さんたちと仲良くしてくださいね(藁)
>>461 8匹目
(笑)とか(ワラとか(藁)とか、古くて懐かしいけど最近リバイバルでもしてるの?
>>466 できない
え、できるだろ?
自分でファイルを開く処理を書かなくてもExcel 4.0のマクロで読み込めるけど、 厳密にはファイルを開いてないわけじゃないからなあ
>>470 4.0マクロは怖いよ。
とっくにMicroSoftのサポートから外れてるし。
bookを開かずに ってのが何を意味するかだな 単に画面に出ないでってだけならやりようはいくらでもある
>>473 先の方法はさっきも言ったけど、MicroSoftのサポートが遠い昔に切れてるから怖くて使えないし、
後の方法ではSQLを使う方法になるだろうから、
セル位置を指定しての取得は状況によっては困難になる。
その辺目をつぶって使うか、開くんだけど表示させないか。
難しいね。
今のエクセルファイルって、xmlをzipで圧縮したものじゃなかったっけ zip解凍して頑張れば自分で直接ファイルから読み取れるんじゃね
477 :
473 :2013/10/29(火) 18:01:37.83
COM経由で使えば、見た目オープンしてないように見える
482 :
デフォルトの名無しさん :2013/10/29(火) 18:38:11.14
BIFF解析とは?
もうディスクを直接読めよ
openxmlってわかりにくい ファイルの依存関係が多いからね
クレクレ君があっちで頑張ってるなw
他人をテンプレ厨と言いながら、そのテンプレに固執して
住人の了解も得ずテンプレを変えてみちゃったり。
どっちがテンプレ厨なのかと思えるけどね。
書き直しする度にダメ出しくらって、結局どう書けばいいんだ?
っていう話なら分かるけど、きちんと指摘しているわけだから
それも直さずどう書けばいいって聞いてくるのは
どう見てもクレクレ君根性丸出しなんだよね。
>>189 の糞コードの指摘で何かスイッチ入っちまったのかw
>>485 馬鹿なの?
どう直せば良いかなんて誰も聞いてないよ。
他人のコードにケチつけるなら
その前に自分が誰にも文句の付けられようがない
完璧なコードが書けることを証明して見せろと言ってるんだよ。
それが出来ないからって
必死で論点ずらして相手をクレクレ君呼ばわりしても
誰もごまかされないよ。
コードを書けって? どういうスレなのか分からなくなってるアホがいるw
>>491 ん?
rだけだとRow或いはRowsとも取れるけど?
一つに絞れないわけで全然ダメダメなんだけど。
一文字で言いたいことを伝えてみろよw
だんだんコード作成依頼スレっぽくなってきてるなw
いいことだ。
>>492 名前付けて貰って嬉しいのは分かったから
報告が終わったら向こうのスレに帰ってね
>>493 つうか、ここで暴れたって向こうに人が行くわけでもなし、
このままほっときゃ向こうのスレは過疎って終わるんだから
いちいち相手すんのやめようよ
色々遠吠えした挙句、結局口だけテンプレ君が証明したのは 「自分にはコードが組めません」ってことだけだったからなぁ
>>495 「口だけテンプレくん」って聞いて「口だけ頭」思い出した
人のコードにいちゃもん付けてコード書けない奴ってなんなの?
ルールが無いから荒れちゃったね。
このスレは普段はこういうgdgdな状況でも良いんだよ 誰かが困って質問したときに対応できるヤツが相手すればそれでいい。 口先だけの某テンプレ厨見たいに イチャモンつけるだけのやつしかいない糞スレとはそこが違う。
口だけテンプレ君が来ると荒れるね
>>503 餌を与えているお前も荒らしているんだけどね。
古い格言だが 「荒らしにレスするのも荒らし」
クレクレ&テンプレ厨が頑張ってあっちのスレ荒らしちゃってるよw このスレは荒れて終わりそうだな。 これじゃルールなしテンプレは意味ないね。
あっちのスレが荒れてるなら ルールありテンプレにも意味がないってことだね。 ていうか、こっちはルールがないというより ルールをたてにして他人に強要する輩が嫌だから あえて細かく決めてないだけ。 この状況は望ましいとは言わないが、 まぁ許容範囲。
ルールがあるとルールを守らないやつが出てきて荒れる。 ルールが無いならルールが無いから荒れる。 本スレではクレクレ君に餌を与えて(コード晒し)荒れた。 このスレではテンプレにルールを無くしてみたら、書き込んだコードが糞だと荒れた。 ようはクレクレ君に餌を与える行為があると荒れる。 クレクレ君に餌を与える行為が無くならない限り荒れるのは無くならないと思う。
>>507 何にせよクレクレ君に餌を与えることで荒れてるわけだから
本スレにルールがある分そっちの方がまともだと思うけどね。
ルールが無ければルールが無いなりに別のことでもあれる可能性を秘めてるわけだし。
そもそもルールなんて問題があったからこそできたものだろ。
お前も荒れないようにするためにルールを無くしてみたら失敗してるわけで。
最初は自演でうまく回っているように見えてたけど結局荒れてるしね。
この荒れが許容範囲と言いながら許容できてないから本スレが荒らされてるわけだし。
全然許容範囲じゃないだろw
510 :
507 :2013/10/30(水) 11:42:24.14
>>509 >お前も荒れないようにするためにルールを無くしてみたら失敗してるわけで。
お前って何のことさ?
俺は
>>1 じゃないのにテンプレどうこう出来るわけないじゃん
VBA関連のスレが2つあってこっちが良いからこっちに書き込んでるだけで
俺自身は向こうに書き込む気はないし、
自称「本スレ」がどうなろうと知ったこっちゃないよ。
本スレとかそうじゃないとか議論すること自体無意味じゃないかな? 単にタイトルが同じなだけで内容的に許容範囲が明らかに違うんだから (というか、俺にはあっちのスレの目指す方向性が理解できない) あっちが良い人はあっちで書けば良いし、 こっちに書きたいならこっちに書けば良い。 まぁ、向こうはこちらのスレに意味不明な制約を課しているだけだから 書き込む意義があるとも思えんけど、 それでもそっちが良いって言う奇特な人は居るのかもよ。
て言うか何でテンプレ厨は自分の望み通り立てた向こうのスレを使わないんだろ。 やっぱり誰にも構ってもらえないからこっちでこんなに必死になってるのかな?
ここがあるから自分のスレに人が来ないと思い込んでいる節はあるよね まぁ、傍からみたらあんな下らんテンプレ立てといて何言ってんだって話だが 本人だけは気づいていないという哀れさ
insert into ngwords values('テンプレ'); insert into ngwords values('クレクレ');
516 :
デフォルトの名無しさん :2013/10/30(水) 14:32:56.05
VBAで質問したいのですがいいですか? 社員リストシートのB8〜22まで氏名、C8〜22までメールアドレスがあり、 スタートボタンを押すと、PDFで作った給与明細が添付して送信するVBAが あります。エラーが発生すると作業が中断され、指定した人にだけ送信したい のに全員に送信されてしまう不具合が発生しました。 そこで指定した人だけに送信できるように変えたいのですがどのように修正を かけるとよいのかお力をかしていただけませんか? ソースは以下のようになっています つづく
517 :
デフォルトの名無しさん :2013/10/30(水) 14:35:42.73
つづき Sub SendMail_Click() '[参照設定] Microsoft CDO for Windows 200 Library (or Microsoft CDO for Exchange 2000 Library) Dim fFiles As FileDialog Dim vGetFile As Variant Dim i As Integer Dim iOkOrCancel As Integer Dim iTotal As Integer Dim iSend As Integer Dim a As Integer Dim b As Integer 'ダイアログの設定 Set fFiles = Application.FileDialog(msoFileDialogFilePicker) With fFiles.Filters .Clear .Add "PDFファイル", "*.pdf" End With つづく
518 :
デフォルトの名無しさん :2013/10/30(水) 14:39:37.39
つづき 'ファイルを複数選択にする fFiles.AllowMultiSelect = True 'ダイアログのボタンを「選択」にする fFiles.ButtonName = "選択" 'ダイアログを開いてファイルを選択する fFiles.Show '選んだファイル一覧を出す For i = 1 To fFiles.SelectedItems.Count vGetFile = vGetFile & fFiles.SelectedItems.Item(i) & vbCrLf Next i If fFiles.SelectedItems.Count Then MsgBox vGetFile Set fFiles = Nothing '選んだファイルで正しいかダイアログを開いて聞く iOkOrCancel = MsgBox("これでよろしいですか?", vbOKCancel) つづく
続けなくてよろしい。 コードを貼る前に、まずしたいことを箇条書きで書け。
>>516 「指定した人だけに送信できるように変えたい」のに、「指定した人にだけ送信したいのに全員に送信されてしまう
不具合が発生」とは一体どういうことだ。
なんでさえぎるの?続けなくちゃわからないのに。 人の話はちゃんと最後まで聞けと学校の先生に躾けてもらえなかったのか?
>>521 > なんでさえぎるの?続けなくちゃわからないのに。
質問の内容と関係無い部分だから。単なるノイズ。
まあ、質問者が、どこが関係あってどこが関係無いのかすらわからない程のレベルなのかもしれんが。
質問者に説明させるより、ソースを見た方が早そうなのに。 質問者もそう判断したんだろう。 さえぎられたから結局謎になってしまった。
>>519-520 まずコードを全部貼ってもらった方が良くない?
肝心のメール送信部分がまだ書かれてないから
これじゃ何が悪いのか分からないよ。
FileDialogの扱いも
If fFile.Show=-1 Then・・・
みたいに書いたほうが良い気はするけど
ひとまずそこは後回しで、まずはコードを最後まで読みたい。
>>519 例の、コードを読んだり書いたり出来ない荒らしの
口だけテンプレ君かい?
長いコードはcodepadに貼るか、直接Bookをどっかにアップしてくれよ。 こんな調子で5レス10レス続けられても困る。
527 :
524 :2013/10/30(水) 16:37:54.11
>>525 この場合はコード全部出してもらうほうが解決は早いと思うが、
一般論としては
>>519 の言い分にも一理有る。
そんなことより、せっかくスレが機能しだしているこの状況で、
くだらないまぜっかえしだけが目的なら
君はその口だけ君と同レベルかそれ以下だって事を自覚したほうが良い。
>>527 > くだらないまぜっかえしだけが目的なら
それは心外だな。
初心者は何が真の要求で、どうアプローチすれば良いかわからないのに、まずコードをどこかから探してきたりして
「こうやったのですがうまくいきません。何が悪いのでしょうか」的な質問をしがちで、そもそもそのアプローチが
間違っていることが往々にしてある。
俺に突っかかって来る奴の方が荒らしだと思うけどね。
>>528 落ち着いて相手のレスをよく読めw
くだらないまぜっかえしと言われているのはお前じゃなくて
>>525 だ。
せっかくの質問をのっけから潰してしまう
>>519 みたいなレスの仕方は、
心底残念だとは思うけどね。
530 :
520 :2013/10/30(水) 16:53:55.28
あーうざいな。 俺がまとめてやるよ。 指定した人にだけ送信する機能を実装済みなのに、指定した人だけじゃなく全員に送信されてしまうバグが発生して修正箇所がわからない → コードを貼るのを続けるか、codepadかbookアップロード 指定した人にだけ送信する機能が未実装で、どうその機能を追加すればよいのかわからない → D列に送信済みかどうかのフラグを立て、メール送信処理でその行をスキップすればいいんじゃね?
質問者はもう問題解決済みだと思うよ
532 :
デフォルトの名無しさん :2013/10/30(水) 17:03:44.69
>>531 解決はしていないようだ
だが、いろんな反応から、ここでの質問は拒否されたと感じたんじゃないかな
535 :
デフォルトの名無しさん :2013/10/30(水) 17:09:33.87
300行ほど、長いコードだね
クレクレだろうがなんだろうがそこは関係ないのがこのスレ 質問を見て答えたければ答えるし、答えたくないときはスルーする。 ただ、自分が気に入らないからといって 他の回答者を妨害したり、質問者を追い払うような真似はやめて欲しい。
もうメタ議論はいいかげんにしろ
>>536 > 他の回答者を妨害したり、質問者を追い払うような真似
俺はするけど。君には止められないよ。
もうなんかこんな話ばっか。yosoでやって欲しいわ。
俺は、「エラーが発生すると」の原因を調べて、そこで作業が中断しないようにし、リカバれるような仕組みにするのがいいと思うんだが。
>>540 それもこれもソースを見てみないことにはどうにも出来ませんよね
542 :
デフォルトの名無しさん :2013/10/30(水) 17:37:09.20
>>541 何をやりたいのかもあやふやなのに、まずコード見たいの?
つか、給与明細送付処理ってかなりクリティカルな感じがするんだけど、こんな適当なことでいいのか?
アンチ★5厨、逆にうざいわ
来てみたらニュー速かと思ったわw
549 :
519 :2013/10/30(水) 17:53:54.37
>>547 > そしたら質問者が何をしたいのかはおのずと判明するんじゃないですか?
そうかな。
質問者は「選択して送信したい」らしいが、本当にやりたいことが「選択したい」ことなのかどうかわかるか?
やりたいことは、「選択したい」ではなくて「送信エラーにより未送信の人を選んで再送信したい」かもしれない。
それを知るためには、自然言語で説明して貰った方が良い。
550 :
デフォルトの名無しさん :2013/10/30(水) 18:03:06.88
>>547 マルチと言えるかな
時間を見ると、このスレが拒否するような反応を示したから、
そのまま放置して別の所で質問したんだと思うよ。
>>549 「そこで指定した人だけに送信できるように変えたいのですが」
と意思表示してるょ
551 :
519 :2013/10/30(水) 18:09:06.13
>>550 > 時間を見ると、このスレが拒否するような反応を示したから、
俺がレスする前に投稿されたようだが。
> 「そこで指定した人だけに送信できるように変えたいのですが」
> と意思表示してるょ
ちょっと表現がわるかったか。
> 「送信エラーにより未送信の人を選んで再送信したい」
↓
> 「もう一度送信処理を行うと、送信エラーになった人に再送信されるようにしたい」
つまり、人が選択したいのか、システムが選択するのかの違い。
>>550 最初に質問が書き込まれたのが
>>516-518 で
14時32分56秒〜14時39分37秒
多分向こうに投稿したのが
14時49分36秒
こっちで
>>519 がコード貼り付けを制止したのが
15時01分31秒
ここで止められてというより
コードの分割貼り付けがメンドクサクなっちゃったに1票
553 :
デフォルトの名無しさん :2013/10/30(水) 18:18:02.33
まあ全コードがアップされたんだから、答えたい人はあっちで答えればいいってことでこの話題終了
Function fSendMail() As BooleanがTrueになるケースがないだろ、というコメントだけしておこう。 読む気になれん。
そう言えば前、桃白白も自分のコード どっかに書いてリンク貼ってたけど、 あんな感じのだとどこら辺のがいいんだろ。 長いコードだとやっぱり色々大変だよね。
557 :
桃白白 ◆9Jro6YFwm650 :2013/10/30(水) 18:38:30.82
>>557 コードが長い場合はここに貼って質問しましょう
くらいのテンプレがあってもいいかな。
'メールを設定するファンクション Function fSetUpMail(sMailAddress As String, sMailFile As String) As Boolean (〜中略〜) fSetUpMail = True End Function 'ファイルを添付してメールを送信するファンクション Function fSendMail(vGetFile As Variant) As Boolean (〜中略〜) '[メールを設定する]ファンクションを呼び出す If fSetUpMail(sMailAddress, sMailFile) = False Then End If a = a + 1 Loop fSendMail = False End Function FunctionじゃなくてSubでいいだろこれ
>>557 ありがとう。
前ブックごとアップローダーでUPしたけど
そこまですること無いかなって時に便利そう。
561 :
デフォルトの名無しさん :2013/10/31(木) 01:37:27.49
webクエリの更新で取り込んでるときに、取り込み終わるまで拘束される時と、されない時があるのはどうしてでしょうか。 Excelに拘束されないときは、他でサイトみたり文字打ったりできるんですけど、 拘束されるとwebクエリの取り込みが終わるまで、文字も打てないしクリックも出来なくなるので、長い取り込みの時に不便です。 何か良い方法はないでしょうか。win7のOffice2010 (更新対象のwebクエリのあるセル指定).QueryTable.Refresh BackgroundQuery:=False
562 :
デフォルトの名無しさん :2013/11/01(金) 04:39:11.87
あげ
別のシートからの値を書き込みシートに格納し 格納した値をもとにδr、δg、δbを計算して出力するというプログラムなのですが 81600行くらいしたところで ”実行時エラー1004:アプリケーション定義またはオブジェクト定義のエラーです。”とでます。 何がだめなのでしょうか。
564 :
563 :2013/11/01(金) 12:27:33.95
コード Sub ScaleTransformation() Set writesheet = ThisWorkbook.Worksheets("スケール変換") Set Rsheet = ThisWorkbook.Worksheets("RGB-1_R") Set Gsheet = ThisWorkbook.Worksheets("RGB-1_G") Set Bsheet = ThisWorkbook.Worksheets("RGB-1_B") writesheet.Range("b2").Value = "横列" writesheet.Range("c2").Value = "縦列" writesheet.Range("d2").Value = "R" writesheet.Range("e2").Value = "G" writesheet.Range("f2").Value = "B" writesheet.Range("g2").Value = "δr" writesheet.Range("h2").Value = "δg" writesheet.Range("i2").Value = "δb"
,
>>563 またコード貼るのあきらめちゃったのか?
エラーになった行付近くらい貼れよ。
568 :
デフォルトの名無しさん :2013/11/01(金) 13:41:41.01
>563は他のスレに移った様だね
でも、81600行までちゃんと動作してるのにいきなりエラーになるというのは コードの問題じゃなくてPCの問題なのでは… 自分の場合、Dell製のPCを使った場合に限り、なんてことない画像コピーマクロで しばしば動作が中断するようになった。SONYや富士通の時は平気だったのに。
>>569 やっぱりそういうのもあるのですか・・・
試しに別のPCでやってみます!
572 :
デフォルトの名無しさん :2013/11/01(金) 14:59:58.64
VBA初心者です。 さっきスんばらしいFunctionを作ったのですが 引数が2つあって、もちろん2つの数値を渡したときはちゃんと動きます。 でも1つだけ指定して1つは省略、みたいにしても機能するようにしたいです。 それにはどうやればいいですか? 現状は引数を1つだけにした場合なんかエラーが出てます。
573 :
デフォルトの名無しさん :2013/11/01(金) 15:14:50.12
>>563 Yが25になった時のループで
Ysは1060803になり、
writesheet.Cells(Ys, 2).Value = Y は、
エクセルの行数制限 1048576 を超えるから、エラーになる。
575 :
572 :2013/11/01(金) 15:26:20.33
>>574 ありがとう!
でもOptionalってどこに使いますか?
こんな感じですか?
Function Test (Optional a as integer, b as integer)
・・・・・・
End Function
もしそうならこの場合2つの引数のうち前者が省略可なら
呼び出すほうはどう記述しますか?
Activecell.Value= Test (,2)
みたいに( , )の中のコンマの前を無記入というだけでいいですか?
Function Test (b as integer, Optional a as integer) ・・・・・・ End Function Activecell.Value= Test (2)
577 :
572 :2013/11/01(金) 16:09:04.84
578 :
572 :2013/11/01(金) 16:10:33.94
ところで省略した場合、 そのaの値はちゃんとゼロとして扱われますか? それともなんらかの工夫(場合分け)をしてもし省略されてたときはそのとき用のコードを書かねばエラーが出ますか/
579 :
デフォルトの名無しさん :2013/11/01(金) 16:17:42.22
それくらい自分で試せ
>>578 Optionalの使い方くらいググれよ。
>>573 なるほど存在しない行数のセルに値を入れてたから
オブジェクトエラーがでたと、、、
すごい納得しました、、
別の列も活用してみたいと思います
582 :
572 :2013/11/01(金) 20:07:00.34
>>579 >>580 そんなことおっしゃらずに教えていただけませんか?
わたしはかよわい初心者なのです
糞白白の匂いがするなw
そう言えば最近あまり見なくなったね
>>582 function hoge(hage as variant,optional hige as variant=0) as variant
みたいに、省略したときのデフォルトの値を書いておく。
586 :
572 :2013/11/01(金) 20:37:42.59
>>585 ども!
そんな使い方があったのかー
でもそんな書き方だと省略しなくてもその指定した値が使われそうでない?
ああごめん、省略しない場合はつかわれない。
589 :
572 :2013/11/01(金) 20:40:57.51
>>580 ググレよ言うヒマがあったら、どこ見てるか教えてくれよ。
専門外のことは誰にもわからないはずだ。
たとえばあなたが「ベルギー名物のワッフルの作り方」を教えてくれと言ってたら
わたしは単に「ググれ」とは言わないよ。
長年の経験から初心者にこそ伝えたい秘伝みたいなのがあるから。
しかもその秘伝はたった一言でつたらられるほど簡単なこと。
でもそのことはググることでは見つけることはほとんど不可能だろう。
いつもの自演かw
592 :
桃白白 ◆9Jro6YFwm650 :2013/11/01(金) 20:45:23.35
>>589 ベルギー名物のワッフルの作り方をかわいい桃白白に教えて。
ほんのり桃の香り
>>589 オメェも糞うぜぇ奴だな
vba optional この2語をブラウザの検索ボックスに入れてエンターキー押せばいろんなサイトが出てくるだろうが。
それ見てから言え
わっふるわっふる
釣り堀すぎだろ
ワッフル何それおいしいの? って言ってるレベルのやつに作り方の極意教えてどうなるってんだ
>>561 そのプログラムが、処理の間に、あちこちに、
sleepを入れていないから、他のプログラムに、
CPUのタイムスライスが、もらえないのかも
それとも、そのプログラムが、ロックしたり、同期したりして、
機器を独占するような、重要な処理をしているとか
それとも、そのプログラムの優先度が、他のプログラムよりも高くて、
CPUのタイムスライスが、もらえないとか
句読点が、多過ぎて、読み辛い、かも
>>599 句点はないと思うけどまあいいかどうでも
なんでpowershell実行環境を付けないんだ? いつまでもvbaじゃ効率わるいだろ
602 :
デフォルトの名無しさん :2013/11/02(土) 13:44:12.25
>>561 タスクマネージャーを起動しておいて、
webクエリの更新時に、プロセス EXCEL.EXEのCPU値を見る事を勧める。
拘束時に90とか高くないなら、VBAも含めエクセル以外が拘束の原因かもしれない。
Cドライブの空き容量は?
拘束されるURLを知らせてもらえれば、それについても関連を調べられる。
>>602 CPU0に割り当て固定し、そのCPUの使用率を見ないと「23%だったので違うと思います」って言われたり
だれもBackgroundQuery:=False にはつっこまないのか 全部拘束されてるのに、あまりに短いから気付いて無いだけじゃないのか
605 :
デフォルトの名無しさん :2013/11/03(日) 07:06:47.44
変数渡しである本で「参照渡しはするな。ほとんど使われない。」みたいにあったのですが、本当ですか? 本当なら参照渡しみたいなのはこれから学んでプロになるプログラマには混乱の元で有害だと思うのですが。 そしてこれは自分の感想なのですが 渡した変数はそのFunctionプロシージャ内では 代入として使ってはだめで ’[変数]=数式 みたいな使い方 参照として使うのみ ’[別の変数]=[変数]を含む数式 という方針でいいですか?
>>606 そっちはテンプレの★2 ★3 ★4に抵触するからスレ違いだよ
>>605 >変数渡しである本で「参照渡しはするな。ほとんど使われない。」みたいにあったのですが、本当ですか?
本当ではありません。引数はデフォルトで参照渡しです。デフォルトで参照渡しになっているということは
参照渡しを使うことが推奨されるということです。
>代入として使ってはだめで ’[変数]=数式 みたいな使い方
>参照として使うのみ ’[別の変数]=[変数]を含む数式
>という方針でいいですか?
その方針はダメです。代入するのがダメな理由がありません。
代入できるのですから最大限それを活用すべきです。
その方針がダメな理由はあるのかい
if function() thenぢゃなければええよ そう、a = function() if a thenならね
>>610 その方針がダメな理由は代入できるってこと。
代入できるように言語が設計されてるんだから、
設計通りに使うのが言語の使い方として適切。
参照渡しと組み合わせればプログラミングの幅が広がる。
>>605 それ、VBAの本?
.Net系の本じゃないの?
>>613 代入すべきか否かのお話で気にすべきはってことだけど
>>615 > if function() thenぢゃなければええよ
これ代入になってないよ
>>618 暗黙的な排他的な指摘だと思うんだけど
1から10まで言わないと理解できないの?
>>619 1から10まで言われないと理解できないから教えてください。
暗黙的な指摘ってなんですか?
排他的な指摘ってなにがですか?
>if function() thenぢゃなければええよ
>
>そう、a = function()
>if a thenならね
これってどういう意味ですか?
Ifの条件式に関数を書くべきじゃないっていうことかな? それ自体もよくわからないが、引数との関連もわからない。 意味不明すぎる。
何かカプセル化絡みの話の様な気がするけど、 何でダメとその本に書いてあったのか聞きたいね。
>>609 > 本当ではありません。引数はデフォルトで参照渡しです。デフォルトで参照渡しになっているということは
> 参照渡しを使うことが推奨されるということです。
マイクロソフトが公式見解なのかな?
個人的な見解だったら問題だと思うけど。
>>622 >「参照渡しはするな。ほとんど使われない。」
ほとんど使われないから参照渡しはするなってだけだったら笑うよねw
>>609 同じモジュール内ならどうでもいいです。
違うモジュール同士で使う時だけ意識してください。
なぜかはヒ ミ ツ(はぁと)
>>605 >代入として使ってはだめで ’[変数]=数式 みたいな使い方
>参照として使うのみ ’[別の変数]=[変数]を含む数式
>という方針でいいですか?
引数 → 入力
代入 → 出力
と考えて、入力と出力をごっちゃにしないようにという理由ならいいんでないの
>>626 いいんじゃないの
どうでも。
俺はそんなまどろっこしいことしないけど。
>>627 オナニーコード書く人間らしいコメントw
>>612 できることはしないとダメってこと?
そんなもん理由になるかアホ
プログラムで飯食ってるがオナニーじゃないコードなんか一度も書いたことないよ
>>629 制限をかけて自らの可能性を潰すべきじゃないってこと。
よくわかってないから混乱する。
混乱するから有害だ。
有害だから制限する。
こういう負の連鎖から
使いまくってわかるようになれば混乱しなくなる。
混乱しないから無害。
無害だから制限する必要ない。
こういう正の連鎖に転換を図るべき。
プロになるプログラマなら参照渡しを使いこなして当然。
逃げちゃダメだ、逃げちゃダメだ、逃げちゃダメだ、これこそが碇シンジメソッド。
糞白白臭がひどいw
>>628 うぜぇよコード書ける様になってから
出直せテンプレ野郎
早くVBAサポートうちきられろや 世の中はもうドトネトなんだよ いつまでもCOMとかいう糞にしがみつくな
>>631 なら例えば「GoToは使わない」って方針はダメってことになるんだが
そういうことだね?
>>636 お前、例外ハンドリングする時にGoto使わないの?
>>636 GoToと参照渡しは関係無いような気もするが、
自分だったらGoToの弊害を列挙してGoToを使うデメリットと
GoToを使わないメリットを力説するだろうな。
十把一絡げに語れるものじゃないと思うが。
VBAとかいうゴミが無くなればgotoなんてイヤイヤ使わなくて済むのにね
とりあえずその「ある本」とやらのタイトルと筆者さらせや どんな文脈でどんな意味でそう言ったのか分からん
>>639 VBAはそう言うもんなんだから仕方ない。
嫌なら.Net側からEXCELいじればいい。
>>609 べつに参照渡しを推奨なんてしとらんと思うが
デフォルトが参照渡しなのは、値渡しでは出来ない事が出来るからそうなってるだけ
関数の基本としては引数は変更しちゃ駄目。それすでに数学的には関数じゃない
プログラミングでのプロシジャとしては、そうできた方が便利な事があるから出来るようにしてあるだけ
>>642 FunctionじゃないならSubにすればいいだけだと思うが・・・
>>637 On Error GoToとGoToは別のステートメントだよ
>>638 GoToは例え
>>612 や
>>631 が「理由になってない」って言いたいだけ
メリットもデメリットも説明されてない
>>644 なら、値型の方がいいと思ってるの?
だとしたら、その理由は?
>>644 たとえになってないって言ってるんだよ。
GoToがこうだから参照渡しがこうだと言えるようなものじゃないよねってこと。
参照渡しに制限をかけるメリットを説明するのは自分じゃないから
自分に言われても困る。自分が言ったのはGoToについて自分だったら使わないメリットを
示すってこと。自分は参照渡しとGoToを区別して考えてるけど、君は同じように考えないと
気がすまないのかな。なんかそれって不器用だよね。小回りがきかないっていうの、イノシシみたい。
>>642 >関数の基本としては引数は変更しちゃ駄目。それすでに数学的には関数じゃない
これは何で?
>>646 雲行きが怪しくなってきたら論点をずらすのか。
クレクレ君の言いそうなことだな。
>>649 参照渡しの話だったよね。自分は参照渡しの話をしてたよ。
GoToで論点をずらしたのは
>>637 のように見えるけど・・・
>>650 そうやって逃げるんだw
口だけテンプレ君か。
>>651 いや、実際に論点を変えたのは
>>636 なら参照渡しに話を戻せばいい。
そもそもはそれの話だった訳だから。
>>651 ずれそうだから元に戻そうとしてるだろ。
何で数レスだけのやり取りの流れを把握できないんだろろうね。
で、
>>648 にはどんな回答をしてくれるのかなあ。
数学的な関数 y=f(x) だと確かに引数 x の変更はありえないけど、 そのこととプログラム言語における関数を完全に同一視してる時点で単なる知識自慢の失敗にしか見えない
>>658 数学的関数というより、バグ対策だろ。
書き換えちゃいけない値を書き換える可能性があるわけだから。
>>659 ?
値渡しで渡したって元の変数の内容が変わる場合だってあるでしょ?
それは理由にならないよね。
値渡しで元の変数の内容変えられるか? 元の変数がオブジェクトを持ってた場合、そのオブジェクトの状態は変わるが 元の変数が持ってるオブジェクトを別のオブジェクトに差し替えたりはできないはず
>>661 値を変えてはいけないと言う観点からみれば
参照型変数の値渡しの場合、例えばそれがクラスだったとして、
そのプロパティを変えたりすれば元の方のプロパティが変わる。
クラスの差し替えは内容が書き換えられると言う観点で言えば、
クラス自体の参照先の書き換えとなるのでまた別問題。
もちろん、
>>622 で言ってるクラスと言うのはクラスのインスタンスのことで、参照先を書き換えると言ってるのは
スタックエリアに格納される参照先アドレスのことだからね。
変な上げ足は取らないでね。
>>658 完全に同一視してるわけではないと思うが
プログラミングでのプロシジャとしては、ってかいてあるじゃん
668 :
デフォルトの名無しさん :2013/11/03(日) 18:51:59.80
>>630 プログラマの仕事って一日中プログラミングしてるんですか?
それだったら転職したい。
スキルがUPするなら毎日楽しそう。
でもそんなに1年中プログラミングするほど仕事が存在するのかな?
669 :
デフォルトの名無しさん :2013/11/03(日) 18:57:52.68
発見したんだけど 関数の引数は変更しないようルールを守れば 値渡しでも参照渡しでもどちらも動きは全く同じなので 全く気にしなくていいから楽なのでは?
670 :
デフォルトの名無しさん :2013/11/03(日) 18:59:54.38
そんなにみんなけんかするなら 新しい変数の渡し方「矢切りの渡し」に統一すればいいんじゃないか?
>>669 挙動をちゃんと把握していればそんなルール作る必要無いと思うけど
>>668 プログラミングの仕事なんて、コード書く時間なんてほんの少し。
もしかして本チャンのコードを書きながら仕様を考えてるなんて思ってるのか?
「方針」の方は参照渡しの話じゃないだろ お前らやっぱり頭悪いな
>>668 いいなー、プログラム組むだけで
要件定義書も仕様書も作らずテストもしない世界。
>>673 お前本当にルールで縛るの大好きな。
向こうのスレでいくらでも縛られてればいいじゃん。
>>668 コーディングなんて下っ端の仕事と思われてるんで零細ブラックなら心が折れるまで書き続けられるよ
686 :
デフォルトの名無しさん :2013/11/03(日) 19:37:07.51
>>687 いや、頭悪い連中と話しても無駄だし
しかし頭の悪さではお前がダントツだったよ
'************************************************************************************************ ' 列削除プロシージャ(列ラベル, 列ラベル辞書, 対象シート )列を消して辞書からも該当列を消す ' 前提プロシージャ:BuildColumnLabelDictionary(列ラベルと列番号の辞書オブジェクトを作成する) '************************************************************************************************ Private Sub DeleteColumn(ByVal delColLabel As String, ByRef targetSheet As Worksheet, ByRef srcDic As Object) 'delColLabel:削除したい列のラベル 'targetSheet:対象のシート 'srcDic:対象の列ラベル辞書 Dim delColIndex As Long '削除列番号 Dim colLabel As Variant '列ラベル(列チェックに使用する) '削除する列ラベルが辞書に存在すれば、辞書とシートから該当列を削除する。 '該当列より右の列は、列番号を1ずつ減らして辞書に再記録する With targetSheet If srcDic.Exists(delColLabel) Then delColIndex = srcDic(delColLabel) .Columns(srcDic(delColLabel)).Delete srcDic.Remove (delColLabel) For Each colLabel In srcDic.Keys If srcDic(colLabel) > delColIndex Then srcDic(colLabel) = srcDic(colLabel) - 1 Next colLabel Else '対象のラベルが辞書に存在しない時のエラー処理(省略) End If End With End Sub
692 :
デフォルトの名無しさん :2013/11/03(日) 20:02:19.13
693 :
689 :2013/11/03(日) 20:26:41.60
結果的に色々間違ってたので見なかったことにしてください
Let's 魚拓
695 :
689 :2013/11/03(日) 20:52:39.26
ああ、コードはどうでもいいです
設計やらして、くれるなら御の字でしょ うちは他人が作った腐りきったスパゲティを一本一本紐解く仕事のが多いから死にそう
697 :
デフォルトの名無しさん :2013/11/04(月) 10:46:00.18
>>696 楽しそうでいいやん。
スキルもつきそうだし。
こっちはデータセンタの仕事で、大量の部品のシリアル番号を手書きしたりスキャンしたりつまんないぞ。
他のIT業界で転用できるスキルもつかないし
699 :
697 :2013/11/04(月) 20:42:32.91
>>698 そういたします。
やっぱりプログラマは専門職だから給料もいいんでしょうな?
残業はあっても楽しいプログラミングならば耐えれると思うし、残業代も高額ならそれもやる気が出そうだし。
月給で40万くらいある?
プログラマって現代の奴隷の隠語だよ?
701 :
デフォルトの名無しさん :2013/11/04(月) 21:01:45.18
手取りで最低50万くらいはあるんじゃないの? よく知らんけど。
>>699 技術開発とかする部署に行けばいいんじゃない?
最新技術を拾ってきて社内に展開したり?セミナー開いたり?
他の部署には疎くてな。
でもウチんとこはそんなプロフェッショナルが育つ土壌が無く、大体中途との噂。
中小はスキルアップするのも大変だね 下らない仕事に時間を奪われて勉強する時間が奪われる
大手だって自分で努力して時間を作らないとスキルアップなんてできないけどな
いいとこは業務自体がすでに勉強になる 土方の仕事は頭使わないし難しいことしない肉体労働に近いから得るものがない
うち割といいとこだけど残業死ぬほどやっても手取り25がいいとこだよ
708 :
デフォルトの名無しさん :2013/11/05(火) 14:55:43.73
色を使うときの定数 vbRedとかvbBlueはすぐわかるけど オレンジ色、紫色、ぐんじょう色、うす緑色、水色、などなど これらの色のあvbで始まるアルファベットを忘れた場合、どうやって調べますか? *ネットのつながらない環境とします
709 :
デフォルトの名無しさん :2013/11/05(火) 14:57:18.04
VBAで使う関数の使い方のHelpは、どうやって調べますか? 例えばあるフォルダにあるファイルすべてのファイル名を調べたいときのDir関数の使い方を忘れたとき、などなどなど・・・ *ネットのつながらない環境とします
ggっても分からなかったので質問させてください・・・ 今は、subの中に(DoEventsの入った)ループがあって、 1秒ごとにサブルーチンを呼んでいます。 それが走っている裏でワークシートの値をキーボードから編集してしまうと、 VBEが隠れてマクロ自体も停止してしまうようです。 マクロを止める前に呼び出されるイベントなどご存知でしたらお教え下さらないでしょうか・・・ (再開するために、フラグを書き込みたいのです) ご多忙中恐縮ですが、お教えくださればありがたいですm(_ _;)m
>>710 OnTime使うか、それで要件を満たせないなら、ActiveX EXEで1秒ごとにイベント発行しろ
VBAと違うけどWebクエリの話もここでいい? 仕掛データのテーブル(html)を読んでシートに移すクエリを作ったのだけど テーブルの大きさ(正確には行数)が変わるんだけど、それにも対応して くれているだろうか?html表示するとテーブルのみが出る仕様になっていて、 テーブル全部を選択(一番左上の矢印を選択)して保存するようにはしたのだけど。 教えてください!
>>714 なんでここでそんな質問してるんだ?
答えられる人なんていないぞ?
716 :
デフォルトの名無しさん :2013/11/05(火) 22:42:52.46
>>714 htmlの表示と、クエリの表示を自分で見比べれば疑問の答えは得られる。
>>715 2ch検索で上級者向けの質問スレが見当たらなかったので猛者が多そうな
ここにしました。
>>716 自分でhtmlテーブル作ってたしかめたらわかりました。テーブルの
サイズが変わっても全部読んでくれるみたいです。ありがとう。
Excelの強力なツールの一つであるマクロ使ってあることをしたいんだけど、そのマクロを一気に複数のファイルに使うことできないのかな? いつもシコシコ1ファイルづつマクロ動かして、保存…って作業してるんだが
>>718 マクロ作る→
アドイン化する→
アドインをExcelに登録→
Win32OLE使えるスクリプトで「ファイル探す→ファイル開く→アドインマクロ実行→ファイル保存」のLOOP組む
Win32OLEはActivePerlでもRuby(Windows)でも利用可能
抜けてた・・・・・・
>>718 マクロ作る→
アドイン化する→
アドインをExcelに登録→
Win32OLE使えるスクリプトで「ファイル探す→ファイル開く→アドインマクロ実行→ファイル保存」のLOOP組む→
スクリプトを実行
Win32OLEはActivePerlでもRuby(Windows)でも利用可能
自演ネタ探し中かw
723 :
デフォルトの名無しさん :2013/11/06(水) 10:27:53.46
ExcelVBAから、Outlookのカレンダーに予定を追加したいんですが ・開始日/時刻 ・終了日/時刻 ・件名 だけでいいんです。 どうやってコード書けばいいですか? (あらかじめ上記3つはExcelシートの3列を使って準備できているとします)
724 :
デフォルトの名無しさん :2013/11/06(水) 10:29:35.39
ExcelVBAから、各PCのログインしてる人の姓と名を取り出すことはできますか? ちなみに環境は会社でActiveDirectoryを使っています。
誰かあのAA張ってくれ
あのAA(AAry
727 :
デフォルトの名無しさん :2013/11/06(水) 18:03:15.42
'D(**) 変数 D*** オブジェクト Set D(1) = D001 Set D(2) = D002 Set D(3) = D003 Set D(4) = D004 Set D(5) = D005 Set D(6) = D006 Set D(7) = D007 Set D(8) = D008 Set D(9) = D009 Set D(10) = D010 Set D(11) = D011 Set D(12) = D012 Set D(13) = D013 Set D(14) = D014 Set D(15) = D015 Set D(16) = D016 ・ ・ ・ まとめて処理する方法ありますか?
>>727 普通じゃできません。
Dxxxを作るときに配列で作りましょう。
vbaの仮想メモリの容量ってどのくらいのものなんですか?
256MB
>>731 ありがとうございます
めっちゃ少ないんですね
733 :
デフォルトの名無しさん :2013/11/06(水) 21:47:53.10
735 :
デフォルトの名無しさん :2013/11/07(木) 02:28:43.70
もう一度お聞きします。 ExcelVBAから、Outlookのカレンダーに予定を追加したいんですが ・開始日/時刻 ・終了日/時刻 ・件名 だけでいいんです。 どうやってコード書けばいいですか? (あらかじめ上記3つはExcelシートの3列を使って準備できているとします)
737 :
デフォルトの名無しさん :2013/11/07(木) 02:51:13.24
>>736 ありがとうございます。
トライしてみます。
738 :
デフォルトの名無しさん :2013/11/07(木) 02:51:43.54
再度お聞きしましょう。 ExcelVBAから、各PCのログインしてる人の姓と名を取り出すことはできますか? ちなみに環境は会社でActiveDirectoryを使っています。
おk
>>738 ググって見つけたページを見て理解できなかったのなら
ここで聞いても内容は同じなので結局理解できないと思う・・・
742 :
デフォルトの名無しさん :2013/11/07(木) 10:02:07.19
744 :
デフォルトの名無しさん :2013/11/07(木) 14:19:28.01
>>743 ユーザーフォームのComboBoxのオブジェクトです
>>744 ComboBox1とかComboBox2とかいうのをオブジェクト変数にセットしたいって事?
だったらこんな感じで出来るんじゃない?
Sub test()
Dim I As Long
Dim D(10) As Object
For I = 1 To 10
Set D(I) = Controls("ComboBox" & I)
Next I
End Sub
746 :
745 :2013/11/07(木) 15:14:25.54
でも良く考えたらComboBoxを わざわざオブジェクト変数に代入する意味が良くわからない。 Controls使えばまとめて処理できるんだから そのまんま使ったほうが早いよね?
VBAマクロを実行中でも別の作業をしたいのですがコード中にSelection.CopyやPasteがある為、マクロが終わるまで触れません。 Excel外に影響しないように、クリップボードをSundbox化のようなことはできないでしょうか? CopyやPasteを使わないように、xlRangeValueXMLSpreadsheetを使うように書き換えてみたのですが速度が遅くて使えませんでした。
>>747 マクロを書き換えて、クリップボードを使わずにデータのコピーや移動をするしかない
どっちかの作業を仮想マシンにして、OSごとサンドボックスに入れるという手もあるけど
俺ならパソコン2台並べる
VBAの仕事はCOMに処理を移譲するだけで十分 めんどくさいし遅いしでVBAで書くメリットがない
752 :
747 :2013/11/08(金) 07:48:54.02
やはり無理ですか。 仮想化や別PCはできない環境なんですよね。 クリップボードを使わないように書き換えて対応します。
753 :
デフォルトの名無しさん :2013/11/08(金) 09:18:41.05
赤はvbRed、黒はvbBlack、 では灰色は?オレンジは? さらにその調べ方は?
754 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/11/08(金) 10:48:12.37
755 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/11/08(金) 10:59:29.87
灰色は&HCCCCCC、オレンジは&HFFA500 VBの色コードは&HBBGGRRになっている(BBが青、GGが緑、RRが赤の成分の十六進数)。 「RGB 灰色」などでググる。
ちなみにWebのカラーコードは#RRGGBBになっていることが多い。
>>753 とりあえずvbredとか知ってる名前を一つ入力して、そこにカーソルを合わせてF1を押すと残りの一覧が出る
ちなみにオレンジなんて定数にないよ
758 :
753 :2013/11/08(金) 12:06:02.12
なるほどありがとうございます。 意外と定数の数は少ないんですね。 ところでヒラメいたんですが 自分で vbOrange vbGray vbDarkYellow vbGunjyoIro みたいな定数を作りたいんですが そのためにはどうしますか?(基本的な質問かもしれませんが
759 :
デフォルトの名無しさん :2013/11/08(金) 12:24:53.20
>>758 VBAのヘルプで「XlRgbColor 列挙」
ビルトイン定数じゃないのにvbというプレフィックスを付けるのは良くない
762 :
デフォルトの名無しさん :2013/11/08(金) 14:08:08.24
定数にはIntegerとかStringとかいうやつはつけなくてもいいんですか?
ああ済まん、定数ね
766 :
デフォルトの名無しさん :2013/11/08(金) 20:37:33.48
VBAも進化して、Option Strict 使える様になったんだ!?
進化なんてのは.NET使えるようになってから言えばいいよ
果たしてこのスレに.Net使える人が どのくらいいるもんだろうか。 まぁ、動きゃいいってくらいなら結構いるかも知れないが。
769 :
デフォルトの名無しさん :2013/11/08(金) 21:27:36.79
あまり居ないように思う Option Strict が判らないくらいだから
770 :
デフォルトの名無しさん :2013/11/08(金) 22:25:27.30
インストールしたCOMアドインをマクロで実行したいんだけど、 VBAからアドインってどうやって呼び出せばいいですか?
マクロ記録
このスレもやっと落ち着いてきたな
excelの代替アプリでCOMコンポーネントを使えたり、逆にCOMコンポーネントとして他のシステムから利用できるアプリは有りますか?
LibreOffice
775 :
デフォルトの名無しさん :2013/11/09(土) 11:28:09.25
うっふーん
777 :
777 :2013/11/09(土) 11:30:01.04
777げっち(´・ω・`)b
EXCELとAruduinoを通信させたいのです。 作例見ますとEasyCommがデファクトのように使用されているのですが、この夏作者さんが公開停止かけてしまいました。 お助け下さい。
780 :
デフォルトの名無しさん :2013/11/09(土) 15:37:05.17
VBA初心者ですが VBAで多くのシートを連続呼び出し&書き込み処理するような命令を書きますとシートが激しく点滅するように動きますが これはCPUのスピードが速いほうがより速く動くというのはわかったのですが 高速な画面表示に関してはグラフィックカードの性能も関係してくるかと思うのですが 高性能グラフィックカードを搭載するとミリ秒単位ででも多少なりとも更に速くなるのでしょうか?全く同じなのでしょうか?
ScreenUpdating
GPUも使っているのだろうか?
785 :
779 :2013/11/09(土) 17:56:26.50
>>780 ありがとうございました。
本を読んでVBAでWin32APIを呼び、ポートの認識まで確認して、挫折しました。
で、どなたかEasyCommの所在をご存知ないかなと質問しました。
>>784 EXCELはWindowsをつかってる
WindowsがGPUを使ってる
>>781 質問からは外れるけど、
点滅するのを早めるのではなくて
点滅しないようにするのが普通だと思う
788 :
デフォルトの名無しさん :2013/11/10(日) 15:20:13.54
Functionの引数をわたすときOptinalにすると省略できますが 省略したとき0が入っています。 0を意図的に渡したときと、省略した結果0になっているばあいを、 Functionプロシージャの中で区別するにはどうすればいいですか?
>>788 省略したときにどうなるかは渡す引数の型に依存するから
必ずしもゼロにはならない。
たとえばstring型は引数を省略すると""になるし、
boolean型ならfalseになる。
数値を入れる変数(long型とか)だと0になるようだけど
たとえばfunctionにはvariant型で渡して、
functionの内部でclngで型変換してから使うとかすれば?
variant型で省略したらどうなるのか試してみたら
IsNullとかIsEmptyではどっちもFalseになって判別できなかったけど
iserrorでTrueになったからそれで判定できると思う。
ちなみにこんなんで試した
Sub test()
Dim a As Variant
a = func()
End If
End Sub
Function func(Optional a As Variant) As Variant
If IsNull(a) then
Msgbox("Null")
End If
If IsEmpty(a) then
Msgbox("Empty")
End If
If IsError(a) then
Msgbox("Error")
End If
End Function
790 :
789 :2013/11/10(日) 16:48:10.72
>>789 のsub内のEnd Ifはコピペ時のミスです
当然ですが不要です
IsMissing
釣りだと思ってなんも言わなかったけど IsMissingで見れるでしょ?
>>788 何でこんなめんどくさいことをする必要があるんだ?
自分が書いたプロシージャを見知らぬ誰かがコールするのか?
自分が書いているコードならプロシージャの仕様は分かっている
だろうしそんな無駄なことしなくて充分だろ。
>>789 相変わらず糞コード自慢かw
何か久しぶりのテンプレ君が釣れたっぽいが
795 :
デフォルトの名無しさん :2013/11/10(日) 18:01:54.20
ま〜たコード論争開始〜!カーン! ですか?
自演臭い質問だしなw
スルーしとけば問題なし
798 :
デフォルトの名無しさん :2013/11/10(日) 21:13:59.71
Priaete Subのプロシージャと Private Functionの戻り値のない関数は 同じものと考えてもOKでしょうか?
書き込みはあれど機能してないなw
テンプレ君を釣る釣堀として立派に機能してるwww
>>785 VBAで直接やる意味がわからない
他の言語でArduinoとコミュニケーションするためのコンポーネントを作成して
VBAからはそのコンポーネントを使う
ではダメなのか?
>>802 いやだから、そのコンポーネントが公開停止されたから誰か知らんか、って言ってるんじゃ
馬鹿には無理
そりゃ利用者が2chの糞や乞食みたいなのばかりになったら辞めたくもなる罠
ソフウェア・ツールなどのフリーツール提供,およびサポートの終了について.
http://www.activecell.jp/ 長年にわたり提供して参りましたEasyComm,EasyGPIB等のフリーツールにつきまして,
以下の理由により提供とサポートを終了させて戴きました.
●提供,サポートを終了する理由
・お問い合わせいただくトラブルの要因のほとんどがEasyCommやEasyGPIBなどのフリーツール以外の部分であるため,
事実上VBAの使い方や,シリアルポート,GPIB,アプリケーション,ドライバの特性に関する回答に集中する.
しかし,僅かな情報を基に原因を推測し,実証するためには多くのアイデアや時間,機材を要するが,
ハードウェア・ソフトウェア環境の多様化により対応が困難になった.
・新規に開発される様々なハードや新規OS,アプリケーションのバージョンアップに対する実装テストなどの時間的な余裕が無い.
・掲示板やメールに対するスパム攻撃などが激しく,サポート環境の維持が難しい.
・トラブル発生時にご質問をいただくことはあるが,完全なフリーツールとして提供し,
さらにサポートを続けている姿勢に賛同してくれるメールは皆無に等しい.
従って,提供を続ける意味は無い.
●謝辞
長年にわたってご利用いただきましたことに感謝いたします.
また,僅かではありますが励ましのメールをいただいたことがあり,
その数本のメールのおかげでここまで続けてくることが出来たと実感しております.
ありがとうございました.
(ペンネーム木下隆)
簡易型GPIBコントローラ一キットGP232,および絶縁型USB/シリアルISS-SE1につきましては,
製造および販売をシステム技研株式会社が行うことになりました.
サポートは今後も継続させていただきますが,商品につきましては下記販売店にてご購入くださいますようお願い申し上げます.
(以下略)
ツールに頼らなきゃ何も出来ないカスが組み込みなんかやるなよ カスはカスらしくVBAでシコシコと行列計算でもしてろや
808 :
デフォルトの名無しさん :2013/11/11(月) 07:46:45.74
Private Subのプロシージャと Private Functionの戻り値のない関数は 同じものと考えてもOKかと聞いておる
811 :
デフォルトの名無しさん :2013/11/11(月) 12:41:48.97
VBAで、Application.WorksheetFunction.Vlookup関数で日付をひっぱってきたつもりが 「33118」みたいな変な数字になりやがるんだ。 どうやったらちゃんと正式な日付が表示される?
812 :
808 :2013/11/11(月) 12:42:39.91
>>810 3回も質問しても誰も解決できないほどの難問だからこそ、あたらめて聞いておるのだ。
違います
815 :
デフォルトの名無しさん :2013/11/11(月) 14:00:24.92
Formに表示させるボタンの数を コードで指定して表示させるにはどうすればいいですか?
816 :
808 :2013/11/11(月) 14:00:56.29
817 :
747 :2013/11/11(月) 15:12:31.11
818 :
811 :2013/11/11(月) 15:21:58.99
>>817 そうだよ。
ちゃんと日付表示にするにはどうすればいいの?
一番単純な方法で。
>>818 シリアル値から年とか月とか抜き出す関数があるよ
>>816 SubとFunctionという違いがある
>>815 ボタンのvisibleプロパティをFalseにすると非表示になります。
表示したいときはTrueにします。
825 :
デフォルトの名無しさん :2013/11/11(月) 20:19:19.64
コードを書く人の資質・知能・常識により、違いが出るわけだ。 納得。
VBAを究極的に速く動かすにはどんなパソコンを準備すればいいのでしょうか? XeonのデュアルCPUとかにすれば更に速くなるのでしょうか?
たぶんマルチCPUに対応してないから無駄 VBAじゃなくてVBにすればちょっとは速くなるかも
スパコンをwindowsで動かし、その上でvbaを走らせれば
VBAとは関係ないハードの話題だな。 処理を早くするためにコードの改善とかならまだわかるが。
>>829 興味ない話題はスルーしとけよ
結果的にそれが一番早く事態を収拾させる方法だよ。
一々食って掛かると某「自称本スレ」みたいになる。
もしかして、わざとそうやってここを荒れさせるのが狙いなら
もうこれ以上言うべきことは無いけど。
ユーザーフォームのCheckBoxのCaptionを入力データで表示させました Private Sub UserForm_Initialize() CheckBox1.Caption = (Worksheets("sheet2").Range("D1").Value) CheckBox2.Caption = (Worksheets("sheet2").Range("D2").Value) ・ ・ End Sub 数が多かったので まとめて処理させようとしたらコンパイルエラーとなりました Private Sub UserForm_Initialize() For i = 1 To 100 CheckBox(i).Caption = (Worksheets("sheet2").Range("D" & i).Value) Next End Sub どのようにすればよろしいでしょうか・・・?@22歳OL
× CheckBox(i).Caption ○ Controls("CheckBox" & i).Caption
100も手作業でチェックしないといけないのか
>>832 本当にありがとうございました
助かりました@22歳OL
チェックボックスが100個も有ったら クリックイベントを処理するのがめんどくさそう。 それともチェックボックスの状態はフォーム閉じた時点で まとめてチェックするとかなのかな?
837 :
デフォルトの名無しさん :2013/11/12(火) 18:36:40.38
「IEをVBAで操作する」系の2冊目の本が最近出たんだが amazon検索でひっかからない。 本のタイトルはなんだったかな? (1冊目「Excel VBAでIEを思いのままに操作できるプログラミング術」)
>>835 コマンドボタン クリック後 一括?処理させるようにしてます
みなさんVBA詳しいですね
うらやましいです。。。@22歳OL
>>837 amazonで"IE VBA"で検索して引っかかるのってそれ以外にこれしかないと思うけど
IEを自在に操るExcel VBAプログラミング入門―データの収集・加工を完全自動化!
これじゃないの?
841 :
デフォルトの名無しさん :2013/11/12(火) 19:31:43.41
842 :
837 :2013/11/12(火) 19:52:54.69
お勧めのリファレンス 本あったら教えてください@22歳OL
>>843 リファレンスは量大杉で本だとかさばるし検索性も劣る
ヘルプかmsdn見た方が早い
@女子高生としたほうがもっと受けが良いんとちゃいます?
22歳OLの方が生々しいくていい感じ
OLより就活生のがグッと来るよね
数字以外の文字入力の判定をしようと・・・ ck1 = Controls("ComboBox" & i5 + 10) For ck2 = 1 To Len(ck1) ・ ・ ck1に希望する文字列?が入りませんでした・・・ ck1 = ComboBox43.Text For ck2 = 1 To Len(ck1) ck3 = Mid(ck1, ck2, 1) If ck3 Like "[0-9]" Or ck3 Like "[0-9]" Then Else MsgBox "日付は数字を入力してください" GoTo label01: End If Next では、うまく動いてくれたのですが・・・ お時間ある方でわかる方お力をお借りしたいです@22歳OL
お時間は有るんだけど、迂闊に答えちゃうと "@22歳OL"に釣られたスケベ野郎に思われそうで答えられない。
洋助兵衛
俺SZはJCだし
どうでもいい話題だな。
853 :
デフォルトの名無しさん :2013/11/13(水) 20:35:29.65
ck1 = Controls("ComboBox" & i5 + 10).Text
>>848 If *** Then
Else
@@@
End If
こんな書き方するなら
If Not *** Then
@@@
End If
こう書いた方が自然。
というか、日付かどうかチェックするなら
IsDateとかIsNumericとかを使ったほうが簡単なんじゃないの?
この二つの動作がどう違うのか俺は知らないけど。
IsNumeric 式が数値として評価できるかどうかを調べ、結果をブール型 (Boolean) で返します IsDate 式を日付に変換できるかどうかを調べ、結果をブール型 (Boolean) で返します。 全然違うと思うけど
858 :
855 :2013/11/14(木) 09:31:44.87
>>857 いや、日付型がどんなもんだかについて根本的に理解してないわけよ
今のところ使わないから特に覚える気もないんだけどさ
859 :
デフォルトの名無しさん :2013/11/14(木) 10:47:25.88
日付は数値に含まれますか? バナナはおやつに含まれますか?
860 :
デフォルトの名無しさん :2013/11/14(木) 11:12:51.13
DateFormat()
FormatDateTime()
>>854 >>855 アドバイスありがとうございました
できました
エラーで困っていた箇所は日付ではなく数量や
金額を処理させたい箇所でした
本当にありがとうございました@22歳OL
超初心者です Excelで以下のような(x,y)に対応した値z(数値)がある場合下の表のようにマクロで作成することは可能ですか? x y z 0 0 m 1 0 n 2 0 o 3 0 p 0 1 i … y 3 a b c d 2 e f g h 1 i j k l 0 m n o p 0 1 2 3 x
>>865 多分、何らかの規則で表示形態を変換したいのだと思った。
規則があるなら可能でしょ。
x y >z ー ー ーーー 0 0 >m 1 0 >n 2 0 >o 3 0 >p 0 1 >i y ー+ーーーーーー 3 |a b c d 2 |e f g h 1 | i j k l 0 |m n o p ー+ーーーーーーー 0 1 2 3 x
コードコジキがお越しになられました。 お恵み様がご降臨なされますので邪魔しないようにお願いします。
yでグルーピングして、xの昇順にzを並べるってことだと思う。 コードは書かないが、可能。
4x4固定なら、二次元配列作れば余裕でできるね。 コードは書かないけど。
xyが数値なら取り込んでoffsetでどうかな
16進数なら変換かけて終わり
コードを書かない勢は黙ってろカス
マクロじゃなくても数式で行けるんじゃないかな ちゃんと考えてないから書かないけど
pivot tableとかどうかな
876 :
863 :2013/11/14(木) 17:47:57.32
返信くれた方ありがとうございます 可能みたいなので考えてみます ヒントくれた方もありがとうございます
俺には規則が理解できないんだが お前らすげえな
878 :
デフォルトの名無しさん :2013/11/14(木) 19:53:06.07
>>871 どういう意味でしょうか?
興味があります
等高線のグラフか。x-y 軸がわかっているなら、offsetに一票。
ブックAからブックB(6種)のマクロを実行しょうとしたら、 6種のブックBの内、1つだけ「マクロが見つかりません」とのエラー エラーが出るブックのブック名(notモジュール名)を少し変更したら実行した 変更後のブック名は(よくないとされる)漢字を含んでいるし、わけわからない
質問です。 最近ティンコが臭いんですけどどうすればいいでしょうか? 教えてくさい(´・ω・`)b
885 :
デフォルトの名無しさん :2013/11/16(土) 18:56:30.14
>>884 パリダちゃんなら、ほっとけばいずれ死ぬよ。
もげ
888 :
デフォルトの名無しさん :2013/11/17(日) 15:07:59.65
>>883 たぶん男盛りだから、彼女作れば?
そのにおいが好きな子もいるかもよ
889 :
デフォルトの名無しさん :2013/11/17(日) 18:10:26.98
色からR、G、Bのそれぞれの3要素の数値0〜255を取得する関数はなんですか? なければ作ってください。 そして会社チーム内でとりきめた約束、 「ある条件のときはセルを塗りつぶす」があって、 ピンクはみんなバラバラのピンクをつかってる。 ある人は濃いピンク、ある人はうすいピンク、ある人はオレンジがかったピンク。 これを統一するため、 どんな任意の色だったとしても代表的16色に変換する関数を作ってください。 つまり引数が任意の色のコード、帰り値がたった16色のうちのいづれかの色コード。 あ、応用として引数の2つ目には代表色の数(たとえば16とか)にした関数もお願い。 こんな難易度の高い課題はやりがいがあるでしょう? よろしくお願いいたします。
890 :
889 :2013/11/17(日) 18:12:40.67
ちゅうか簡単かな? R、G、Bの各要素の0〜255の数値を取得して それを16か32か64みたいな区切りのいい数値に変換して それそれを求めればいいだけかな?
891 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/11/17(日) 18:22:00.51
GetRValue,GetGValue,GetBValue
基本的な事を聞いてもいいですか?
893 :
デフォルトの名無しさん :2013/11/17(日) 18:28:25.23
>>891 そんな関数やプロパティはトライしたけど使えないんですが。
存在しないのでは?
Range("A1")というのは、A1のセルを指しているわけですよね。 Call(1,1)も、同じA1のセルを指していますよね。 これの使い分けを皆さんはしていますか? また、どんな時に使い分けをしますか?
またネタの質問かよ。
896 :
894 :2013/11/17(日) 18:54:24.87
>>895 VBAを勉強しようとして色々とサイトを見ているのですが、rangeとcellって同じ意味にしか感じなくてですね。
何か使い分けする意味があるのかなと思いまして。
897 :
デフォルトの名無しさん :2013/11/17(日) 19:02:03.21
>>893 VBAヘルプには無かったが、検索したら出てきた
Win32APIに有るようだ
898 :
デフォルトの名無しさん :2013/11/17(日) 19:03:52.83
excel2010でのAutoFilterに関する質問 外部テキストファイルに任意の都道府県名が一行ずつ記載されている(県数、県名不定かつ東京、神奈川など"都"や”県”は省かれている) この都道府県表を読み込んで、都道府県名(A列)とそこの知事(B列)が書かれているエクセルシートに AutoFilterを掛けたいんだがexcel側の表は"都"、”県”が省かれておらずワイルドカードを使わなければならない。 以下がコード Sub test() Dim buf, ken(47) As String Dim n As Long Open "D:\(省略)\kenmei.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf ken(n) = buf n = n + 1 Loop Close #1 With ActiveSheet.Range("A1") .AutoFilter Field:=1, Criteria1:=ken ', Operator:=xlFilterValues End With ken(n) = buf & "*"とやっても, Criteria1:=ken & "*"とやっても上手くいかず どなたか知恵を貸してください
899 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/11/17(日) 19:12:45.54
Function GetRValue(rgb As Long) As Integer GetRValue = rgb And &HFF End Function Function GetGValue(rgb As Long) As Integer GetGValue = (rgb And &HFF00) / &H100 End Function Function GetBValue(rgb As Long) As Integer GetBValue = (rgb And &HFF0000) / &H10000 End Function
900 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/11/17(日) 19:32:16.25
'nは8の倍数 Function RoundedRGB(rgb As Long, n As Integer) As Long Dim r,g,b,m,k r = GetRValue(rgb) g = GetGValue(rgb) b = GetBValue(rgb) m = n / 8 k = Round(r * m / 256#) r = 255 * k / m k = Round(g * m / 256#) g = 255 * k / m k = Round(b * m / 256#) b = 255 * k / m RoundedRGB = RGB(r, g, b) End Function '携帯から
901 :
uy :2013/11/17(日) 20:05:00.92
ゴミwwwwwwwwww コラゴミwwwwwwwwwwwww 死ねコラゴミwwwwwwwwwwwwwwwwwwwwwww ゴミwwwwwwww ゴミゴミwwwwwwwwwwwwwwwwwwwwwwwwwwww ゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
902 :
デフォルトの名無しさん :2013/11/17(日) 20:06:00.93
>>896 ループ処理ならcells(x,y)でやったほうが簡単
903 :
894 :2013/11/17(日) 20:21:59.97
>>902 ループをさせる時はcellがやりやすいという事でしょうか。
rangeの方はどういった所で活用出来るのでしょうか。
基本的な事で申し訳ないです。
Excel2003です 日付の検索で躓いています。 A列に日付が 2013/10/21の形で入力されていて 表示形式は "m"月"d"日";@" となっています(Range("A2").NumberFormatLocalで取得しています。) 検索対象月(2013/10)の先頭を取得したいのですが、 検索にヒットしませんコードは下記の様です。(一部抜粋) Dim c As Object Dim tmp As String tmp = InputBox("月次処理を開始します。", Format(Date, "yyyy/mm")) Set c = Cells.Find(What:=tmp, After:=Range("A2"), LookIn:=xlValues, LookAt:=xlPart) If c Is Nothing Then Else c.Select End If です。 tmp = Format(DateValue(tmp), "m/d;@") tmp = Format(DateValue(tmp), "yyyy/mm") 等も試しましたが、ヒットしません。 どのように修正したらよいでしょうか?
>>903 ループなら
Do Until wkRs.EOF
i = i + 1
Cells(i, 1) = xxxxxx
Cells(i, 2) = yyyyyy
〜
Loop
とかで簡単にセルをずらして行くのが出来る
俺は基本的にはCells形式中心なんで^^;、rangeでも Range(Cells(3, 1), Cells(lastrow, 7)).Clear
という風にして使ってる。
固定の範囲のみの処理ならRange("A1:B5") とかのjほうが判りやすいだろうなぁ。
906 :
894 :2013/11/17(日) 21:01:55.53
>>905 分かりやすい親切な説明です、ありがとうございます。
もう一つだけ質問なのですが、変数名はどのように付けるのが適切なのでしょうか?
>>906 ここで散々荒れてるネタなんでそれはパス
908 :
894 :2013/11/17(日) 22:00:45.89
>>907 了解しました、すみませんでした。
丁寧に色々とありがとうございました。
909 :
デフォルトの名無しさん :2013/11/17(日) 22:32:50.94
>>904 セルの書式を確認
「*2001/3/14」ではNG
「2001/3/14」ではヒットする
911 :
デフォルトの名無しさん :2013/11/18(月) 00:23:40.28
>>898 Sub test()
Dim buf As String, ken(47) As String
Dim n As Long
Open "D:\kenmei.txt" For Input As #1
Do Until EOF(1)
Line Input #1, buf
Select Case buf
Case "北海道"
Case "東京"
buf = buf & "都"
Case "大坂"
buf = buf & "府"
Case Else
buf = buf & "県"
End Select
ken(n) = buf
n = n + 1
Loop
Close #1
With ActiveSheet.Range("A1:B47")
.AutoFilter Field:=1, Criteria1:=Array(ken()), Operator:=xlFilterValues
End With
End Sub
でどう?
912 :
デフォルトの名無しさん :2013/11/18(月) 00:49:05.00
>>911 ありがとう!Case文で出来るんだ
コレの問題は解決できてありがたいけど汎用性がイマイチかあ
Operator:=xlFilterValuesを使った複数条件の部分一致オートフィルターが
楽に出来れば最高なのだけれどどうやら無理っぽい
>>911 微妙。
都道府県を付けてからオートフィルタをかければいい。
っていう回答するほうが楽なのに。
コードで回答するほどのこととは思えないね。
それと、都道府県をつける処理は別プロシージャに分けろ。
>>911 ActiveSheetなんて使ってるとバグるね。
916 :
デフォルトの名無しさん :2013/11/18(月) 07:48:18.14
Actveworkbookじゃなくて別で開いてるブックに値を書き込みたいんだけど そのブックのデォフルトでアクティブになってるシート→セルを参照するにはどうしたらいいですか?
>>916 Workbooks("abc.xls"). 以下略
>>916 >そのブックのデォフルトで
デォフルト って普通にデフォルトって入力するより難しいぞ
どうやってまちがえたんだ?
まず、デフォルトでアクティブになってるって意味を正確に説明して
ファイルを開いたときにActiveになってるsheetのことかなぁ
921 :
916 :2013/11/18(月) 19:53:02.38
>>917 こら、その略してるところこそ聞きたいのですが。
>>918 たしかにどうやってまちがえたんだろう。
>>919-920 本当に意味がわからないならBook操作のスキルが低いのでしょう。
922 :
デフォルトの名無しさん :2013/11/18(月) 19:59:10.14
フォームをつかいこなしたいのでフォームに特化した本を探していたところ 次の2冊を検索で見つけました。 「知識ゼロから学ぶExcelVBAプログラミングユーザーフォーム&コントロール」 「アプリ作成で学ぶExcel VBAプログラミングユーザーフォーム&コントロール」 どちらがオススメですか? 自分はVBAは中級者だと思ってますが、フォームは少ししか使ったことがありません(使ったとしても1個だけのフォームにグループわけのやつやSetFocusやコンボリストくらい)。
>>920 俺も考えればまあそう言う解釈しかないが
それだと1回閉じて開き直すとかしないとダメなんだが
>>921 みれば、どうも自分でも正確に解って無さそうだし
これ以上相手するのやめるわ
924 :
デフォルトの名無しさん :2013/11/18(月) 20:12:23.16
Workbook_Openでシート2を開く設定になってて、 BeforeSaveでシート3を開く設定になってたら、 どちらがデフォ?
926 :
916 :2013/11/18(月) 20:13:45.85
>>923 たとえばどのbookでもいいから開いて
3番目のシートのE5セルをアクティブにしてから保存してごらん。
今度そのファイルを開くと、3番目のシートがアクティブになってるし、そのシートのE5セルがアクティブになってる。
ということはブックはどのブックでもデフォルトでアクティブとして記憶されてるシートやセルがあるんだよ。
で、そのシート名やセル名を取得したいの。
927 :
デフォルトの名無しさん :2013/11/18(月) 20:38:50.48
>>926 ブックを解凍しておいて、
\xl\worksheets\〜.xml の中で、
「activeCell=」表記が有るシートとセルが、保存時のアクティブ位置。
928 :
916 :2013/11/18(月) 20:45:08.90
普通に開いてActiveなシートとセルを見ればいいんじゃないの?
930 :
デフォルトの名無しさん :2013/11/18(月) 20:52:53.39
xlsかもしれん
解凍?
933 :
デフォルトの名無しさん :2013/11/18(月) 21:14:21.24
xls、2003以前 なら解凍できない。 By 930
934 :
デフォルトの名無しさん :2013/11/18(月) 21:17:09.23
>ブックを解凍しておいて、 これがまず判らない。zipとかlzhのファイルを解凍するんじゃなく ブックを解凍? どういうこと?
935 :
916 :2013/11/18(月) 21:21:06.56
>>929 それだと1個ブック用のオブジェクト変数を用意しないといけない手間がかかるし
いちいちアクティブを切り替えするコードにするのは画面がチラチラしてイヤ。
たった数行ですばやく対応したい。
いちお確認しておくけど、
ブック操作のマクロはいろんな場面でいろんな用途で使うことがあるんだ。
平均すると3日に1回くらいの頻度かもしれないし、1回限りのコードのことが多々。
例えば会社でチームのためにちゃんとしたコードを長期使用のためにきれいに完成させるのが目的じゃない。
このスレ意外と回答者のスキル低くない?
日本語でおk
937 :
デフォルトの名無しさん :2013/11/18(月) 22:05:08.03
>>925 本当だ、ネタだったみたい、調べたら簡単に答えが見つかる。
SubとEnd 除いて6行で出来る。
私も抜ける。
正直、エスパーのスキルは低め
939 :
デフォルトの名無しさん :2013/11/18(月) 22:50:33.68
エスパー伊東?
VBA初心者ですが 無限ループで長時間処理をさせ続けているVBAのコードに対して止めることなく バックグラウンドでこっそりと部分的にコードを書き換える事はできないのでしょうか?
書き換える頻度にもよるけど、書き換えそうな箇所を別モジュールにして、 定期的にモジュールをremove、insertする感じ?
>>941 うまくやればできそうなわけですね。ありがとうございました。
943 :
904 :2013/11/19(火) 04:02:53.16
>>909 Excel2007では大丈夫でしたが、
目的のExcel2003ではヒットしませんでした。
どのようにしたらいいでしょうか?
944 :
904 :2013/11/19(火) 04:36:59.38
945 :
デフォルトの名無しさん :2013/11/19(火) 08:32:51.78
シートに貼り付けたたくさんの図形を全消去するにはどうすればいいですか?
表示倍率を最小にして、図形選択でシート全体の範囲を選択してdelete
947 :
デフォルトの名無しさん :2013/11/19(火) 08:58:47.58
>>946 こら、図形選択ってどこだ?ほんとにVBA?
>>916 何がやりたいのか良くわからんが、ユーザが保存したときのアクティブシート・アクティブセルに対して
処理するってのは駄目だろ。どのシートをアクティブにして保存するか分からないんだから。
普通は、処理対象のシートを何らかの方法で指定して(シート名とか)、何らかの方法で処理対象の
セルを決めて(絶対位置決めうちとか、何らかのマーカーをもとに相対位置とか)処理するんだよ。
949 :
916 :2013/11/19(火) 12:18:56.32
>>948 こら、レスありがとうございます。
いやユーザがふだん使うシートはほぼ決まってるからいいんですよ。
3つシートあったとして、1つがメインで他の2シートは普段見ることはないルールみたいなのが書いてるだけなんだから。
あるブックにマクロを書いてるとして
そこから別のブックを複数開く。
でもメインはマクロのあるブックだからそこをまたActivateする。
この状態で、いろんなブックを参照したいときに非アクティブのブックの、本来ならアクティブになってるはずのシートとかセルを取得するにはどうするか。
これが質問の趣旨。
>>949 なぜ「アクティブ」にこだわるのかわからん。
普通に、workbook.worksheet.rangeでアクセスできないのか?
>>949 > この状態で、いろんなブックを参照したいときに非アクティブのブックの、本来ならアクティブになってるはずのシートとかセルを取得するにはどうするか。
そのbookがアクティブなときにset sheet = activesheetとする。
952 :
916 :2013/11/19(火) 13:10:46.73
>>950 こら、それだと特定できないだろ。
Workbooxs(x).Worksheets(y).Cells(r,c)にしないと。
このようにしたときxは別として、y, r, cの値がわからない(正確にはわざわざ調べないといけない)
>>951 そりゃそうだけど、わざわざsheetのオブジェクト変数を用意しないといけないからコードを1行書くのが面倒。
それにオブジェクト変数を使っちゃさいごにSet ... = Nothingと消してやるためにまた1行コードを書くはめになるじゃん。
>>952 > Workbooxs(x).Worksheets(y).Cells(r,c)にしないと。
> このようにしたときxは別として、y, r, cの値がわからない(正確にはわざわざ調べないといけない)
だから変数に保存しとけって。
> そりゃそうだけど、わざわざsheetのオブジェクト変数を用意しないといけないからコードを1行書くのが面倒。
だったら対象Bookをactivateしろ。そうすればactivesheet,activecellで参照できる。
> それにオブジェクト変数を使っちゃさいごにSet ... = Nothingと消してやるためにまた1行コードを書くはめになるじゃん。
ならない。
もう、うざいなぁ。 > この状態で、いろんなブックを参照したいときに非アクティブのブックの、本来ならアクティブになってるはずのシートとかセルを取得するにはどうするか。 できません。 これで満足?
何か前にもこんな奴居なかったか? 上から目線の初心者
スレの勢いが無いから、自称初心者の振りして遊んでるんだろ。 言わせんな。
Excel VBAに気の利いたものなんてないんだから、楽したけりゃ自分で作るしかない
958 :
デフォルトの名無しさん :2013/11/19(火) 17:53:55.50
For Next文で、iを2個ずつ増分するにはStep=2とすればいいですが iを素数にするためにはどういうコードを書けばいいですか?
for i = 1 to xxx ... i = getNextPrimeNumber(i) next という関数を自作する。
960 :
958 :2013/11/19(火) 17:58:25.86
またお前か
>>960 日本語で書かないとわかんない?
Forループの中でiの値を変更することができるから、「現在のiの次の素数」を取得する関数を作ってそれを代入すれば良い。
まあ、ループの中でループカウンタ書き換えるような時はFor Next使うなと
非アクティブなBookでもActiveSheetとかは取れなかったっけ?
予め素数の配列を作っておいてループカウンタを1アップする度にそれを参照するとか 大体何をしたいのかサッパリ判らんのだけどw
>>959 そのやり方だとgetNextPrimeNumber(i)-1ってやらないと駄目かも
>>949 非アクティブなブックでもActiveSheetは動く
これ見て考えて二度と来るな
Dim b1 As Workbook, b2 As Workbook
Set b1 = Workbooks.Open("c:\book1.xls")
Set b2 = Workbooks.Open("c:\book2.xls")
b2.Activate
MsgBox b1.ActiveSheet.Name
b1.Activate
MsgBox b2.ActiveSheet.Name
またお力をお借りしたく・・・ A列に日付・・・G列に金額 オートフィルターで指定日付範囲の印刷まではうまく行ったのですが そのオートフィルターで指定した範囲の合計金額を表示させたい 印刷後はその合計金額は消す・・・ コメントブロックしている箇所で合計金額を表示させようとしたのですが オートフィルター範囲外、リストのデータが入っている所に上書きしちゃう などなど・・・ 上手く合計が出なくて困っています、いい方法何かありますか?@VBA素人の22歳OL Sub 日付範囲印刷() Range("A1").AutoFilter field:=1, Criteria1:=">=" & Range("J19").Value, _'J19開始日 Operator:=xlAnd, _ Criteria2:="<=" & Range("J20") ’J20終了日 'Dim kis 'Set kis = Range("G" & Rows.Count).End(xlDown) 'kis.Offset(1, -1) = "合計金額" 'kis.Offset(1, 0) = Application.WorksheetFunction.Sum(Range("G:G")) ActiveSheet.PageSetup.PrintArea = Range("A1").CurrentRegion.Address ActiveSheet.PrintPreview Range("A1").AutoFilter ActiveSheet.PageSetup.PrintArea = "" 'kis.Offset(1, -1).Delete (xlShiftUp) 'kis.Offset(1, 0).Delete (xlShiftUp) End Sub
969 :
968 :2013/11/20(水) 15:23:19.88
私の頭では1シートでの処理が思いつかなかったので オートフィルターで得たデータをコピー 新たにシートを作成 そのシートに貼り付け 合計計算 入力 印刷範囲指定 印刷プレビュー 印刷プレビューを閉じたら作成したシート削除 元のシートに戻りオートフィルター解除 と、取り急ぎしました。 何か他にも方法ありそうだけど現在の私ではこれで精一杯です@22歳OL
頑張ってる22歳OL 萌え萌えキュンキュンだわ
>>968 フィルターされて非表示になった行はVisibleプロパティで判定
972 :
デフォルトの名無しさん :2013/11/20(水) 15:59:30.92
>>968 Sub 日付範囲印刷() 'Print以降は同じ
Dim kis
Set kis = Range("G" & Rows.Count).End(xlUp)
End_Adr = Range("G" & Rows.Count).End(xlUp).Address
Range("A1:" & End_Adr).AutoFilter field:=1, Criteria1:=">=" & Range("J19").Value, _
Operator:=xlAnd, Criteria2:="<=" & Range("J20") 'J19開始日 J20終了日
kis.Offset(1, -1) = "合計金額"
kis.Offset(1, 0) = Application.WorksheetFunction.Subtotal(9, Range("G:G"))
ActiveSheet.PageSetup.PrintArea = Range("A1").CurrentRegion.Address
オートフィルターは殆んど使った事ないので、不完全の可能性あるけど。
自己責任で。
kis ってやっぱ キッスから来てるのかな・・・ 何かエロい おれも sexとか変数使おうかな・・・
Keep In Stupid
俺も明日からi 使わない Kissかsexにするわ
>>972 私の思い通りの処理ができました!本当にありがとうございます
他にアドバイスくれた方もありがとうございました
皆さんのスキルの高さに圧倒されっぱなしです@22歳OL
じゃあ俺は次から17歳JKって名乗るわ
979 :
デフォルトの名無しさん :2013/11/20(水) 21:31:24.15
再度質問させていただきます。 フォームをつかいこなしたいのでフォームに特化した本を探していたところ 次の2冊を検索で見つけました。 「知識ゼロから学ぶExcelVBAプログラミングユーザーフォーム&コントロール」 「アプリ作成で学ぶExcel VBAプログラミングユーザーフォーム&コントロール」 どちらがオススメですか? 自分はVBAは中級者だと思ってますが、フォームは少ししか使ったことがありません(使ったとしても1個だけのフォームにグループわけのやつやSetFocusやコンボリストくらい)。
980 :
デフォルトの名無しさん :2013/11/20(水) 21:36:43.81
981 :
デフォルトの名無しさん :2013/11/20(水) 21:44:25.12
>>979 目次を見て、自分に合ってるのはどちらか、自分で判断名するしかないと思う。
ちなみに、ネット上で目次は見る事が出来る。
982 :
デフォルトの名無しさん :2013/11/20(水) 22:25:36.88
>>979 知識ゼロから学ぶExcelVBAプログラミングユーザーフォーム&コントロール
>>979 なんかタイトルが似すぎてるんだけど、同じ出版社?
こういうのって、例えば著者が同じなら内容もほとんど同じだから好きな方、新しい方、安い方とか
適当に選べばいい
>>979 そんな本よりガイジンが書いた本を買いなよ
スカスカな日本語参考書より遥かに役にたつよ
うめ
シートコピーしたときのWorksheetって取れないのかな Dim NewSheet As Worksheet Set NewSheet = Workbooks(1).Sheets(1).Copy みたいな感じで。
>>986 シート自体を直で取得する方法は分からないのですけれど、
いったん新規ブックを作成して、
そこにコピーするというのはいかがかしら?@17歳女子高生(嘘)
Sub Test()
Dim sh As Worksheet
Set sh = Workbooks.Add(xlWBATWorksheet).Sheets(1)
ThisWorkbook.Sheets(1).Cells.Copy
sh.Paste
sh.Cells(1, 1).Select
Application.CutCopyMode = False
End Sub
コピーするときに位置指定できるんだから、コピーした後その位置のシート取得すればいいだけだろ
今日はOLちゃん居ないな・・・ 寂しいわ
>>987 クリップボード使いたくないんですよね
>>988 やっぱそれしかないですかね
その取り方だと保証がないから気になってるんですが…
まあ実際は問題ありませんが
>>990 普通にやってばコピー先のシート掴むまでに割り込まれる事はないと思うが
そんなことすら不定ならシート操作とか怖くてできん
それで不満があるなら、自分で新規シート作って、そこに元シートの全内容コピペするしかあるまい
厳密にはそれは_シート_をコピーしてないが
うめ
うめ
うめ
うめ
うめ
うめ
うめ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。