1 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 12:34:58 ] 過去スレ 01 pc11.2ch.net/test/read.cgi/tech/1054356121/ 02 pc11.2ch.net/test/read.cgi/tech/1168308855/ 03 pc11.2ch.net/test/read.cgi/tech/1180192018/ 04 pc11.2ch.net/test/read.cgi/tech/1189814602/ 05 pc11.2ch.net/test/read.cgi/tech/1197448064/ 06 pc11.2ch.net/test/read.cgi/tech/1205231499/ 07 pc11.2ch.net/test/read.cgi/tech/1212587819/ 08 pc11.2ch.net/test/read.cgi/tech/1219673793/ 09 pc11.2ch.net/test/read.cgi/tech/1228372971/ 10 pc12.2ch.net/test/read.cgi/tech/1235332603/ 11 pc12.2ch.net/test/read.cgi/tech/1241885130/ 12 pc12.2ch.net/test/read.cgi/tech/1247566074/ 13 pc12.2ch.net/test/read.cgi/tech/1254281104/
832 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:50:37 ] 特定の文字列が含まれているシートの特定のセルを参照して、それをフォームに一覧表示したいです。 すべてのシートから参照する方法は分かったのですが、特定の文字列を含むシートのみを抽出する方法が 分かりません。 なにとぞお願いします
833 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:51:13 ] >>829 使える 出てこないのはたぶんFunctionを書く場所が間違ってる
834 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:52:09 ] >>832 Find
835 名前:832 mailto:sage [2010/03/25(木) 01:31:19 ] すいません、具体性が足りませんでした。申し訳ないです。 例えば、○○○、□□□、○○○1、○○○2というシートがある時、 ○○○が含まれる3つのシートのC1の値を参照し、一覧にしてフォームに表示させたいのです。 私としては、foreachを使っていけば良いんじゃないかと思って考えてはいるのですが、具体的な形に ならないものではまって動けないという感じです。 知恵をお貸し下さい。お願いします。
836 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 01:51:53 ] ttp://officetanaka.net/excel/vba/function/InStr.htm
837 名前:832 mailto:sage [2010/03/25(木) 02:06:29 ] ヒントありがとうございます。また頑張ってみます。
838 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 16:41:54 ] ボタンをクリックして表示させるフォームに引数って渡せないでしょうか。 クリックしたボタンによって違う処理をしたいんですが、引数を渡せないと大量の同じようなフォームをできてしまうのでそれを避けたいのですが…
839 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 18:07:16 ] 継承が使えればformを継承し新しいクラスを作る もしくはshow関数をオーバーロード もしくはグローバル関数を使う もしくはテキトーなtextboxに値でもいれておき、それを参照するようにする 下に行くほど簡単。どれでも好きなものを
840 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 18:16:40 ] excel2007で質問させてください。 各シートから条件に一致したデータを抽出して印刷しようとしています。 印刷ひな形となるシートのコピーを作成して そのコピーしたシートにデータを書き込んで印刷→シート削除という流れなのですが worksheets(hoge).copyを使用すると Application.ScreenUpdating = falseにしていても 画面遷移が起こってしまいます。 画面遷移なしで処理したいのですが何か他に方法はありますか? ひな形シートの全セル選択で貼り付けると印刷設定が移動できませんし 印刷設定のプロパティも全部コピーしていくしか無いのでしょうか
841 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 02:13:27 ] ちょっとVBAに慣れると調子に乗って ExcelベースのGUIで便利なアプリにしてやろうなんて 夢想しがちだが、肝心な機能の呼び出しが非公開だったり することが多くて失敗しやすいね
842 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 05:24:58 ] >>840 印刷設定のコピー方法はプリンターの機種ごとに違ってて、そう簡単にはコピーできなかったと思う
843 名前:デフォルトの名無しさん [2010/03/26(金) 09:41:04 ] ←→ ┌─────┐┌─────┐ └─────┘└─────┘ 上のような感じで複数のセルの中から値の入力されてるセルの上端に双方向矢印を入力させるというマクロを作りたいのですが 可能でしょうか?双方向矢印を引くだけならマクロの記録を使ってできるのですが値のあるセルだけにという条件をくわえるにはどうしたらいいでしょうか? どなたか教えてください。
844 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:18:35 ] >>843 こんな漢字? Sub a() Set d = UsedRange For Each s In d If s.Value <> "" Then s.Offset(-1, 0).Value = "←→" End If Next End Sub
845 名前:デフォルトの名無しさん [2010/03/26(金) 13:58:50 ] >>844 うまく説明できてなくてすみません。。 例えばA1からD9までの範囲があったとしてそこの中のセルに値があるものだけを検索して 図形の双方向矢印をセルの上端の線に合わせて入れたいんですが可能でしょうか?
846 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 17:26:23 ] >>839 グローバル関数でいけました。ありがとうございました
847 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 21:14:29 ] >>843 やりたいのはこんな感じ カナ?カナ? Dim Sh As Worksheet Dim r As Range Dim X1 As Integer Dim X2 As Integer Dim Y1 As Integer Dim Y2 As Integer Set Sh = ActiveSheet For Each r In Sh.Range("A1:D9") If r.Value <> "" Then With r X1 = .Left Y1 = .Top X2 = X1 + .Width Y2 = Y1 End With With Sh.Shapes.AddLine(X1, Y1, X2, Y2).Line .BeginArrowheadStyle = msoArrowheadTriangle .EndArrowheadStyle = msoArrowheadTriangle End With End If Next
848 名前:デフォルトの名無しさん [2010/03/26(金) 22:49:43 ] >>847 ありがとうございます!!まさにそのとおりです。 ちなみに矢印を上端の中心に持ってきて左右の長さを縮めたいのですが・・・ ←→ .←────→ ┌─────┐┌─────┐ └─────┘└─────┘ 今のままでは右のようになるので左の図のようにしたいと考えてまして そういった方法の指定も可能ですか?
849 名前:847 mailto:sage [2010/03/26(金) 23:18:03 ] >>848 可能 Rangeオブジェクトのプロパティ Left Top Width Height 後はヘルプを見るなりして がんばってみてね
850 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 23:27:15 ] 色んなことをやりたい人がいるんだな
851 名前:デフォルトの名無しさん [2010/03/26(金) 23:35:17 ] このスレはVBAとPerl14 のスレなのになぜPerlネタが一切でてこないんだ?
852 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 23:49:26 ] 次の質問どうぞ
853 名前:847 mailto:sage [2010/03/27(土) 19:33:47 ] >>843 もう見てないかもしれないけれど >>847 のコードは 型宣言を 勘違いしてたみたい 変数 X1 X2 Y1 Y2 は Single型もしくはLong型で宣言するべきだった Integer型だと少数点以下がカットされるので線が少しずれてる さっきヘルプを見ていて気づいた ゴメンね
854 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 03:21:33 ] シェイプ関連の位置指定は、ポイント単位だからなあ。 て、Longも駄目だろw
855 名前:847 mailto:sage [2010/03/28(日) 10:55:03 ] >>854 がーーーん またまたすみません たっ たしかにそうでした 回答者に向いてないかも俺 さすがに落ち込みました
856 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:02:37 ] ドンマイ。よくあることだw
857 名前:デフォルトの名無しさん [2010/03/28(日) 21:05:10 ] 質問です。 CSVファイルをエクセルブック内のワークシートに貼り付けするとき、 Workbooks.Open Filename:=csvfile Workbooks(csvfile).Worksheets.Copy after:=Workbooks(mybook).Worksheets("ファイル一覧") Workbooks(csvfile).Close こんな感じで簡単に貼り付けています。 csvファイルが5MBとかサイズが大きくても上のようなやり方で問題ないでしょうか。 csvファイルの先頭から1レコードずつ取得して貼り付けるという方法もネットから探し出せたんですが どっちがいいのか判断しにくいです。
858 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 21:07:57 ] ExcelVBA開発がメインの人っているの? 趣味とか、基本的にはVBとか、やけにできる事務員とか、そんな感じですか?
859 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 21:21:12 ] 自称やけにできる事務員ですw
860 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 21:35:38 ] 英単語が並べられている列があり、隣の列に意味を書き出す、というのを作っています。 使用する英語の辞書のURLはwww.alc.co.jp/ です。 「apple」という単語を検索するとURLは eow.alc.co.jp/apple/UTF-8/?ref=sa となります。 ここで、英単語を検索した結果表示されたページから該当箇所を抜き出すというやり方が分かりません。 上記の「apple」の場合、「・apple」から「分節ap・ple」まで抜き出したいのです。 やり方がわかる方教えてください。
861 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 22:09:20 ] >>860 * データの転載は禁じられています。 class="midashi"
862 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 22:25:22 ] >>857 5MBのCSVなんて動作遅くならないか? 速さをなんとかしたいならsqlでやる。
863 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:28:17 ] >>860 VBA上から Webページのデータを取得するのは そのWebページのソースを見て理解できないと無理 (そしてそれをどうVBA上からコントロールするかも) ソースをみたけど <DIV class=mr_10 id=resultList ondblclick=seow()> ってのがあるから id=resultList ←これを利用すれば 「・apple」から「《コ》アップル・メニュー」 までは抜き出せるね あとはタグを辿っていくしかないかな
864 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 13:57:45 ] >>858 やけにできる事務員だった データの正規化やコピーする際に絶対にミスしないのが魅力的 速度自体は大して変わらん
865 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 10:59:35 ] 1ブック内に複数あるシート全てを選択した状態で、且つ一シート目にのみ開始ページ番号が振られている状態で 印刷したときに割り振られるページ数を、印刷せずにマクロで調べたいのですがどのような方法があるでしょうか? このシートのこのセルは何ページ目に該当する、ということを調べて行きたいです。 プレビューで見ていけば可能ですがページ数が膨大なのでマクロで処理したいと思っています。
866 名前:865 mailto:sage [2010/03/30(火) 11:02:54 ] すいません、バージョンは2000です。
867 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:47:33 ] >>865 『このシートのこのセル』はそもそもどうやって特定するの? 1シートで印刷するのは複数頁あるってこと?
868 名前:865 mailto:sage [2010/03/30(火) 16:43:41 ] >『このシートのこのセル』はそもそもどうやって特定するの? 全シート走査で特定単語を置換していくので、 その置換処理が行われたときのセルを元に出力時のページをその都度 調べてワークファイルに書き出したいと思っています。 (置換処理、書き出す処理はできてます) >1シートで印刷するのは複数頁あるってこと? そうです。 1シートに1頁の場合と複数頁ある場合とがあります。
869 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 20:18:53 ] 特定単語を置換する前に 検索→セル番地取得→セル番地から頁数割り出し という作業をかませばいいんでないの?
870 名前:865 mailto:sage [2010/03/30(火) 21:13:16 ] >>869 「セル番地から頁数割り出し」の部分がわからないんです…
871 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 21:41:45 ] 一度、印刷プレビューで1頁で何セル印字するのか調べてみたら
872 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:13:52 ] 使った事ないけど VPageBreak オブジェクト HPageBreak オブジェクト なんかどう?
873 名前:872 mailto:sage [2010/03/30(火) 23:30:03 ] ちょっとテストしてみたけど 頁数割り出しの参考にならないかな Sub test() Debug.Print "改ページ数:"; ActiveSheet.HPageBreaks.Count For Each a In ActiveSheet.HPageBreaks Debug.Print "改ページ 行位置:"; a.Location.Row Next End Sub
874 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 07:24:45 ] Application.OnTimeでサブルーチンを時間起動したいのですが、 セルをダブルクリックして値入力状態であったり、モーダルで バルーンを表示させていたりすると、Application.OnTimeに制御 が移らず、サブルーチンを起動できません。 これを回避する知恵をお持ちの方、ご教示願います。
875 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 16:52:52 ] 回避するって >セルをダブルクリックして値入力状態であったり、モーダルで >バルーンを表示させていたりすると、 はどうするねん 別にexcel.applicationを起こしてそっちでontimeさせればええやん
876 名前:デフォルトの名無しさん [2010/04/04(日) 19:32:11 ] XPsp2,EXCEL2003です。 ピボットテーブルをVBAで作成しているのですが、 データによって(件数?)、集計の仕方が、 「個数/金額」になったり、「合計/金額」になったりします。 常に「合計/金額」になるようにするには、どうすれば良いのでしょうか? コードは次の通りです。 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "ZZZWORK!R5C" & c_yymm_p & ":R" & lastrow & "C" & c_io_p).CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル4", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveSheet.PivotTables("ピボットテーブル4").ColumnGrand = False ActiveSheet.PivotTables("ピボットテーブル4").AddFields RowFields:=Array("分類", "科目") _ , ColumnFields:="年月" ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額").Orientation = _ xlDataField Application.CommandBars("PivotTable").Visible = False ActiveWorkbook.ShowPivotTableFieldList = False よろしくお願いします。
877 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 02:29:05 ] >>876 ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額").Function = xlSum
878 名前:876 [2010/04/05(月) 08:04:46 ] >>877 レスありがとうございます。 そのコードを追加したら、 実行時エラー'1004': PivotFieldクラスのFunctionプロパティを設定できません。 になりました。どうすれば良いのでしょうか? 追加した位置は、下記のステートメントの次です。 ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額").Orientation = _ xlDataField よろしくお願いします。
879 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 12:28:18 ] >>878 フィールド名の「金額」の部分を自分の作ったテーブルに合わせて書き換える テーブルの一番左上の灰色のセルの値を見る
880 名前:878=876 [2010/04/05(月) 17:07:07 ] >>879 レスありがとうございます。 常に合計になるようにできましたm(_ _)m
881 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 18:37:42 ] サブメニューを複数個作りましたが、 どのサブメニューを選択しても、同じSubプロシージャを呼び出したいです。 Subプロシージャ側で、どのサブメニューが選択されたかを知るにはどうすればいいでしょうか? パラメーターとか使えますか? 参考になるサイトがありましたら紹介していただけませんか。