VBAを使った質問ならなんでもござれ
本来の対象であるオフィスアプリを操作する以外の話もOK
ゲーム作り、Webアクセス、外部アプリの操作
COM(ActiveX)、Win32API、.NET Framework、DirectXなどなど
VBAで実行するものであればなんでも質問してください
VBAを開発環境としていろいろ作っちゃいましょう
前スレ
VBAなんでも質問スレ
http://peace.2ch.net/test/read.cgi/tech/1342087380/
関連スレ
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1419718732/
Access VBA 質問スレ Part1
http://peace.2ch.net/test/read.cgi/tech/1328536426/
VBプログラマ質問スレ(Ver.6.0 まで) part64
http://peace.2ch.net/test/read.cgi/tech/1393069842/
Excel総合相談所 118 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/bsoft/1430352555/
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2015/05/21(木) 10:52:44.71ID:KLv0vQmm301デフォルトの名無しさん
2017/04/21(金) 22:10:11.53ID:9tskJEPF >>300
aaa1とかaaa2を変数として捉えず、文字列と数値を要素に持つ2次元配列と見れば良い
で、データ全体を制御するときは、aaa1,aaa2...の2次元配列全てを要素として持つコレクションオブジェクトを生成して操作する
aaa1とかaaa2を変数として捉えず、文字列と数値を要素に持つ2次元配列と見れば良い
で、データ全体を制御するときは、aaa1,aaa2...の2次元配列全てを要素として持つコレクションオブジェクトを生成して操作する
302デフォルトの名無しさん
2017/04/21(金) 22:18:30.36ID:TpPjDerb >>300
Dictionaryのkeyにすれば良いんじゃね
Dictionaryのkeyにすれば良いんじゃね
303デフォルトの名無しさん
2017/04/21(金) 22:25:23.50ID:9tskJEPF CollectionよりDictionaryだな、確かに
304デフォルトの名無しさん
2017/04/21(金) 23:24:44.93ID:3F+Ljh12 そういう質問、初心者によく聞かれるわ
普通は配列を使えと教えるもんだが
普通は配列を使えと教えるもんだが
305デフォルトの名無しさん
2017/04/22(土) 06:16:50.97ID:zUhE/Mll306299
2017/04/22(土) 08:27:20.54ID:zUhE/Mll307デフォルトの名無しさん
2017/04/22(土) 08:53:12.92ID:MM2jcjjz >>306
変数名を数字だけで管理する方法はない。
VBAの仕様上、できない。
というか、その集計結果なるものがプログラム実行時に決定するのだとしたら、集計結果を格納する変数の名前に集計結果の数値をはじめから盛り込もうとするのは無理があるし、そもそも理由が分からない。
やりたいことを実現するにはもっと適切な他の方法があるんじゃないかな。
変数名を数字だけで管理する方法はない。
VBAの仕様上、できない。
というか、その集計結果なるものがプログラム実行時に決定するのだとしたら、集計結果を格納する変数の名前に集計結果の数値をはじめから盛り込もうとするのは無理があるし、そもそも理由が分からない。
やりたいことを実現するにはもっと適切な他の方法があるんじゃないかな。
308デフォルトの名無しさん
2017/04/22(土) 11:27:30.44ID:6RXuRSFv >>306
Dictionaryのvalueは変更可能
Dictionaryのvalueは変更可能
309299
2017/04/22(土) 15:29:06.19ID:zUhE/Mll310デフォルトの名無しさん
2017/04/22(土) 20:43:48.30ID:zUhE/Mll Dim dic As New Dictionary
Dim i As Integer
dic.Add "キー1", "アイテム1"
dic.Add "キー2", "アイテム2"
dic.Add "キー3", "アイテム3"
Dictionaryで指定した"キー"と "アイテム"は処理が終了するとリセットされるようですが、
グローバル変数のように処理が終了しても次実行されるまで記憶させておくようにする事は出来ないのでしょうか?
Dim i As Integer
dic.Add "キー1", "アイテム1"
dic.Add "キー2", "アイテム2"
dic.Add "キー3", "アイテム3"
Dictionaryで指定した"キー"と "アイテム"は処理が終了するとリセットされるようですが、
グローバル変数のように処理が終了しても次実行されるまで記憶させておくようにする事は出来ないのでしょうか?
311デフォルトの名無しさん
2017/04/22(土) 22:48:51.75ID:AOzJBbd9 >>310
プロシージャを跨いで値を保持させるなら、グローバルな配列変数、(アプリケーションがExcelならば)セル、シェイプ、カスタムドキュメントプロパティ、グローバルコレクション、自作のグローバルクラスのインスタンスなどに値を記憶させるしかない
でもそれならわざわざプロシージャ内でDictionaryを使って連想配列を操作するより、ExcelのセルにKeyと値を書き込んで配列アクセスして読み書きする処理の方が遥かに楽だと思う
プロシージャを跨いで値を保持させるなら、グローバルな配列変数、(アプリケーションがExcelならば)セル、シェイプ、カスタムドキュメントプロパティ、グローバルコレクション、自作のグローバルクラスのインスタンスなどに値を記憶させるしかない
でもそれならわざわざプロシージャ内でDictionaryを使って連想配列を操作するより、ExcelのセルにKeyと値を書き込んで配列アクセスして読み書きする処理の方が遥かに楽だと思う
312デフォルトの名無しさん
2017/04/22(土) 23:30:15.48ID:zUhE/Mll >>311
ありがとうございます。
今作っているコードでセルへのアクセスが膨大になってきて処理時間がどんどん長くなる傾向がみられまして
全操作をセルにアクセスせずに完結させようと色々考えていましたがなかなかそうはいかないようですね。
ありがとうございます。
今作っているコードでセルへのアクセスが膨大になってきて処理時間がどんどん長くなる傾向がみられまして
全操作をセルにアクセスせずに完結させようと色々考えていましたがなかなかそうはいかないようですね。
313デフォルトの名無しさん
2017/04/23(日) 05:30:19.61ID:t5ve42Di314デフォルトの名無しさん
2017/04/23(日) 10:16:09.39ID:wfwXXeKO >>312
標準モジュールとかでDictionary型のオブジェクト変数をグローバルスコープ(Public)でNew宣言すれば、処理を抜けてもDictionaryのItemは初期化されないんじゃないのかな
ただ単なる配列の処理でデータが数千件程度なら、描画止めた状態でワークシート使った方が遥かに楽だと思うが。
標準モジュールとかでDictionary型のオブジェクト変数をグローバルスコープ(Public)でNew宣言すれば、処理を抜けてもDictionaryのItemは初期化されないんじゃないのかな
ただ単なる配列の処理でデータが数千件程度なら、描画止めた状態でワークシート使った方が遥かに楽だと思うが。
315デフォルトの名無しさん
2017/04/23(日) 16:51:51.75ID:fs201BJ1316デフォルトの名無しさん
2017/04/23(日) 17:11:32.92ID:yvJyPXpi >>315
何の引数に渡すことを指してるのかな?
何の引数に渡すことを指してるのかな?
317デフォルトの名無しさん
2017/04/23(日) 18:02:04.26ID:fs201BJ1318デフォルトの名無しさん
2017/04/23(日) 18:27:09.16ID:yvJyPXpi319デフォルトの名無しさん
2017/04/28(金) 17:33:41.10ID:krqKI6DB 超既出FAQですな。
『Public 宣言された変数の有効期間』
https://support.microsoft.com/ja-jp/help/408871
簡単に言うと、メソッド実行中以外はいつでもpublic変数はクリアされうるから、値が残っていることを期待したマクロを書くなってこと。
『Public 宣言された変数の有効期間』
https://support.microsoft.com/ja-jp/help/408871
簡単に言うと、メソッド実行中以外はいつでもpublic変数はクリアされうるから、値が残っていることを期待したマクロを書くなってこと。
320デフォルトの名無しさん
2017/04/28(金) 19:14:11.69ID:AZuqyiJa321デフォルトの名無しさん
2017/04/28(金) 22:13:43.74ID:A3VkBONm Publicな静的変数は使わない。
エクセルのセルとかワードの文書変数とかの規定オブジェクトにデータを書き込んだ方が便利
エクセルのセルとかワードの文書変数とかの規定オブジェクトにデータを書き込んだ方が便利
322デフォルトの名無しさん
2017/04/29(土) 02:16:02.91ID:2iGvQ1xG >>321
いや、それは格好悪いんじゃね?
セルを使ったりCustomDocumentPropertiesも使うけど、それに合ったものだから使うわけでPublic変数に合ったものもある。
適材適所だろ。
いや、それは格好悪いんじゃね?
セルを使ったりCustomDocumentPropertiesも使うけど、それに合ったものだから使うわけでPublic変数に合ったものもある。
適材適所だろ。
323デフォルトの名無しさん
2017/05/25(木) 20:51:55.45ID:yS9f0RVc ontime で実行するプロシージャって標準モジュールに書かないとあかんのか。
このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。って出た。
このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。って出た。
324デフォルトの名無しさん
2017/05/25(木) 21:07:30.77ID:JTnnq+Q0325デフォルトの名無しさん
2017/05/26(金) 00:03:34.69ID:Fw61rXsb >>324
ThisWorkBookのモジュールからOnTimeでThisWorkBookのモジュール内のPrivate Sub を予約したんですが・・・これじゃ駄目なんですかね?
ThisWorkBookのモジュールからOnTimeでThisWorkBookのモジュール内のPrivate Sub を予約したんですが・・・これじゃ駄目なんですかね?
326デフォルトの名無しさん
2017/05/26(金) 23:19:52.51ID:Fw61rXsb >>325です
OnTimeで実行予約するプロシージャを標準モジュールに移動したら動くようになりました〜
OnTimeで実行予約するプロシージャを標準モジュールに移動したら動くようになりました〜
327デフォルトの名無しさん
2017/06/05(月) 21:02:56.92ID:bd1ggU41 特定の文字が含まれているセル(複数ある)を検索し、
検索されたセルを含む行全体(Entirerow)を同時選択する方法
以上お願いします。
検索されたセルを含む行全体(Entirerow)を同時選択する方法
以上お願いします。
328デフォルトの名無しさん
2017/06/05(月) 21:06:49.56ID:bd1ggU41 その文字を含むセルを、行ごと削除したり、行ごとコピーしたりと、いろいろしたいので質問致しました。
329デフォルトの名無しさん
2017/06/05(月) 21:25:48.60ID:nSGQpg3a 鮮やかな丸投げっぷりにワラタ
作成依頼OKな Excel VBAスレと間違えてない?
作成依頼OKな Excel VBAスレと間違えてない?
330デフォルトの名無しさん
2017/06/05(月) 21:31:47.51ID:tRFV5HQ5331デフォルトの名無しさん
2017/06/05(月) 21:41:12.12ID:jKyX/qwq 検索対象のセル範囲でForループを回す
セル値に特定文字を含むセルが見つかる度にEntireRowを取得して変数に入れるかUnionで選択対象の範囲をマージしていく
ループ終了後にSelectする
以上
セル値に特定文字を含むセルが見つかる度にEntireRowを取得して変数に入れるかUnionで選択対象の範囲をマージしていく
ループ終了後にSelectする
以上
332デフォルトの名無しさん
2017/06/05(月) 21:45:35.27ID:epzJZZwH333デフォルトの名無しさん
2017/06/05(月) 22:37:03.17ID:bd1ggU41 ごめんなさい、質問者です。
ここじゃなかったのですね。上に上がったやり方でできそうなのでやってみます。ありがとうございます
ここじゃなかったのですね。上に上がったやり方でできそうなのでやってみます。ありがとうございます
334デフォルトの名無しさん
2017/06/06(火) 05:49:03.11ID:tznXutzN 色々細かい条件でどんなコードが効率いいか、変わってくるでしょ。
例えばそのセルがあるのは、特定の行だけとか、検索文字列はセルに完全一致なのか含まれるのか、など。
例えばそのセルがあるのは、特定の行だけとか、検索文字列はセルに完全一致なのか含まれるのか、など。
335デフォルトの名無しさん
2017/06/06(火) 09:11:47.41ID:YhE+Nuz8 331だが、同じ行に該当セルが複数ある場合は無駄が生じるな
実現したい機能次第だが、工夫が必要かもな
実現したい機能次第だが、工夫が必要かもな
336デフォルトの名無しさん
2017/06/07(水) 19:31:10.77ID:e13xfCG0 はじめまして。以下2点、教えていただけると幸いです。
環境は、OS:Windows7, Excel2010です。よろしくお願いします。
1.プルダウンの初期値設定
セルA1にりんご、A2にバナナ、・・・のようにA列にある項目をプルダウンで選択したいです。
このとき、「A列のj行目(パラメータ選択可能)を初期値にしたプルダウンをB1に設置する」VBAのコマンドを教えていただきたいです。
2.ファイル名の変更
aaa.txtというファイルをデスクトップに出力するマクロを作れました。
このマクロ実行後、再度実行するとaaa(2).txtのファイルを、再度実行するとaaa(3).txtのファイルを出力・・・
このようなVBAのコマンドを教えていただきたいです。
環境は、OS:Windows7, Excel2010です。よろしくお願いします。
1.プルダウンの初期値設定
セルA1にりんご、A2にバナナ、・・・のようにA列にある項目をプルダウンで選択したいです。
このとき、「A列のj行目(パラメータ選択可能)を初期値にしたプルダウンをB1に設置する」VBAのコマンドを教えていただきたいです。
2.ファイル名の変更
aaa.txtというファイルをデスクトップに出力するマクロを作れました。
このマクロ実行後、再度実行するとaaa(2).txtのファイルを、再度実行するとaaa(3).txtのファイルを出力・・・
このようなVBAのコマンドを教えていただきたいです。
337デフォルトの名無しさん
2017/06/07(水) 21:49:32.12ID:nqbSOdK9 >>336
コマンドはありません
コマンドはありません
338デフォルトの名無しさん
2017/06/07(水) 22:23:27.64ID:L3ua+fDn >>336
txtファイルをデスクトップに出力っていう日本語の破壊力がやべぇ
txtファイルをデスクトップに出力っていう日本語の破壊力がやべぇ
339デフォルトの名無しさん
2017/06/08(木) 05:33:24.44ID:1DKX/Vru >>336
1
・B1セルを選択してからマクロの記録を実行
・入力規則でリストを選択にリストの内容でA列を選択する
・マクロ記録の終了をする
・できたコードを修正してA列の任意のセルをデフォルトにするように変更する
2
・デスクトップにaaa.txtが存在するかチェックする。
・存在しない場合はaaa.txtを作成して終了。
・存在する場合はDo~Loop中にデスクトップにaaa(i).txtが存在するかチェックする
・存在する場合はiをカウントアップして次のループ
・存在しない場合はそのiを使用してaaa(i).txtを作成して終了。
1
・B1セルを選択してからマクロの記録を実行
・入力規則でリストを選択にリストの内容でA列を選択する
・マクロ記録の終了をする
・できたコードを修正してA列の任意のセルをデフォルトにするように変更する
2
・デスクトップにaaa.txtが存在するかチェックする。
・存在しない場合はaaa.txtを作成して終了。
・存在する場合はDo~Loop中にデスクトップにaaa(i).txtが存在するかチェックする
・存在する場合はiをカウントアップして次のループ
・存在しない場合はそのiを使用してaaa(i).txtを作成して終了。
340デフォルトの名無しさん
2017/06/25(日) 17:10:56.20ID:/fEFwdln A1セルに =NOW()-TODAY() と入力すると
現在時刻が表示されますが。
MsgBox Range("a1")
とすると 0.0110212・・・と言ったような数値が出ます。
Dim now As Date
now=Range("a1")
と型を指定した変数に格納してやると
MsgBox now で 21:49:32 といった一般的な時間表記を示せますが、
変数化を省略して
MsgBox Range("a1")〜に補足コードを書くなどで同じ処理を実現する方法は無いのでしょうか?
現在時刻が表示されますが。
MsgBox Range("a1")
とすると 0.0110212・・・と言ったような数値が出ます。
Dim now As Date
now=Range("a1")
と型を指定した変数に格納してやると
MsgBox now で 21:49:32 といった一般的な時間表記を示せますが、
変数化を省略して
MsgBox Range("a1")〜に補足コードを書くなどで同じ処理を実現する方法は無いのでしょうか?
341デフォルトの名無しさん
2017/06/25(日) 17:20:36.10ID:A4A49pvi MsgBox Range("A1").Text
とか
MsgBox Format(Range("A1"), "hh:mm:ss")
とか
とか
MsgBox Format(Range("A1"), "hh:mm:ss")
とか
342デフォルトの名無しさん
2017/06/25(日) 17:26:03.97ID:/fEFwdln343デフォルトの名無しさん
2017/07/17(月) 17:20:20.62ID:7pjXcMGR プロシージャの中で1回しか使わないのに、わざわざ変数にするやつとかいるよね。(しかもハンガリアン記法で)
100行に満たない程度のコードなら、Withステートメント使ったほうがむしろ可読性は上がる。
100行に満たない程度のコードなら、Withステートメント使ったほうがむしろ可読性は上がる。
344デフォルトの名無しさん
2017/07/17(月) 17:25:26.05ID:l3sSLpQS マシンパワーが貧弱だった大昔ならともかく、今時はリソースを気にする必要なんてないんだから、可読性を最優先で記述するべきだよ。
345デフォルトの名無しさん
2017/07/23(日) 22:54:52.46ID:EbUz/UVB346デフォルトの名無しさん
2017/07/24(月) 03:07:48.10ID:/3vdoRrW >>345
何回も実行するなら変数に入れたほうがいいんじゃね?
何回も実行するなら変数に入れたほうがいいんじゃね?
347デフォルトの名無しさん
2017/09/01(金) 23:04:37.73ID:RmCwgyLh >>345
(1)
For I1 = 1 to UBound(xxx)
For I2 = 1 to UBound(xxx)
(2)
J=UBound(xxx)
For I1 = 1 to J
For I2 = 1 to J
普通に考えて本のチョット早いと思われますが、記述の労力ほどじゃない。
他の方の書いてますが、今は、処理速度が物凄く早くなっています。
気にしなくていいと思います。
ただし、私はEXCELでVBAを書くのですが、シートのセルに書き出すと物凄く遅くなる。
VBAの配列とかメモリーならばほとんど気にしなくていいです。
ですから、メモリー内で処理して最後の最後にシートに書くようにしてます。
(1)
For I1 = 1 to UBound(xxx)
For I2 = 1 to UBound(xxx)
(2)
J=UBound(xxx)
For I1 = 1 to J
For I2 = 1 to J
普通に考えて本のチョット早いと思われますが、記述の労力ほどじゃない。
他の方の書いてますが、今は、処理速度が物凄く早くなっています。
気にしなくていいと思います。
ただし、私はEXCELでVBAを書くのですが、シートのセルに書き出すと物凄く遅くなる。
VBAの配列とかメモリーならばほとんど気にしなくていいです。
ですから、メモリー内で処理して最後の最後にシートに書くようにしてます。
348デフォルトの名無しさん
2017/09/02(土) 08:26:52.52ID:tqo/3wkP349デフォルトの名無しさん
2017/09/05(火) 10:53:29.80ID:WmSrV0rS アノニマスに入会したいんですがVBA知ってるだけで入れますか?
あと入会ってどうやんの? スーツ着て履歴書持って事務所に面接に行くの?
あと入会ってどうやんの? スーツ着て履歴書持って事務所に面接に行くの?
350デフォルトの名無しさん
2017/09/05(火) 12:25:17.40ID:P2jRu54V たまにハローワークに求人出てるから行ってみれば?
351デフォルトの名無しさん
2017/09/12(火) 02:10:43.27ID:2wFcaigK 超初心者です
同じブック内の複数のシートにある顧客データをUserFormを用いて(検索するイメージ)抽出し、別のシートへ出力するコードを書きたいのですがいまいちわかりません。
大変困っているのでヒントをくださればありがたいです。
同じブック内の複数のシートにある顧客データをUserFormを用いて(検索するイメージ)抽出し、別のシートへ出力するコードを書きたいのですがいまいちわかりません。
大変困っているのでヒントをくださればありがたいです。
352デフォルトの名無しさん
2017/09/12(火) 02:30:21.88ID:U3/YorLf353デフォルトの名無しさん
2017/09/12(火) 04:10:40.96ID:2wFcaigK354デフォルトの名無しさん
2017/09/12(火) 08:28:28.15ID:GFFccSR9355デフォルトの名無しさん
2017/09/12(火) 12:27:40.35ID:7XJfZGpJ どこで覚えようとお前の知った事じゃねえだろw
なんだこのバカはwww
なんだこのバカはwww
356デフォルトの名無しさん
2017/09/12(火) 13:06:30.39ID:N1ygkJfx >Excel自体触ったことない超初心者
ユーザーフォームを作ったことはあるのか?
無けりゃ、この時点でやろうとしていることはもう無理
VBAはほんの少しでも書いたことはあるのか?
まぁ最初は>>354の言うようにシート上で実現して、それをユーザーフォームにもっていくのが順当
というか触ったこと無いって時点で釣り確定
ユーザーフォームを作ったことはあるのか?
無けりゃ、この時点でやろうとしていることはもう無理
VBAはほんの少しでも書いたことはあるのか?
まぁ最初は>>354の言うようにシート上で実現して、それをユーザーフォームにもっていくのが順当
というか触ったこと無いって時点で釣り確定
357デフォルトの名無しさん
2017/09/12(火) 16:38:53.70ID:2wFcaigK VBA参入門書とネットの知識を詰め込みました。
Excel初心者は本当です。友達に教えてもらいつつやっています。気分を害された方、すみません。
>>356さん非常に分かりやすいです。
二日間くらい最初からコードを書こうとしてもがいていましたが、マクロの記録が使えそうな気がします。
そのコードをいじってボタンで起動するユーザーフォームとくっつけるイメージで挑戦してみます。
Excel初心者は本当です。友達に教えてもらいつつやっています。気分を害された方、すみません。
>>356さん非常に分かりやすいです。
二日間くらい最初からコードを書こうとしてもがいていましたが、マクロの記録が使えそうな気がします。
そのコードをいじってボタンで起動するユーザーフォームとくっつけるイメージで挑戦してみます。
358デフォルトの名無しさん
2017/09/12(火) 16:41:08.80ID:2wFcaigK >>354さんもありがとうございます!参考&励みになります
359デフォルトの名無しさん
2017/09/12(火) 20:34:49.57ID:/wKXVszF このスレで一番の基地外が満を持して遅れて登場
360デフォルトの名無しさん
2017/09/12(火) 20:51:47.27ID:U3/YorLf 俺のことかな?
361デフォルトの名無しさん
2017/09/13(水) 00:17:05.57ID:DHqL5rdG362デフォルトの名無しさん
2017/09/14(木) 07:47:53.75ID:w7wWQUJY フィルタオプションとマクロの記録で8割方完成できるな
363デフォルトの名無しさん
2017/09/15(金) 10:19:31.10ID:wFtq+9vG ADOの事でちょっと質問です
変数を定義する時に
Dim wkR as New ADODB.Recordset
ってするんだけど、RecordsetとRecordの違いって何?
変数を定義する時に
Dim wkR as New ADODB.Recordset
ってするんだけど、RecordsetとRecordの違いって何?
364あ
2017/09/15(金) 10:57:55.87ID:oEkV+GvG365デフォルトの名無しさん
2017/09/18(月) 06:42:59.71ID:xbe9SlrW >>361-362 ありがとうございます、簡単なプログラムですが完成して感動しました。
Ifとマクロの記録が万能すぎることを肝に銘じてこれからもがんばります( ??? )
Ifとマクロの記録が万能すぎることを肝に銘じてこれからもがんばります( ??? )
366デフォルトの名無しさん
2017/09/18(月) 15:10:56.93ID:7Xxpypu9 >>365
万能過ぎないけどね。
そればっかり使ってる人は永遠に初心者なままだし、色々な面で出来の悪いプログラムになる。
自動生成されたコードのそれぞれの意味を理解して自分なりに書けるようになると上達する。
例えば
Range("B4").Select
Selection.Value=10
のようなコードが生成されると思うけど意味を考えたら
Range("B4").Value=10
で良いとわかるよね。
万能過ぎないけどね。
そればっかり使ってる人は永遠に初心者なままだし、色々な面で出来の悪いプログラムになる。
自動生成されたコードのそれぞれの意味を理解して自分なりに書けるようになると上達する。
例えば
Range("B4").Select
Selection.Value=10
のようなコードが生成されると思うけど意味を考えたら
Range("B4").Value=10
で良いとわかるよね。
367デフォルトの名無しさん
2017/09/18(月) 20:44:49.78ID:ydCO3vgD >>363
Recordset オブジェクト
https://msdn.microsoft.com/ja-jp/library/cc364264.aspx
Record オブジェクト
https://msdn.microsoft.com/ja-jp/library/cc364270.aspx
Recordset オブジェクト
https://msdn.microsoft.com/ja-jp/library/cc364264.aspx
Record オブジェクト
https://msdn.microsoft.com/ja-jp/library/cc364270.aspx
368デフォルトの名無しさん
2017/09/18(月) 23:50:59.42ID:XctjYupl すみませんお力添えをお願いします!
エクセルマクロ(VBA)の件でお尋ねいたしたく思います!
まずグラフの系列名はセル参照で表示させてます
シート名:あいうえお
適用グラフ:グラフ4
系列範囲:A11:Z11
必要なデータ選択は全ての系列で済ませています
あとはグラフで不要な系列を削除したいため、グラフに乗せたくない系列名は”×”になるようにしてます
この系列名”×”をVBAで自動的に削除させることは可能でしょうか?
またグラフは別シートの数値入力をもって自動作成される仕様にしているので、トリガーは設けません
デフォルトだと全部”×”のため(初めは数値データの入力がないため)
数値が入ると正しい系列名に変更されるため、VBAではまず”×”で削除して、”×”以外の系列名に変わったら復活するという構想を練っています
とりあえず、まず”×”を消すコードを見よう見まねで書いてみたのですが動作しませんでした
消すのは良いですが復活させるのも組み込むとなるとちんぷんかんぷんです
是非ともご教示お願いします!
Sub test()
Dim d As Long
Dim i As Long
Dim j As Long
For i = 2 To Sheets.Count
d = Range("A11:Z11").End(xlUp).Row
With Worksheets(i).ChartObjects("グラフ 4").Shapes.AddChart.Chart
.ChartType = xlLineMarkers
For j = .SeriesCollection.Count To 1 Step -1
If .SeriesCollection(j).Name <> "×" Then
.SeriesCollection(j).Delete
End If
Next j
End With
Next
End Sub
エクセルマクロ(VBA)の件でお尋ねいたしたく思います!
まずグラフの系列名はセル参照で表示させてます
シート名:あいうえお
適用グラフ:グラフ4
系列範囲:A11:Z11
必要なデータ選択は全ての系列で済ませています
あとはグラフで不要な系列を削除したいため、グラフに乗せたくない系列名は”×”になるようにしてます
この系列名”×”をVBAで自動的に削除させることは可能でしょうか?
またグラフは別シートの数値入力をもって自動作成される仕様にしているので、トリガーは設けません
デフォルトだと全部”×”のため(初めは数値データの入力がないため)
数値が入ると正しい系列名に変更されるため、VBAではまず”×”で削除して、”×”以外の系列名に変わったら復活するという構想を練っています
とりあえず、まず”×”を消すコードを見よう見まねで書いてみたのですが動作しませんでした
消すのは良いですが復活させるのも組み込むとなるとちんぷんかんぷんです
是非ともご教示お願いします!
Sub test()
Dim d As Long
Dim i As Long
Dim j As Long
For i = 2 To Sheets.Count
d = Range("A11:Z11").End(xlUp).Row
With Worksheets(i).ChartObjects("グラフ 4").Shapes.AddChart.Chart
.ChartType = xlLineMarkers
For j = .SeriesCollection.Count To 1 Step -1
If .SeriesCollection(j).Name <> "×" Then
.SeriesCollection(j).Delete
End If
Next j
End With
Next
End Sub
369デフォルトの名無しさん
2017/09/19(火) 20:55:54.78ID:2SFxAhMD370デフォルトの名無しさん
2017/09/20(水) 01:17:31.22ID:2dxgF4qE IF文初心者ですが
3つ数字の中から一番小さい数を判定したいのですが、
elseや入れ子で複数書けば判定できるというのは推測がつきますが
最も簡潔に記述するとしたらどんな記述方法がありますでしょうか?
例)
33 12 3
↓
3を抽出
3つ数字の中から一番小さい数を判定したいのですが、
elseや入れ子で複数書けば判定できるというのは推測がつきますが
最も簡潔に記述するとしたらどんな記述方法がありますでしょうか?
例)
33 12 3
↓
3を抽出
371デフォルトの名無しさん
2017/09/20(水) 05:19:03.75ID:mkPuPLWs >>370
最小値 = WorksheetFunction.Min(Array(33, 12, 3))
最小値 = WorksheetFunction.Min(Array(33, 12, 3))
372デフォルトの名無しさん
2017/09/20(水) 05:37:31.94ID:mkPuPLWs >>370
x = 33
y = 12
z = 3
If x < y And x < z Then
最小値 = x
ElseIf y < x And y < z Then
最小値 = y
Else
最小値 = z
End If
x = 33
y = 12
z = 3
If x < y And x < z Then
最小値 = x
ElseIf y < x And y < z Then
最小値 = y
Else
最小値 = z
End If
373デフォルトの名無しさん
2017/09/21(木) 21:28:21.10ID:j1SDXypf374デフォルトの名無しさん
2017/09/21(木) 22:56:33.81ID:8rkXkN3+ >>372は < じゃなくて <= にしないと誤判定する
375デフォルトの名無しさん
2017/09/22(金) 06:56:36.59ID:zUC9dslV 例題の対象が3ではなくて1000とかに増えたら破綻するだろw
376デフォルトの名無しさん
2017/09/22(金) 07:13:14.29ID:TPoybrYY >>375
数字3つという前提を勝手に変えるこういう馬鹿はなんだろう
数字3つという前提を勝手に変えるこういう馬鹿はなんだろう
377デフォルトの名無しさん
2017/09/22(金) 09:34:43.90ID:KphHXryq 汎用性を考慮しないのか。
なかなかひどい。こういう人もいるという参考になったわ。
なかなかひどい。こういう人もいるという参考になったわ。
378デフォルトの名無しさん
2017/09/22(金) 09:37:13.81ID:oVXNeyl2 ソートアルゴリズム書くだけやん
379デフォルトの名無しさん
2017/09/22(金) 09:54:47.89ID:yLI54yGL 372のはアルゴリズムと言うよりその場しのぎの対応
380デフォルトの名無しさん
2017/09/22(金) 10:13:30.00ID:yLI54yGL 配列に入れてループで最小値と比較して小さければ最小値を更新していくのが定石なのでは。
381デフォルトの名無しさん
2017/09/22(金) 10:29:30.23ID:WIc1mdfR だからMin関数で一発なのに、無駄に車輪の再発明をしたがるやつが多くてリンダ困っちゃう
382デフォルトの名無しさん
2017/09/22(金) 10:32:40.77ID:4is4PUWl >>379
順次比較も立派なアルゴリズムの一種なんだが
順次比較も立派なアルゴリズムの一種なんだが
383デフォルトの名無しさん
2017/09/22(金) 14:42:52.69ID:KphHXryq これはひどい
384デフォルトの名無しさん
2017/09/22(金) 14:57:48.38ID:WETwNkme IF初心者とか言ってる人に何言ってるんだか
あといつからこのスレはEXCEL VBA限定になったんだ
あといつからこのスレはEXCEL VBA限定になったんだ
385デフォルトの名無しさん
2017/09/22(金) 20:39:03.91ID:zUC9dslV >elseや入れ子で複数書けば判定できる
>最も簡潔に記述するとしたらどんな
という問いに、elseや入れ子の回答するのは無能以前に答えになってないのとちがう?
>最も簡潔に記述するとしたらどんな
という問いに、elseや入れ子の回答するのは無能以前に答えになってないのとちがう?
386デフォルトの名無しさん
2017/09/22(金) 22:15:07.62ID:250/7oh7 え?え?日本語理解できてる?
質問には「Elseを使わずに」なんてどこにも書いてないぞ
ざっくり意訳すれば「IfとElseの数を最小に」する方法を聞いてるんだろ
質問には「Elseを使わずに」なんてどこにも書いてないぞ
ざっくり意訳すれば「IfとElseの数を最小に」する方法を聞いてるんだろ
387デフォルトの名無しさん
2017/09/23(土) 06:12:18.34ID:6cN/4Ux4 372のは374が書いてるように、例えば
x=1
y=1
z=3
と入れただけで誤判定する。アルゴリズムの最低限を割ってるぞ。
372がベストアンサー(笑)だと質問者が思ったなら気の毒なので念のため。
x=1
y=1
z=3
と入れただけで誤判定する。アルゴリズムの最低限を割ってるぞ。
372がベストアンサー(笑)だと質問者が思ったなら気の毒なので念のため。
388デフォルトの名無しさん
2017/09/23(土) 07:50:16.98ID:nAanI8EG そもそも計算量も最少じゃないしな
普通に
最小値 = x
If y < 最小値 Then 最小値 = y
If z < 最小値 Then 最小値 = z
ってやる方がわかりやすい
普通に
最小値 = x
If y < 最小値 Then 最小値 = y
If z < 最小値 Then 最小値 = z
ってやる方がわかりやすい
389デフォルトの名無しさん
2017/09/23(土) 10:07:44.78ID:hX9NlXap うん、ベストアンサーはMin使った方だね。
俺だったら迷わずMin使用する。
同時にMin使わない方法も考える。
配列ループも考えた。
でも、別にIf文使っても良いんじゃない?
そんな目くじらを立てるようなことじゃない。
俺だったら迷わずMin使用する。
同時にMin使わない方法も考える。
配列ループも考えた。
でも、別にIf文使っても良いんじゃない?
そんな目くじらを立てるようなことじゃない。
390デフォルトの名無しさん
2017/09/23(土) 12:22:56.52ID:/uotOgAp >>386が分かってないバカ多すぎw
391デフォルトの名無しさん
2017/09/23(土) 14:36:58.57ID:OMtgmcpv だから372はif elseだとしても最小(計算量的に)の答えにもなってないし、そもそも答えとして間違ってるって話だろ
392デフォルトの名無しさん
2017/09/23(土) 17:06:13.24ID:HTwX+3ra それは勉強する奴と仕事にしてる奴のスタンスの違いだな。
仕事にしてる奴はIfを使わなきゃならないなんてことに遭遇しないから、はなっから抜けてる。
仕事にしてる奴はIfを使わなきゃならないなんてことに遭遇しないから、はなっから抜けてる。
393デフォルトの名無しさん
2017/09/23(土) 23:00:39.63ID:9AVefP05 必ずIfを使う縛りなら>>388がベストアンサー
ソートアルゴリズムの最初の1回目のループを展開してるだけなんだけど、基本中の基本のやり方
ソートアルゴリズムの最初の1回目のループを展開してるだけなんだけど、基本中の基本のやり方
394デフォルトの名無しさん
2017/09/23(土) 23:28:57.04ID:UvR7p8sn395デフォルトの名無しさん
2017/09/23(土) 23:49:29.12ID:9AVefP05 仕様書はちゃんと読んで、条件は無視しちゃいけないよね
396デフォルトの名無しさん
2017/09/24(日) 02:12:05.73ID:3B64fACL 勉強のため何が何でもIfだけで解決しなきゃいけなかったのか、
まだ初心者だからMinという便利な物があることを知らなかったのか
それによって変わってきちゃうからー
まだ初心者だからMinという便利な物があることを知らなかったのか
それによって変わってきちゃうからー
397デフォルトの名無しさん
2017/09/24(日) 08:43:50.06ID:LX+6AD0q398デフォルトの名無しさん
2017/09/24(日) 09:20:40.69ID:SDtHFGLj >>394
分かってねえなあ。
勉強を教える仕事じゃないならユーザーにとって一番使いやすいとか、速度が速いとか、ユーザーが満足するようなものかどうかが大事なのであって、どんなコードじゃなければならないとかの要望は普通無い。
そして、メンテナンス性とかコードの書き方に関してもMinの方が良いとなればそもそもの問い掛け自体仕事で発生することは無い。
そして実際には、何でMinじゃ駄目なのと問い掛けられない奴は仕事の出来ない奴ということになる。
(もちろん明確に理由が有るならIfで書く。)
指示通りにしか作れない奴じゃ単なるコーダって奴になるしかない。
仕事ではMinを使わないなら明確な理由が存在するし、打ち合わせなんかのやり取りで既に意思統一されてる筈だ。
つまり今回の問い掛けのような事態は存在しない。
分かってねえなあ。
勉強を教える仕事じゃないならユーザーにとって一番使いやすいとか、速度が速いとか、ユーザーが満足するようなものかどうかが大事なのであって、どんなコードじゃなければならないとかの要望は普通無い。
そして、メンテナンス性とかコードの書き方に関してもMinの方が良いとなればそもそもの問い掛け自体仕事で発生することは無い。
そして実際には、何でMinじゃ駄目なのと問い掛けられない奴は仕事の出来ない奴ということになる。
(もちろん明確に理由が有るならIfで書く。)
指示通りにしか作れない奴じゃ単なるコーダって奴になるしかない。
仕事ではMinを使わないなら明確な理由が存在するし、打ち合わせなんかのやり取りで既に意思統一されてる筈だ。
つまり今回の問い掛けのような事態は存在しない。
399デフォルトの名無しさん
2017/09/24(日) 10:07:44.74ID:lViLIhLn >>393
だな、簡素で分かりやすく奇麗なコードだ
だな、簡素で分かりやすく奇麗なコードだ
400デフォルトの名無しさん
2017/09/24(日) 15:00:43.73ID:3BjqQEbI■ このスレッドは過去ログ倉庫に格納されています
ニュース
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 [蚤の市★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 【外交】日中関係悪化、長期化の様相 2012年には自動車輸出80%減も ロイター★3 [1ゲットロボ★]
- NHK、受信料の未払い世帯に督促強化へ 民事手続きの新組織を設置 差し押さえなどの強制執行も ★2 [1ゲットロボ★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」★2 [冬月記者★]
- んなっても良いお🏡
- 【悲報】高市早苗を妄信している今の日本人見ると80年前も市民は進んで戦争協力してたんだって理解出来るよね🥺 [616817505]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 日本人、歴史も経済も分からず貧乏に耐えかねて第二次日中戦争を求めてしまう…ヤバイよ [819729701]
- パンダ 危機感なし [399583221]
- 【悲報】けんもめん、含蓄が読めない [389326466]
