[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 03/27 15:24 / Filesize : 253 KB / Number-of Response : 882
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part14



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/

795 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 03:01:05 ]
>>794
なんだかオモチャ臭がぷんぷんするけど
どうなんだろうね

796 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 03:08:47 ]
>>795
どうなんだろねー?
動画見たら、こんなんVBAで出来るの!?って興味持ったけど
値段高いからねぇ。
図書館で検索したけどなかったわw

797 名前:デフォルトの名無しさん [2010/03/22(月) 08:28:03 ]
VBA、というよりはWin32APIを使いまくってるけどね
ttp://gyouzausa.hp.infoseek.co.jp/mode1/GAME/index.html

798 名前:デフォルトの名無しさん [2010/03/22(月) 08:45:10 ]
初歩的な質問ですけど、教えてください

'対象行をdataシートへコピーする

Sub ColumCopy(ByVal cnt As Integer)
Dim k As Integer
Worksheets("data").Activate
k = 0
Do
k = k + 1
Loop Until Cells(k, 1) = ""

Worksheets("Page1").Range(Cells(cnt, 1), Cells(cnt, 8)).Copy _
Destination:=Worksheets("data").Range(Cells(k, 1), Cells(k, 8))

Worksheets("Page1").Activate
End Sub

というのを作ったんです(cntには51という値が、kには1という値が入っています)が、

実行時エラー
アプリケーション定義またはオブジェクト定義のエラーです
でWorksheets("Page1").〜の部分で終了してしまってます

どの様に直せばよろしいのでせうか?

799 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:38:03 ]
すまん、俺のせいですげー荒れたみたいだな。

> 結局Formatじゃ駄目でWorksheetFunction.Textってことか。
> 俺の間違いだったわ。

ヘルプ見れば(もちろん679をレスした時点で俺はヘルプを見てる)、自分のやりたいことを
Formatで実現するには"General Number"を指定しないといけないということに気づくんじゃ
ないかと思ってヘルプ見ろって言ったんだよね。

次からは、ヘルプ見ろってつい言いたくなっても自重するよ。

800 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:42:47 ]
もう一個言い訳しとくと、>>672
> 知ってるのか知らないのかわからないが
とつけたのは、1にならない理由がわからないのか、わざと定義されてない引数を指定したら
変な文字列になったけど、その変な文字列に変換されるロジックをしりたいのかわからなかった
から。
多分前者だろうと判断して、こう書いた。
> Formatの第二引数の指定方法が間違ってる。

801 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:50:36 ]
あと、>>675でちょっとカチンときてしまった。ヘルプも見ない奴に言われたくないって。

愚痴ばかりですまん。しばらくこのスレの書き込み自重する。

802 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 11:52:04 ]
>>798 CellsにもSheetを指定しなきゃダメ

Worksheets("Page1").Range(Worksheets("Page1").Cells(cnt, 1), Worksheets("Page1").Cells(cnt, 8)).Copy _
Destination:=Worksheets("data").Range(Worksheets("data").Cells(k, 1), Worksheets("data").Cells(k, 8))

With Worksheets("Page1")
.Range(.Cells(cnt, 1), .Cells(cnt, 8)).Copy _
Destination:=Worksheets("data").Range(Worksheets("data").Cells(k, 1), Worksheets("data").Cells(k, 8))
End With

Dim Ws1 As Worksheet, Ws2 As Worksheet
Set Ws1 = Worksheets("Page1")
Set Ws2 = Worksheets("date")
Ws1.Range(Ws1.Cells(cnt, 1), Ws1.Cells(cnt, 8)).Copy _
Destination:=Ws2.Range(Ws2.Cells(k, 1), Ws2.Cells(k, 8))

好きな書き方でどうぞ

803 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:51:29 ]
>ヘルプ見ろって言ったんだよね。
皆ヘルプ見て分からなかったから質問スレに書き込むんじゃないかな。
キーワードがヒットしなかったか、重要な情報を見落としたかはともかく。



804 名前:798 mailto:sage [2010/03/22(月) 14:10:23 ]
>>802

Cellにも指定しないといけなかったんですか。
気が付きませんでした。

ありがとうです

805 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 17:23:03 ]
Cell表記でいつも思うんだが
Worksheets("data").Range(Worksheets("data").Cells(k, 1), Worksheets("data").Cells(k, 8))
より
Worksheets("data").Cells(k, 1).Resize(1, 8)
のほうがコード読み書きしやすくない?

806 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 17:32:39 ]
ついでに言えばコピー先は左上だけ指定すればいい
Destination:=Worksheets("data").Cells(k, 1).Resize(1, 8)

Destination:=Worksheets("data").Cells(k, 1)

807 名前:デフォルトの名無しさん [2010/03/22(月) 17:47:27 ]
workSheets(\\\"data\\\").select
したほうが短くならない?

808 名前:デフォルトの名無しさん [2010/03/22(月) 18:22:09 ]
VBAを学ぼうと本を買ってきたのですが、いざ読んでみたものの、
この次何をしたらいいかよくわかりません。
何をしたらいい?

809 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 18:36:00 ]
PCを窓から捨てる

810 名前:デフォルトの名無しさん [2010/03/22(月) 18:42:57 ]
>>809 (´・д・`)窓からPC捨てたら、VBAが学べるの?

811 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 20:21:37 ]
>>805-806
同感
しかしクソIME(Microsoft Office IME 2007)は上の「どうかん」が変換できないよ。
他にも辞書登録しないと駄目なのがいっぱいあるが中国人に作らせたんじゃないだろうな。

812 名前:デフォルトの名無しさん [2010/03/22(月) 20:42:03 ]
2chとかに書き込む時はgoogleのが便利なのに(´・ω・`)
最近はちょっと軽くなったし

813 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 20:42:20 ]
中国人だよ。



814 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 21:32:01 ]
テスト同感
>>812
Googleの日本語入力があるなんて知らなかったよ。
今ダウンロードして使ってる。
いいこと聞いたよ。
>>813
アチャー、中国神社無理もないな。
うーん、Googleも完璧じゃないな。


815 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:55:19 ]
>>808
手段と目的が逆転した時は、まず目的を探せ

816 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:36:44 ]
「入門書はクリアしたので次のステップは何がよいでしょうか」
という問いかけかもしれん

817 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 02:13:17 ]
>>816
じゃあやっぱり目的を探せであってるんじゃないか?

818 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 07:08:47 ]
じゃあ次は中級の本を読めばいいんじゃね?

819 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 13:54:18 ]
Cells(3,5*i-2)からCells(k,5*i+1)まで
というように行位置と列位置で指定した範囲をコピペしたい場合
何かいい方法ありますか?

行位置と列位置からセル番地を求めて
Range("○○:××")って形で指定くらいしか思いつかないんですが

820 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 13:57:09 ]
>>819
CellsはRangeの範囲指定にそのまま使える。
Range(Cells(3, 5 * i - 2), Cells(k, 5 * i + 1)) と書けばいい

821 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 14:15:50 ]
>>820
ありがとうございます!

822 名前:デフォルトの名無しさん [2010/03/24(水) 03:18:22 ]
教えてください。

office 2000、Win XP SP3です。

このようなことはできるでしょうか?
・マウスでセルをクリックすると、そのセルに、色が付くとか、あるいは●の文字が出る。
・もう一度そのセルを押すと、色が無くなる(白になる)とか、あるいは文字が消える。
セルを、まるでチェックボックスに見立てたような動作です。

通常のチェックボックスをシート上に置けばよいのでしょうが、
行単位で、それぞれにチェックを付けたいのです。
そうすれば、行の挿入や削除したとき、チェックボックスも一緒に増減するからです。

このようなことがVBAでできるでしょうか?
宜しくお願いします。


823 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 04:05:05 ]
>>822
無理。
Worksheet_SelectionChange、Worksheet_BeforeRightClick、Worksheet_BeforeDoubleClickなどで
代用する手はあるけど希望通りの動作にならなかったり副作用が出たりする。



824 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 04:13:30 ]
セルのクリックってWin32APIでできそうなんだけどなあ。
需要もあると思うんだけど、検索しても見つけられないんだよな。

825 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 08:07:38 ]
2003 XPです

Sub デイデータ制御()
Worksheets("水産").Cells(5, 2).Select
End Sub

これを同じブック・違うシート上でやると実行時エラー1004が出ます。

あと、activate とselect って何が違うんですか?

826 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 09:37:56 ]
>>825
activeは範囲選択したときのtabの動作
selectは左クリックで操作したときの動作
selectの方が早くて不具合も少なかったと思う

後マクロはシート1に
Sub Macro1()
Call デイデータ制御
End Sub

標準モジュールに
Sub デイデータ制御()
Worksheets("水産").Select
Range("a1").Select
End Sub
と記述する。別シートを洗濯できないのはスコープの問題。
とりあえず簡単に、別シートのマクロは記述できないと覚えて置けば良い

それでもWorksheets("水産").Cells(5, 2).Selectと一度に記述ができないのは何でだったかな
忘れた。

827 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 14:34:19 ]
>>826
回答ありがとうございます。
一度に記載出来ないのは仕様だったのね・・・

828 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 16:56:07 ]
自動整形をやめる方法ってありますか?
*はスペース
hoge*=*1
hogehoge*=*1
でなくて
hoge*****=*1
hogehoge*=*1
って揃えたいんですが


829 名前:デフォルトの名無しさん [2010/03/24(水) 18:17:14 ]
FUNCTIONで関数を作っったら、ユーザー関数として使えるのでしょうか?
本では使えるようなことが書いてあるのですが、
関数の挿入のWINDOWでユーザー関数の項目が出てこないので選べません。
エクセルは2003で、超超・・(略)・・超初心者です。

830 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 21:55:11 ]
とりあえず、>>1-7見ような

831 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:48:52 ]
>>828
無理

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プロシージャ側で、どのサブメニューが選択されたかを知るにはどうすればいいでしょうか?
パラメーターとか使えますか?

参考になるサイトがありましたら紹介していただけませんか。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<253KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef