X



Excel VBA 質問スレ Part50 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 7e6d-ffY6)
垢版 |
2017/08/27(日) 12:40:17.57ID:LjjEWylk0
!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
0852デフォルトの名無しさん (ワッチョイ eb81-YYNr)
垢版 |
2017/10/28(土) 12:41:37.08ID:av9I5Dpn0
実行時エラー9
インデックスが有効範囲にありません。
とでます。
で、デバックをおすと該当部分が黄色くなります。
シート名は変更していません。
0853デフォルトの名無しさん (ワッチョイ eb81-YYNr)
垢版 |
2017/10/28(土) 12:58:58.98ID:av9I5Dpn0
〉〉851
なぜかダウンロードした真っ皿なサンプルコードに移し替えたらできました。
シート名も変更せず、シート数も変えてないのに何かが変わっていたみたいです。
0854デフォルトの名無しさん (ワッチョイ 13eb-Rdnx)
垢版 |
2017/10/28(土) 13:04:08.97ID:nxEBBv600
>>844
windowsならosの機能でリモート保守機能があるはず
それをpowershellから使えばいい
0857デフォルトの名無しさん (ワッチョイ 53fe-6PR8)
垢版 |
2017/10/28(土) 14:12:38.74ID:89ERO7Zx0
>>853
ダウンロードってのがよくわからないけど色んな環境で使い回しているのなら
ExcelのバージョンまたぎでVBAが動かなくなることがある

同じブックを2003→2007→2003とかで使い回すと最後の2003の時だけエラーが出たり
0873デフォルトの名無しさん (ワッチョイ 818a-dVlt)
垢版 |
2017/11/02(木) 22:11:24.38ID:xfkuRD420
(1) 計算記号を半角の +,-,*,/,(,) に置き換える
(2) 式の中のパラメータを全て数値に置き換えた文字列を作る
(3) 出来上がった式の先頭に "=" を付ける
(4) 答えを出したいセルに (3)の式を書く

で出来ないか?
0874デフォルトの名無しさん (ワッチョイ 99b3-bzCF)
垢版 |
2017/11/02(木) 22:21:25.46ID:ZL7lK7Od0
Dim 式 As string
式 = "(1+2)*3"
Range("D5") = ExecuteExcel4Macro("EVALUATE(" & 式 & ")")

とりあえず、文字列変数の”式”に計算式代入してますが、代入をテキストボックスから代入にすればD5に結果が出ます。
0877デフォルトの名無しさん (ワッチョイ c29b-A9CN)
垢版 |
2017/11/02(木) 23:07:13.28ID:q8cyaoAa0
>>871
そんな感じです。

>>872
ある物の大きさだったり、重さだったり、面積とかを計算で出したくて、物ごとにパラメーター数値をそれぞれ持たせて、Aの大きさを計算したり、Bの大きさを計算するのに使う予定です。
イメージの順序は

@フォーム1のテキストボックス1に種類を入力。
計算ボタン→Bへ。
パラメーターボタン→Aへ

Aフォーム2
種類別にシートに登録されてる基礎パラメータ―値を取得し数値を転記させる。
 基礎値は変更可能で変更したらパラメーター数値を上書きしフォーム1へ戻って計算ボタン。基礎値は種類によってなしもあり。

Bフォーム3に決められた項目があって、面積や重さ等を算出し転記。


イメージはこんな感じで、決められた項目の計算式はマクロに組み込む予定で、自分で算出したい時に式を記号で書いて計算出来たら便利でいろいろと用途が広がっていいなと思ってます。

説明下手ですみません。やりたいことは伝わります?

https://i.imgur.com/jUHfvjj.jpg
0879デフォルトの名無しさん (アウアウカー Sa69-r1EQ)
垢版 |
2017/11/02(木) 23:22:31.35ID:GyvJT/E0a
ただ、汎用性を広げると結局、Excel関数と何が違うの?という話になってしまう。
自分で算出したい時に式を記号で書くのと式をExcel関数で書くのどっちが良いかという話。
0881デフォルトの名無しさん (ワッチョイ c29b-A9CN)
垢版 |
2017/11/03(金) 00:48:40.50ID:WzVp0mNm0
簡単にいうと

長さ1センチの棒が10個繋がっていて.
それぞれA1〜A10という記号。

@A5までの長さは?
 Ans=A1×5
Ans=A1+A2+A3+A4+A5
Ans=A1+A2+....A6-A1

どれでも同じ答えになるけど、式はバラバラでも答えが出るような物をマクロで書きたい。
0882デフォルトの名無しさん (ワッチョイ 06e9-68jL)
垢版 |
2017/11/03(金) 00:56:23.31ID:9+4w5kxK0
>>881
言うのは簡単だけど要件定義をしっかりしないと無限に答えが出るからどうしようもないぞ
Ans=(A1+A2)+A3+A4+A5
Ans=A1+A2+A3+A4+A5*1
なんてのもある
何を省くのかを全部決める必要がある
0885デフォルトの名無しさん (ササクッテロラ Spf1-4J3c)
垢版 |
2017/11/03(金) 14:26:57.95ID:kxIRYzimp
>>881
構文解析とか字句解析とかパーサ、レキサとかを勉強したらいいよ
0889デフォルトの名無しさん (ササクッテロラ Spf1-4J3c)
垢版 |
2017/11/03(金) 18:05:12.90ID:kxIRYzimp
>>886
横とか縦とかを使いたいって要件があるからじゃね
0892デフォルトの名無しさん (ササクッテロラ Spf1-4J3c)
垢版 |
2017/11/03(金) 18:49:35.38ID:kxIRYzimp
>>891
セルに名前つけたくないのかもしれない
0894デフォルトの名無しさん (ワッチョイ c29b-A9CN)
垢版 |
2017/11/03(金) 22:42:30.80ID:WzVp0mNm0
>>893
やりたいことは>>877

種類 A

W×H/1000/1000
答え
○○

D0×(T+2)+20+30
答え
○○

みたいに計算がしたくて、種類によって記号に与えられてる数字を反映して計算。使う計算は、+、-、×、/の4つと括弧。
0895デフォルトの名無しさん (アウアウカー Sa69-OggG)
垢版 |
2017/11/04(土) 00:12:34.17ID:Om9HmY4ya
ボタンだけシートに置いてフォーミュラ使ったほうがエクセルでやるメリット活かせそうな気がするが
0896デフォルトの名無しさん (ワッチョイ 469f-r1EQ)
垢版 |
2017/11/04(土) 01:46:11.14ID:HoIymfa20
例えば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

こんな感じで計算式とデータを元に計算できると思う。
スマホから入力で実際には試していないから間違いは有るかも。
0898デフォルトの名無しさん (ワッチョイ 42eb-4J3c)
垢版 |
2017/11/04(土) 02:50:58.68ID:LffwWHr/0
>>896
仕様を満たしていないから0点と言われる可能性もある
0899デフォルトの名無しさん (ワッチョイ 42eb-4J3c)
垢版 |
2017/11/04(土) 02:57:57.27ID:LffwWHr/0
>>877 の画像のデータをDBに入れて
sqlで計算させたらいい
つまりAccessを使うのがいいと思う
0901デフォルトの名無しさん (アウアウカー Sa69-r1EQ)
垢版 |
2017/11/04(土) 13:33:35.87ID:R24m495Za
>>898
そりゃ、コード作成依頼は受けるつもりが無いんでね。
わざとじゃ無いけど正直、仕様からわざと外したいくらい。
だから最初から仕様はまともに読んでない。
考え方を示しただけ。
後は自分の仕様に合わせて自分で作ってくれってこと。

自分が示したコードは最初から変数を%1とかにしたけど、シート上に変数のリストを持たせれば>>864の仕様により近くなるけど、そういうことも含めて自分で工夫出来て欲しい。
0902デフォルトの名無しさん (ワッチョイ 3d03-nsS3)
垢版 |
2017/11/04(土) 13:46:26.63ID:oCKjTVzP0
言い訳するなら最初から答えようとすんなカスw
0904デフォルトの名無しさん (スップ Sdc2-A9CN)
垢版 |
2017/11/04(土) 14:23:56.33ID:CRrC4P9Kd
種類選択して、行に並ぶ全記号をループ処理でフォーム2のテキストボックスに転記させ計算ボタンをクリックして書いた式を+なりsplitで区切って+なら足し算、-なら引き算って感じでは無理かね?
複数条件が無理そうだけど。()の概念がなければなんとかなるのかね?
0906デフォルトの名無しさん (ワッチョイ 3d03-nsS3)
垢版 |
2017/11/04(土) 14:38:17.15ID:oCKjTVzP0
>>905
だから知らんのに答えようとしてスレ荒らすな無能
0915デフォルトの名無しさん (アウアウカー Sa69-r1EQ)
垢版 |
2017/11/04(土) 22:45:14.81ID:SLMICp2Ea
>>910
バーカw
これだからレベルの低い癖に難癖つける奴は困るんだ。

そもそも多少書ける奴なら構文解析が面倒くさいのも分かる筈。
それでも構文解析にメリットが有るなら分かる。
今回、一体どこにメリットが有るんだ?
理由も無しに構文解析でやる奴はいないからコード例すら出てこない。

>>866は現実的な案だ。
だが、使用者にセルに名前を付けることを強いる方法だ。
大したデメリットではないからこの選択肢はありだが、最初に提示されても質問者が乗ってきていない。
幾つかの選択肢が出るのを待ってるのかもしれんが、それだったら別の案を提示しても良いだろう。

お前は全く分かって無いようだが、>>875は質問者の質問をそのまま否定したものだ。
つまりExcel関数を使えというものだ。
俺もこの意見に賛成だ。
それが>>879だ。
だが、質問者の意図をこちらが完全に把握するのは不可能だ。
状況によっては質問者の考えを取る場合もある。
実際、俺もそういう場面があってその時は>>896とは少し違うがEvaluateを使った。

はっきり言って>>896はコードを手直しすればかなり有力な案だ。
マクロでやりたいならな。
>>875も有力だ。
マクロでやらないなら。
多少書ける奴ならそんなことはすぐ分かる。
0919デフォルトの名無しさん (ワッチョイ 3d03-nsS3)
垢版 |
2017/11/04(土) 23:01:13.23ID:oCKjTVzP0
案の定荒らしとるやん
無能の答えたがりは排除するに限る
0920デフォルトの名無しさん (ワッチョイ 06e9-TOoe)
垢版 |
2017/11/04(土) 23:01:26.25ID:9byl7HlM0
>>915
構文解析はちゃんとかければ良いんだけど、めんどくさい+例外が多いからなー
その点を完全にクリアできるなら有力候補だね。俺には無理だわ

>>866
はchangeイベントで毎回A列のセルそれぞれに名前を付けるってコードを走らせれば、直感的でわかりやすくなるかもね

>>916
中身があるのが見えないのか、勿体無い
0923デフォルトの名無しさん (ワッチョイ 79ea-lboT)
垢版 |
2017/11/04(土) 23:25:14.88ID:jkiPwlri0
求められてるのはテクニック自慢知識自慢の回答じゃなくて多少泥臭くても質問者が理解できるような回答だけどな
業務に使うんだとしたらなんか知らんけど動いたじゃ駄目だからな
0924デフォルトの名無しさん (ワッチョイ 82b3-69m6)
垢版 |
2017/11/04(土) 23:56:47.77ID:O0AU1SEY0
なんでもExcelでやりたがる病の次は
なんでもマクロでやりたがる病かな

こういうケースはコードを提示するよりも
選択肢のメリット・デメリットを教えてあげるほうが
質問者のためになると思うけどけどね
0925デフォルトの名無しさん (アウアウカー Sa69-r1EQ)
垢版 |
2017/11/04(土) 23:59:49.18ID:SLMICp2Ea
文句言ってる奴は何も参考になることが言えんようだな。
というか、前から思ってたが分かりやすいから言ってやる。
ID変えてご苦労さんw

>>923
だからこそ考え方を示すべきで、コード作成依頼は駄目だと思う。
>>896なら動かしてみれば質問者も理解出来るだろう。
そんなに難しい部分も無いし。
0926デフォルトの名無しさん (ワッチョイ 42eb-4J3c)
垢版 |
2017/11/05(日) 00:03:30.19ID:d3t3AJCT0
sqlでいいじゃない
0929デフォルトの名無しさん (オッペケ Srf1-ApTO)
垢版 |
2017/11/05(日) 12:31:57.15ID:RpLSKu2Sr
無能は混乱させる発言をするよりは何も言わない方が上策だという事が分かってない
だからこそ無能なのだが
0935デフォルトの名無しさん (ワッチョイ 79ea-lboT)
垢版 |
2017/11/05(日) 13:08:17.40ID:9GsfV+7k0
まぁ一番悪いのはコード依頼する質問者だけどな
0939デフォルトの名無しさん (ワッチョイ c29b-A9CN)
垢版 |
2017/11/05(日) 14:05:31.85ID:Go05s/xH0
有効な君たちへ。

Aと入力したら、コンボボックスにadditemでAから始まるキーワード候補を入れ込んで矢印ボタンを押さなくても入ってる候補を自動で全て表示って出来ない?
dropdownって書いても最初の1個しか表示出来ないんだが。
リストビュー使わずコンボボックスのみは無理かね?
0943デフォルトの名無しさん (ワッチョイ 06e9-FqSh)
垢版 |
2017/11/05(日) 15:01:02.75ID:2uRc+T650
>>942
写真は辞めてくれ。見るのめんどくさい

出てきたからあげるわ
大体やりたいことはこれだと思う
・設定シートのB列に表示したいもの。C列は入力する文字を入れる
・入力シートのA1に「う」と入れて決定。リストが現れて「東京」「北海道」が現れるので選択する
もちろん「う」じゃなくても「東」なんかでもいい。場合によってはB列に「渋谷」とかいれてもいいかもしれない
https://dotup.org/uploda/dotup.org1380568.zip.html

自分で言うのも何だがこれ超便利。かなりオススメ
0947デフォルトの名無しさん (ワッチョイ 06e9-/D91)
垢版 |
2017/11/05(日) 16:42:55.58ID:2uRc+T650
>>944
あ〜F12な。結局使わないから封印してたの忘れてた
リスト選択中に、enterじゃなくF12を押すとB列じゃなくてA列のIDが入力される
都道府県の場合なら、都道府県番号なんかを入れておけば便利かもな
リストの内容によっては全く使わないかもしれない
好みで設定したり拡張したりしてくれ
0948デフォルトの名無しさん (ワッチョイ 06e9-/D91)
垢版 |
2017/11/05(日) 16:45:11.41ID:2uRc+T650
>>946
教える方が上ってのは常識だよね。君は教室で暴れるタイプだったのかな?まぁそれだったら言っても分からんかもしれない
必ずしもVBAで解決する必要はない。可能ならエクセルや他のアプリケーションに任せたほうが遥かに早い場合もある
もう少し視野を広く持とう
0949デフォルトの名無しさん (ササクッテロラ Spf1-4J3c)
垢版 |
2017/11/05(日) 16:53:57.90ID:a4pI1v9ip
>>948
たかがvbaのしかも一つのことだけで
上の立場になったと錯覚できるのか

こう言うのが職場の役割の上下関係を
人間的な上下関係と取り違えてパワハラとか問題を起こす
レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況