Excel VBA 質問スレ Part50 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
!extend:checked:vvvvv:1000:512
スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/
※前スレ
Excel VBA 質問スレ Part49©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1498410914/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured >>849
なんというエラーで止まるのでしょう
構文には問題なさそうなので、コードではなく別の要因では 実行時エラー9
インデックスが有効範囲にありません。
とでます。
で、デバックをおすと該当部分が黄色くなります。
シート名は変更していません。 〉〉851
なぜかダウンロードした真っ皿なサンプルコードに移し替えたらできました。
シート名も変更せず、シート数も変えてないのに何かが変わっていたみたいです。 >>844
windowsならosの機能でリモート保守機能があるはず
それをpowershellから使えばいい >>853
何故かじゃないでしょ。
うごかない環境で
Debug.Print DataLastCell.Address
くらいやっときなよ。 >>846
2文字目打ったら更に絞り込むにはどうしたらいいですか?
listは空にできますか? >>853
ダウンロードってのがよくわからないけど色んな環境で使い回しているのなら
ExcelのバージョンまたぎでVBAが動かなくなることがある
同じブックを2003→2007→2003とかで使い回すと最後の2003の時だけエラーが出たり >>856
あ、ごめん、頭にcomboboxクリアするコードいれなきゃダメだわ
それぐらい調べて 二文字目以降も絞るはずだよ
likeステートメントで調べて >>858
これでいけました。
ありがとうございます。
>>839
参考になりました。ありがとうございます。
スペース区切りで2項目も出るようにしらべてみます。 加減乗除をやりたいんですが、式のセルの下に直で式を書いて、値に数値が出るような仕組みはどんなマクロになりますか?
パラメーターは後に記号にして計算さしたくて、短縮計算風に出来ませんかね?
https://i.imgur.com/dCH8v0R.jpg 構文解析?短縮計算とは変数のことかな?
計算では括弧や優先順位はいいのかな? >>864
数値のセルに名前をつけてたとえば
h
w
t
にしといて、式に
=h*w-t
ってやると計算される。2013ね。他のバージョンは知らん。
日本語の名前でもいけると思う。 構文解析っていうのか分かりませんがが、四則演算でかけ算、わり算優先です。式は括弧もありです。
最終的には、フォームのテキストボックスとかに式を打って、ボタン押して計算させるものを作る予定です。
https://i.imgur.com/ywonMIZ.jpg >>864
式に使いたい項目が動的に増えたり、演算子の順序変えたりしますか?
後、式と結果を出力するセルも画像のままでいいのてすか? >>869
パラメーターは下に増えます。演算順序は変えません。括弧、かけ算、わり算優先です。
答えはそのセルでいいです。 >>870
一つのテキストボックスに
(a*b)+3/4
みたいに入力されたものを解釈して計算する感じでしょうか? >>864
マクロ4.0のevolute
vbaの可変変数
辺りが合いそう
もっと具体的に何がしたいか書けば良い回答もらえるかも
今のままだと意味がわからん (1) 計算記号を半角の +,-,*,/,(,) に置き換える
(2) 式の中のパラメータを全て数値に置き換えた文字列を作る
(3) 出来上がった式の先頭に "=" を付ける
(4) 答えを出したいセルに (3)の式を書く
で出来ないか? Dim 式 As string
式 = "(1+2)*3"
Range("D5") = ExecuteExcel4Macro("EVALUATE(" & 式 & ")")
とりあえず、文字列変数の”式”に計算式代入してますが、代入をテキストボックスから代入にすればD5に結果が出ます。 そもそも置き換える意味がなくないか
https://i.imgur.com/ZAuSaoz.png
=
(
INDEX(B:B,MATCH("w",A:A,0))*
INDEX(B:B,MATCH("h",A:A,0))
)+
INDEX(B:B,MATCH("t",A:A,0))-
INDEX(B:B,MATCH("m",A:A,0)) マクロ使わなくても>>866ので十分じゃないの?
式を文字列としても表示したい場合もワークシート関数で済むし >>871
そんな感じです。
>>872
ある物の大きさだったり、重さだったり、面積とかを計算で出したくて、物ごとにパラメーター数値をそれぞれ持たせて、Aの大きさを計算したり、Bの大きさを計算するのに使う予定です。
イメージの順序は
@フォーム1のテキストボックス1に種類を入力。
計算ボタン→Bへ。
パラメーターボタン→Aへ
Aフォーム2
種類別にシートに登録されてる基礎パラメータ―値を取得し数値を転記させる。
基礎値は変更可能で変更したらパラメーター数値を上書きしフォーム1へ戻って計算ボタン。基礎値は種類によってなしもあり。
Bフォーム3に決められた項目があって、面積や重さ等を算出し転記。
イメージはこんな感じで、決められた項目の計算式はマクロに組み込む予定で、自分で算出したい時に式を記号で書いて計算出来たら便利でいろいろと用途が広がっていいなと思ってます。
説明下手ですみません。やりたいことは伝わります?
https://i.imgur.com/jUHfvjj.jpg ExecuteExcel4MacroじゃないEvaluateでも出来そうじゃない? ただ、汎用性を広げると結局、Excel関数と何が違うの?という話になってしまう。
自分で算出したい時に式を記号で書くのと式をExcel関数で書くのどっちが良いかという話。 >>866
が一番楽かな
俺は名前を付けるのが嫌いなので(あとで探しにくい)
>>875みたいに数式を工夫するけど 簡単にいうと
長さ1センチの棒が10個繋がっていて.
それぞれA1〜A10という記号。
@A5までの長さは?
Ans=A1×5
Ans=A1+A2+A3+A4+A5
Ans=A1+A2+....A6-A1
どれでも同じ答えになるけど、式はバラバラでも答えが出るような物をマクロで書きたい。 >>881
言うのは簡単だけど要件定義をしっかりしないと無限に答えが出るからどうしようもないぞ
Ans=(A1+A2)+A3+A4+A5
Ans=A1+A2+A3+A4+A5*1
なんてのもある
何を省くのかを全部決める必要がある >>881
A1〜5が 1.0、1.0、0.9、1.1、1.0 みたいなこともあるのかな? >>881
構文解析とか字句解析とかパーサ、レキサとかを勉強したらいいよ 構文解析とか面倒くさいことせずにそのまま式として使えばいいじゃん
何か不都合があるの? >>886
横とか縦とかを使いたいって要件があるからじゃね >>886
原価計算をマクロで作っててどうしてもやりたいんですよね。 >>889
横とか縦とかはセルに名前付ければいいでしょ?
名前付ける部分にマクロ使うのはわかるけど
四則演算の数式の解釈をExcelに任せずわざわざ自作ことないんじゃないの? >>884
情報の後出しにならないように他にも条件があるならすべて書くがいい >>893
やりたいことは>>877。
種類 A
式
W×H/1000/1000
答え
○○
式
D0×(T+2)+20+30
答え
○○
みたいに計算がしたくて、種類によって記号に与えられてる数字を反映して計算。使う計算は、+、-、×、/の4つと括弧。 ボタンだけシートに置いてフォーミュラ使ったほうがエクセルでやるメリット活かせそうな気がするが 例えばA列に数式、B列に計算結果、C以降の列に数式に使われる変数の値を1つずつ入れるとする。
A1に"計算式"、B1に"結果"、C1に"変数→"と入力しておく。
A2には"(%1+%2)/%3"、A3に"(%1)^(%2*%1)/%3"などと計算式を入力して以下を実行。
Dim i As Long
Dim j As Long
Dim strFormula As String
Dim lngArgNum As Long
With Thisworkbook.Worksheets("計算")
For i=2 To .UsedRange.Rows.Count
strFormula=.Cells(i,1).Value
lngArgNum=Len(strFormula)-Len(Replace(strFormula,"%",""))
For j=1 To lngArgNum
strFormula=Replace(strFormula,"%" & Cstr(j),.Cells(i,j+2).Value)
Next j
.Cells(i,2).Value=Evaluate(strFormula)
Next i
End With
こんな感じで計算式とデータを元に計算できると思う。
スマホから入力で実際には試していないから間違いは有るかも。 名前付き範囲とFORMULATEXT()使ったスマートだと思うがな >>896
仕様を満たしていないから0点と言われる可能性もある >>877 の画像のデータをDBに入れて
sqlで計算させたらいい
つまりAccessを使うのがいいと思う >>898
そりゃ、コード作成依頼は受けるつもりが無いんでね。
わざとじゃ無いけど正直、仕様からわざと外したいくらい。
だから最初から仕様はまともに読んでない。
考え方を示しただけ。
後は自分の仕様に合わせて自分で作ってくれってこと。
自分が示したコードは最初から変数を%1とかにしたけど、シート上に変数のリストを持たせれば>>864の仕様により近くなるけど、そういうことも含めて自分で工夫出来て欲しい。 >>902
お前には関係無かろう。
コードも示せないくせに。
そんなに言うならお前が仕様通りのコードを示せば良いじゃないかw 種類選択して、行に並ぶ全記号をループ処理でフォーム2のテキストボックスに転記させ計算ボタンをクリックして書いた式を+なりsplitで区切って+なら足し算、-なら引き算って感じでは無理かね?
複数条件が無理そうだけど。()の概念がなければなんとかなるのかね? >>904
そのやり方だと複雑な計算式や()が付いた式の場合に難しくなると思う。
上でも書かれてる構文解析の話になる。 >>905
だから知らんのに答えようとしてスレ荒らすな無能 >>903
頓珍漢なコードでどや顔されても迷惑なだけ じゃあおまえが頓珍漢じゃないコードを
書いて反論すればいい。 荒らしてるのはどっちなんだろうね。
>>906も>>907もコードも考え方も示さずに文句しか書かない。 荒し?
事実だろ w
そもそも既に
簡単にやりたいなら>>866
ちょっと工夫して>>875
ガッツリやりたいなら>>885
が既にでてる
>>896でどや顔は恥ずかしいだけ で、肝心の質問者は全然出てこないいつものパターン w 結果希望のコードは出来ないで終わりだな。
次の方どーぞー >>910
バーカw
これだからレベルの低い癖に難癖つける奴は困るんだ。
そもそも多少書ける奴なら構文解析が面倒くさいのも分かる筈。
それでも構文解析にメリットが有るなら分かる。
今回、一体どこにメリットが有るんだ?
理由も無しに構文解析でやる奴はいないからコード例すら出てこない。
>>866は現実的な案だ。
だが、使用者にセルに名前を付けることを強いる方法だ。
大したデメリットではないからこの選択肢はありだが、最初に提示されても質問者が乗ってきていない。
幾つかの選択肢が出るのを待ってるのかもしれんが、それだったら別の案を提示しても良いだろう。
お前は全く分かって無いようだが、>>875は質問者の質問をそのまま否定したものだ。
つまりExcel関数を使えというものだ。
俺もこの意見に賛成だ。
それが>>879だ。
だが、質問者の意図をこちらが完全に把握するのは不可能だ。
状況によっては質問者の考えを取る場合もある。
実際、俺もそういう場面があってその時は>>896とは少し違うがEvaluateを使った。
はっきり言って>>896はコードを手直しすればかなり有力な案だ。
マクロでやりたいならな。
>>875も有力だ。
マクロでやらないなら。
多少書ける奴ならそんなことはすぐ分かる。 >>915
>>902
中身のない長文はバカ
の見本だな 俺はそれよりも何よりも>>896がスマホでどう入力してるのかが気になって仕方ない >>916
中身が理解出来ない or 文句言いたいだけの間違いw
>>917
別に、そのまま全部手打ちだよ。 案の定荒らしとるやん
無能の答えたがりは排除するに限る >>915
構文解析はちゃんとかければ良いんだけど、めんどくさい+例外が多いからなー
その点を完全にクリアできるなら有力候補だね。俺には無理だわ
>>866
はchangeイベントで毎回A列のセルそれぞれに名前を付けるってコードを走らせれば、直感的でわかりやすくなるかもね
>>916
中身があるのが見えないのか、勿体無い >>920
> 中身があるのが見えないのか、勿体無い
あの程度の中身であの長文 w
マジで言ってるの? 求められてるのはテクニック自慢知識自慢の回答じゃなくて多少泥臭くても質問者が理解できるような回答だけどな
業務に使うんだとしたらなんか知らんけど動いたじゃ駄目だからな なんでもExcelでやりたがる病の次は
なんでもマクロでやりたがる病かな
こういうケースはコードを提示するよりも
選択肢のメリット・デメリットを教えてあげるほうが
質問者のためになると思うけどけどね 文句言ってる奴は何も参考になることが言えんようだな。
というか、前から思ってたが分かりやすいから言ってやる。
ID変えてご苦労さんw
>>923
だからこそ考え方を示すべきで、コード作成依頼は駄目だと思う。
>>896なら動かしてみれば質問者も理解出来るだろう。
そんなに難しい部分も無いし。 何も書かなくなったってことは解決したと思っていいんじゃね > >>896なら動かしてみれば質問者も理解出来るだろう。
頓珍漢なコードを動かしてもしょうがないだろ、どや顔君 w 無能は混乱させる発言をするよりは何も言わない方が上策だという事が分かってない
だからこそ無能なのだが 「混乱させる発言をするよりは何も言わない方が上策」
これが事実であることを証明してみなさい 一連のレスで充分証明されてるだろ
理解できてないのは「無能」と言うことまで w ○○だから無能である
無能の定義は○○である
定義によると○○だから無能である
これが証明
循環www >>933
> 沈黙は金
http://www.weblio.jp/content/%E6%B2%88%E9%BB%99%E3%81%AF%E9%87%91
この「沈黙は金・雄弁は銀」という表現が成立した当初は、金よりも銀の方が価値が高かった、
つまり、、元々は、沈黙よりもむしろ雄弁を称えた格言であったという説がある。 >>935
こういうマクロが欲しい→自分じゃできない→誰かに作ってもらう
って考えの人には教えてもしょうがないからな え、まだやってたのw
>>915がうまくまとめてるのに
もうちょい人生有意義に使おう 有効な君たちへ。
Aと入力したら、コンボボックスにadditemでAから始まるキーワード候補を入れ込んで矢印ボタンを押さなくても入ってる候補を自動で全て表示って出来ない?
dropdownって書いても最初の1個しか表示出来ないんだが。
リストビュー使わずコンボボックスのみは無理かね? >>939
昔作ったな、それ
全部表示されるはず
リストの内容を一度確認したほうがいいかもしれない
でもバージョンによるバグかもしれない
アップしてくれれば確認するよ >>942
写真は辞めてくれ。見るのめんどくさい
出てきたからあげるわ
大体やりたいことはこれだと思う
・設定シートのB列に表示したいもの。C列は入力する文字を入れる
・入力シートのA1に「う」と入れて決定。リストが現れて「東京」「北海道」が現れるので選択する
もちろん「う」じゃなくても「東」なんかでもいい。場合によってはB列に「渋谷」とかいれてもいいかもしれない
https://dotup.org/uploda/dotup.org1380568.zip.html
自分で言うのも何だがこれ超便利。かなりオススメ >>943
なにこれすごい...
これは便利ですね!ちょっと理解するには時間がいりますね。ありがとうございます!
キーコードF12のところは何をしてるんですかね? >>924
こういう意識高い系が一番困る。
相手のため、とか何で上から目線なんだよ。
ExcelVBA質問スレなんだから、ExcelVBAで解決できないなら黙っとけ無能。 >>944
あ〜F12な。結局使わないから封印してたの忘れてた
リスト選択中に、enterじゃなくF12を押すとB列じゃなくてA列のIDが入力される
都道府県の場合なら、都道府県番号なんかを入れておけば便利かもな
リストの内容によっては全く使わないかもしれない
好みで設定したり拡張したりしてくれ >>946
教える方が上ってのは常識だよね。君は教室で暴れるタイプだったのかな?まぁそれだったら言っても分からんかもしれない
必ずしもVBAで解決する必要はない。可能ならエクセルや他のアプリケーションに任せたほうが遥かに早い場合もある
もう少し視野を広く持とう >>948
たかがvbaのしかも一つのことだけで
上の立場になったと錯覚できるのか
こう言うのが職場の役割の上下関係を
人間的な上下関係と取り違えてパワハラとか問題を起こす >>949
君は本当に謙虚さが足りないな
教えるという行為は分野が何であれ、それだけで上なんだよ
別にそれが人生論でもvbaでもケツの吹き方でも何でも同じだよ レス数が950を超えています。1000を超えると書き込みができなくなります。