VBAなんでも質問スレ Part2 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
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/ fast-uploader.com/file/7072704922415/ パス 0128 >>504 >>505 みなさん、無知ですみません ほんとに助かります ありがとうございます >>505 ひとまずダウンロード致しましたので明日内容を確認します お時間割いて作っていただいて、ただただ感謝です おやすみなさい 下から5行くらいにtext ってあるの、valueに直した方がいいかも。 textでも問題ないかもしれないけど。 おはようございます 昨日ダウンロードさせてもらったファイル開かないのですが、どうやったら開きますか? エクセルのバージョンは? 当方2013で開けましたよ。 >>509 2010です すいません、どうやって開きました? プログラマですがvbaの初心者です。 C,java,lisp,python 基本的な言語とその意味論はだいたい知ってます。 vbaで書籍を探すと、大抵業務問題の解決という文脈で本が書かれているようですが 純粋に言語的な機能を抽出した言語仕様、あるいはリファレンスに相当するものを求めています。 そのような書籍のうちもっとも簡潔に記述されているような本はないでしょうか? >>511 本職のPGならマイクロソフトのディベロッパーセンターの英語版リファレンスを直に読んだ方が良い あと、場合によってはVBAとほぼ同じシンタックスになってるVB.NET用のMicrosoft.Office.Interopクラス以下の各アプリケーションのオブジェクトのリファレンスの方が役に立つこともある VLOOKUP関数の応用で、2列のリストがあり、検索セルではどちらかを入力するともう片方が入力されるものをVBAで作りたいのですが、、、 >>514 左をキーにしてvlookup 、次に左をキーにしてvlookup すれば良いんじゃないか? 右と左に同じ内容が存在するとダメだけど。 グラフを作成するときにXValuesってすべての系列で統一しないといけないんですか? x1={0., 1., 2.}, y2={0., 1., 4.} x2={0., 0.5, 1., 1.5, 2.},y2={0., 0.25, 1., 2.25, 4.} みたいな2つの系列があったときにplot(x1,y1), plot(x2,y2)みたいに扱いたいのですがどうしたらいいでしょうか 特定のフォルダ内のすべてのブックにC列に複数存在する特定の文字列『a』のすべてに対して右隣のセルに文字列『aa』を入力して、さらに同じシート内でC列に複数存在する特定の文字列『b』のすべてに対して右隣のセルに文字列『bb』を入力するようにしたいのですがどのような感じになりますでしょうか? ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の 両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ vbacでmdbファイルをcombineしていると、「このアクションを実行するとプロジェクトがリセットされます。実行しますか?」というダイアローグが出てくるのですが、回避策をご存じの方いますか? VBA初心者です。 省略可能なキーワードOptionalに関して質問がございます。 ・質問内容 以下のコードにおいて、なぜ"ABC"が2回繰り返されるのでしょうか? Optionalで指定した1が初期値としてtmpに格納され、For〜Nextステートメントの処理が0〜1となり、回答は”ABC”のみだと考えました。 ・コード Sub Sample1() Call Sample2 End Sub Sub Sample2(Optional tmp As Long = 1) Dim i As Long For i = 0 To tmp Debug.Print "ABC" Next i End Sub 基礎的な質問で恐縮ですが、ご解説いただければ幸いです。 よろしくお願いします。 >>522 0も1回と数えるから、i が0の時に1回、1の時に1回、合計で2回です For i = 1 To tmp にすれば1回になるよ >>523 解説頂きましてありがとうございます。 0も1と数えるのはややこしいですね。。 しっかり復習します。 配列は0スタートとか知っておいたほうが良い(VBAの場合はOption Baseで切り替えられるけど) >>524 理屈で覚えればややこしくはないぞ。 配列の添字は距離のようなもので、「当該配列の1個目の要素のポインタを起点としたときに、そのポインタにどれだけ(何回)加算した場所に、その要素の格納されているメモリが存在するか」を示す数字。 1個目の要素から1個目の要素に移動するための加算回数=距離は0だから、1個目の要素にアクセスするときの添字は0になる。 >>514 if文でセルの指定範囲の時実行で1列目の時と2列目の時で分けたらどうですか? >>525 0スタートどころか-100スタートとかも可能 こればかりはプログラマーを混乱させるために導入されたとしか思えない謎仕様 >>531 配列添字の範囲指定なんてPascalの時代からあるのにバカって悲しいな w >>529 C#だとint[] intArray = new int[2]で要素は[0] と[1]になるんだが、 vbaだとdim Array(2) as Longが0,1,2の三つになるからたまにコンパイルエラーで悩む。Collectionは一から始まるが Dictionaryは0からというのもたまに嵌る。 >>534 > vbaだとdim Array(2) as Longが0,1,2の三つになるからたまにコンパイルエラーで悩む。 0,1,2になるか1,2になるかはOption Baseによる コンパイルエラーは意味わからんが >>533 お前が黙っとけよ w ExcelのCellsの添え字が1オリジンだからデフォルトで使うしかない >>535 cell番地が1から始まるからbaseも1じゃなきゃ書けないバカはレス禁止 Cellsはコレクションオブジェクトを返すプロパティ関数だから、インデクサが1オリジンなのは文法上当たり前 >>540 配列の話してんだよバカチョン黙ってろや >>539 誰にレスしてんだよ、ボケ w >>540 アホすぎ、そんなもん仕様によるだろ Excelが開発された当初はまだ0の発見前だったからだろ。 今作るなら0から始まるようになる。 こんばんは! おしえてください! VBAでフリーフォームを書いたり、既にあるフリーフォームの頂点編集をしようとしています。 書く方は上手くいって、Shapes.BuildFreeformに、AddNodesコマンドで10点頂点を追加して、 楕円を書きました。 続いて、頂点の編集を行うべく、書かれたshapeのnodesや、Verticesで頂点情報を取得したら、 なぜか30点あります。ベジェ曲線で描かれた頂点の座標はもう残っていないのでしょうか?? こんにちは。 VBA初心者です。 Excelで知恵袋のような社内用のQ&Aを作成中です。 質問フォームに入力すると質問が縦に書き込まれていくところまで作りました。 しかし回答を質問に対応させることができません。 回答は対象の質問の横に入力されていくように作りたいですが、どうしたらよろしいでしょうか。 教えて下さい。 分かりづらいかもしれませんが、下記のように作りたいです。 質問1 回答1 回答2 回答3… 質問2 回答2-1 回答2-2… 質問3 シートを別にする 質問ごとにIDを振って回答にその質問IDを保持させる htmlからidやnameに属さない、独自の名前を付けられた値を取得したいです。 <li id="result_1" result-rank="1" data-original="hoge"> <li id="result_2" result-rank="2" data-original="fuga"> ・・・ <li id="result_123" result-rank="123" data-original="hage"> data-original="hoge"の「hoge」を取得したいです。 常にidのresult_1を取得したいわけではなく、またidの値も検索結果によっては変動します。 data-originalは必ずliタグの中にあります。 htmlは変更できません。 ウィザード級の方々何卒お力をお貸しくださいませ。m(_ _)m ExcelVBAの質問です adodbStreamを使って、jisコード(ISO-2022-JP)で書かれたテキストファイルを読み込んで色々するマクロを作っています 対象のテキストは1行120バイトのレコードが何行も含まれるという体裁になっているファイルです このファイルを入力ファイルに指定したところ、なぜか3行目のみ最初の12バイト分が読み込まれません レコードの内容を変えて何度か試してみたのですが、決まって3行目のみ行頭の12バイトが抜け落ちてしまいます adodbを使う際に何か必要なことがあるのでしょうか? Webにあるスクリプト入れても動いたり動かなかったり 厳しいね、これは。 ファミコンゲームを再現したいんですが、単純な構造のゲームってありますか? シート1のA44:I44のセルの内容を、マクロでシート2の最後列に貼り付けていきたいです。 下記のマクロだと、シート1のA44のセルをシート2の最後列のAのセルにのみ、コピーするだけになってしまいます。 どう変更すればいいのか、よかったら教えて頂きたいです。 よろしくお願いします。 Sub テスト() Dim LastRow As Long With Worksheets("シート2") LastRow = Worksheets("シート2").Range("A"&Rows.Count).End(xlUp).Row + 1 Range("A"&LastRow).Value=Worksheets("シート1").Range("A44:I44").Value End With End Sub >>556 Resizeで貼り付ける範囲を広げてあげる 幅を9セルにしたいならResize(, 9)って付け足す 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 HCSP8 シートにボタンがいくつかあって、押したときの処理が結構複雑なんです とりあえずclickedをシートモジュールに書いて、そこから呼び出される関数も全部シートモジュールに書いたら分量がすごいことになりました やっぱりクリック検出だけにしぼって残りは全部標準モジュールにすべきなんですかね。そのシートでしか呼び出されないわけで分けるのも分かりにくいような気もして >>563 Excel2003までのツールバーにメニュー追加するコードを書くと2007以降ではリボンにメニューが追加されるけど違う話かな? Access2016でコンボボックスの規定値をnullから1へ変更したくて フォーム!コンボボックス.DefaultValue = """1"""とするフォーム上は1と表示されるんだが、プロパティーシート上は全く変化なくて、フォームをとじてから開くと規定値が変わっていなくてNullのまま。 VBAからは既定値の変更が出来ないのかな? フォームを閉じるときに変更を保存しなけりゃ普通に考えてもとに戻るわけだが ここはjscriptはアカンけ?outlookをjsで弄りたいんだが Wordで読みとり専用推奨で保存されてるファイルをVBAで書き込み可で開いて編集して上書き保存したいんですが、やる方法はありますか? マジだったカオスと思ったが 開くと読み取り専用か聞いてくるのか まあ、OS側でなくワード側で制御してそうだから、回避は厳しそうな気がする カオス言いたい年頃なのでどうか大目に見てやって下さい カオスは天地が分かれる前の状態 あるいは光と闇が分かれる前の状態 >>576 VBAを使わずにファイルを開いてダイアログのウィンドウをつかまえて「いいえ」ボタンにメッセージを送るという力技ぐらいしか方法はないんでしょうか? Excelでは開くときにIgnoreReadOnlyRecommenedというのを指定すれば良さそうなんですが document.openメソッドにも引数readonly があるみたいだけど >>581 ReadOnlyにFalseを渡しても読みとり専用で開かれるのは確認済みです >>574 ありません。 Wordは手動でやるしかない。 Excelとは違いますから。 >>580 VBAでもその力業で出来るけどね。 でも読み取り専用推奨で保存する目的はそのメッセージを出すことにあると思うからそれをスキップするコードを書くべきかという問題もある。 >>582 すくなくともうちの環境では、ReadOnly:=Falseで書き込み可能で開いてるけど? その状態からReadOnlyRecommended = Falseにして保存したら、読み取り専用推奨は外れてるが まあうちの環境がかなり古いから最近では出来ない可能性もあるが それホントに推奨なだけなのか? >>586 じゃあ2010から出来なくなったんだな うちの2007ではできてるから ただそこの文書 Note The following example applies to Word 2003 and 2002: とか書いてあるな Last Updated: Apr 19, 2018 らしいけど、適用対象バージョンがよくわからんな ACCESSでオートルックアップクエリを使用したフォームでマスタにないものを入力した際、 フィールドとキーが一致しているレコードをテーブルで探すことができません。 と出ますが、マスタにないデータを入力しようとしたとき、上のメッセージを出すことなく、マスタ登録用フォームを呼び出すにはどうすればよいでしょうか?教えていただけると助かります。 スパークラインをVBAで挿入したいんだけど範囲指定のところがうまくいきません。 わかる方いたら教えてください。よろしくお願いします。 call cells(10 , h ).SparklineGroups.Add(xlSparkLine, "n5: n100") "n5: n100" のところなのですが、 range(worksheets(h).cells(14,5) , worksheets(h).cells(14 , G )) のようにして ワークシートごとの数値群をスパークラインにしていきたいのですが、、、 何か良い方法を教えてください。 よろしくお願いします。 質問 Outlook2010なのですが 受信トレイの検索(Ctrl+E)で「請求書」を検索するのと同じ動作を VBAにしたいのですがどのように記述すればいいのでしょうか ボタンに登録して使うつもりです。 OutlookVBAを使うのは初めてでしてお手引きをお願いいたします VBAで質問です 【前提】 ・デスクトップにフォルダA ・フォルダAの中に9月1日分のExcelファイル"0901"とマクロ作動用の.xlsmファイル 【したいこと】 ・フォルダAの中に9月2日分のフォルダ"0902"を作成 ・"0901"を開き、B2セルの2018/9/1を2018/9/2に書き換え ・フォルダ"0902"内にファイル名を"0902"にして保存 日毎のレポートのひな形を作ろうとしています あまり知らないながら書いてるのですがエラー出まくりで泣きそうです >>590 Application.Searchメソッド、もしくは Application.Session.GetDefaultFolder(olFolderInbox).GetTable(DASLクエリの引数) を使えば良いのでは >>591 悪いこと言わないから、手でやるか詳しい人に頼みなさい 複数のブックが同時に開かれている状態でのVBA処理には いろいろ面倒なところがあり、経験が必要 5ちゃんでサクっと説明できるものではない しかもフォルダ処理も伴っているので、エラー処理を含め きっちり作ろうとするとけっこうな規模のアプリになってしまうと思う >>591 thisworkbook.path\フォルダA\0901を開いてあとはブック名から指定して必要事項を書き換え。 ブック名を指定してsaveAsで thisworkbook.path\フォルダA\0902で保存。 蛇足だが、必要無くともブックもシートも常に指定した方が良い。 >>591 とりあえず作ったコードを晒せば色々添削してもらえるかと >>593 回答できないなら黙ってなよ おそらくやりたいことはこんな感じだろう。 0901ファイルを開いた状態で、9月2日当日にレポートを作成する前提。 0901ファイルを修正するという話だったからその通りにしたけど、本当ならここはテンプレートファイルから書き起こすようにするべきだと思う。 テスト実行してないので、エラーが出たらごめんなさい。 Sub CreateDailyReport Dim Report As Workbook Set Report = Application.Workbooks("0901") 'テンプレートから新規ファイルを作成するなら以下のように変える 'Set Report = Application.Workbooks.Open(テンプレートのパス) Report.Worksheets("Sheet1").Range("B2").Value = Format(Date, "yyyy/mm/dd") Dim PathString As String PathString = Thisworkbook.Path & "¥" & Format(Date, "mmdd") If Dir(PathString, vbDirectory) = "" Then MkDir PathString Report.SaveAs PathString & "¥" & Format(Date, "mmdd") & ".xlsx" Report.Close End Sub >>592 Application.AdvancedSearchして Searchオブジェクトを検索フォルダーにSaveするっていうことですかね 単純にVBAでCrtl+Eのクイックサーチ(?)する方法があればと思ったのですが 無理っぽいですね ありがとうございました 初歩的な質問でごめんなさい うまくできません If IsNumeric(myN) Then Range("A1").Value=Range("A1").Value + myN End If myNが1の時と2の時があるとしてセルA1の値を3にしたいのですが やってみると12っていう風に数字が並んでいってしまいます どうしたらいいでしょうか >>599 もしmyNがString型、あるいはObject型に文字列データが入っている場合は数値型に変換する必要がある Range("A1").Value = Val(Range("A1").Value) + Val(myN) でいいんじゃないかな >>600 String型になっていました 参考にしてもっと勉強します お付き合いくださりありがとうございました 超初心者です。 Googleの検索窓に「VBA」と入力する サンプルコード (https://vba-code.net/ie/set-value-to-textbox/ ) を実行してみましたが、 objIE.document.getElementById("gbqfq").Value = "VBA"のところで 「実行時エラー 424 オブジェクトが必要です。」となって動きません。 「標準モジュールに以下のコードを追加して」の意味が分からないので、 標準モジュールをどう書いたらよいのか、どこに追加したらよいのかわからず サンプルコードのみを実行しました。 どなたか親切な方、対応方法を教えてください。 難しいことはわからないので具体的にコードを書いてもらえると嬉しいです。 よろしくお願いいたします。 >>602 >>objIE.document.getElementById("gbqfq").Value = "VBA" objIE.Document.getElementById("lst-ib").Value = "VBA" >>603 ありがとうございます! できました!!! なんか分からないけど動いて嬉しいです! 頑張ります。 >>604 おう頑張れ!わからんかったらまたいつでも聞いてくれな! ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる