Excel VBA 質問スレ P ..
[2ch|▼Menu]
768:デフォルトの名無しさん
10/03/21 11:30:42
>>766
投票ページにアクセスするには会員登録が必要だろうから、
そのページのソースをどっかにアップしてくんない?

769:デフォルトの名無しさん
10/03/21 12:06:08
>>750
お前の存在が間違いじゃないの?
そもそも荒れた原因はお前が最初にFormatのやつうざいと言ったからだろ?
Valueから暴れてるよな?
もういいから消えろ。
素人の好奇心云々や文系高卒やらさんざん暴言吐いてたのはお前だと思うが
素人はお前だ。
玄人と思ってるかも知らんけど、それは勘違いというものだ。
わかった?トウシロのぼくちゃんw

770:デフォルトの名無しさん
10/03/21 12:07:29
テンプレに、「まずOption Explicitをつけろ」も追加が必要だな

771:デフォルトの名無しさん
10/03/21 12:09:54
おーすまん>>750
上はもちろんトウシローの>>767あてね

772:デフォルトの名無しさん
10/03/21 12:11:17
>>750
> 別にFormatの第二引数の記述が間違ってるわけではないでしょう。

これってへりくつって言うんですよ。
それに既に>>678で説明済みのものを、自分の言葉で長々とかかずにはいられない
ほど自己顕示欲をもてあましてるんでしょうか。

773:デフォルトの名無しさん
10/03/21 12:13:46
>>769
そんなに基本的な論理学もわかってなかったことを指摘されたのか痛かったのかな。
知らないことを教えてもらったという意味で、感謝されてもいいくらいだ。

774:デフォルトの名無しさん
10/03/21 12:13:54
「間違いを訂正するときには、
名前欄に自分のレス番号を記入すること」も追加かな。

775:デフォルトの名無しさん
10/03/21 12:20:31
はっきり言って、>>2にもあるように、Excelのバージョンくらい書くのがこのスレの礼儀だし、
まずヘルプを確認するのが常識なんだけど、それを指摘してる奴が痛すぎて、相対的に
バージョンも書かない、ヘルプも読まない奴の方が正義っぽくなってる。

776:デフォルトの名無しさん
10/03/21 12:22:47
そいつの相手してる奴がこれまた痛いw

777:デフォルトの名無しさん
10/03/21 12:23:19
>>767
"M32032ral"って何かって質問だから>>762を読めば?
何で出し惜しみしたの?

778:デフォルトの名無しさん
10/03/21 12:28:44
いろんな厨がいるが、ヘルプ厨ってのもいるんだなw

779:744
10/03/21 12:39:04
>>766
これ以上は自分の手に負えそうに無い感じだけど
最後に1点だけ

If objITEM.Name = "kumiban1" And objITEM.Value = strRADIO(nNO) Then
 Debug.Print "ここに北"
 objITEM.Checked = True
End If

とかやってみ
イミディエイトウインドに何も表示されないなら
対象タグを見つけられてない
フレーム分割されているとかそんな感じじゃないのかな

780:デフォルトの名無しさん
10/03/21 12:42:42
>>777
俺は頭悪いからそんなこと分らないんだよ
とにかくヘルプだヘルプ!
VB.NETのヘルプじゃなくてVBAのヘルプな

781:デフォルトの名無しさん
10/03/21 12:49:17
わからなかったら素直にそういえばいいのに。
自分の無知を認めることも大事だ。

782:デフォルトの名無しさん
10/03/21 13:20:02
printf("%d", some_pointer)で変なマイナスの値が表示されることに
一生懸命説明する奴大杉。

783:デフォルトの名無しさん
10/03/21 13:32:05
自作自演もほどほどにしようぜ

784:デフォルトの名無しさん
10/03/21 13:33:34
必死だなw
しかしまぁ流れを読んで見ると>>678に対する>>679が一番アホだな。
こういう馬鹿ヘルプ厨がいるからおかしくなるんだよ。

785:679
10/03/21 13:38:32
今顔真っ赤です。

こうですか?わかりません(><)

786:デフォルトの名無しさん
10/03/21 13:47:38
>>785
お前は暴れてるやつの一人だと思ったが、ただ無知だっただけの善意の第三者か?

787:デフォルトの名無しさん
10/03/21 14:02:22
レスが集中してるから暴れてるのは一人か二人だと思う。
暴言吐いてる人が構ってチャンじゃないかな。


788:デフォルトの名無しさん
10/03/21 14:46:51
OAuthをExcelVBAで書きたいんだけれど
サンプルどこかに転がってるでしょうか?

789:デフォルトの名無しさん
10/03/21 15:52:47
withevents を使用するために参照設定があれば教えてください

また、使用方法の勉強に適したURLあればお願いします。

790:766
10/03/21 16:34:22
>>768
ソースアップしました。
URLリンク(firestorage.jp)

791:デフォルトの名無しさん
10/03/21 17:15:55
WithEventに参照設定要ったっけ?入れなくてもThisWorkBookモジュールに入れたら動いたけど
あと、その競艇投票ソースとExcelとの関係は?

792:デフォルトの名無しさん
10/03/21 17:17:38
あ、それから説明サイトは、、、、

mougの即行テクニックで witheventsで検索すればちょろちょろと解説がある


793:デフォルトの名無しさん
10/03/22 01:55:13
VBAで練習用にマインスイーパ作った

他なんか勉強になって作って楽しいもんないかね

794:デフォルトの名無しさん
10/03/22 02:17:08
>>793
ゲーム作って勉強したいならこんなんあるみたいよ。
URLリンク(www.amazon.co.jp)

795:デフォルトの名無しさん
10/03/22 03:01:05
>>794
なんだかオモチャ臭がぷんぷんするけど
どうなんだろうね

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

797:デフォルトの名無しさん
10/03/22 08:28:03
VBA、というよりはWin32APIを使いまくってるけどね
URLリンク(gyouzausa.hp.infoseek.co.jp)

798:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/22 09:38:03
すまん、俺のせいですげー荒れたみたいだな。

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

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

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

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

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

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

802:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/22 13:51:29
>ヘルプ見ろって言ったんだよね。
皆ヘルプ見て分からなかったから質問スレに書き込むんじゃないかな。
キーワードがヒットしなかったか、重要な情報を見落としたかはともかく。

804:798
10/03/22 14:10:23
>>802

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

ありがとうです

805:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/22 17:32:39
ついでに言えばコピー先は左上だけ指定すればいい
Destination:=Worksheets("data").Cells(k, 1).Resize(1, 8)

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

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

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

809:デフォルトの名無しさん
10/03/22 18:36:00
PCを窓から捨てる

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

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

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

813:デフォルトの名無しさん
10/03/22 20:42:20
中国人だよ。

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


815:デフォルトの名無しさん
10/03/22 23:55:19
>>808
手段と目的が逆転した時は、まず目的を探せ

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

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

818:デフォルトの名無しさん
10/03/23 07:08:47
じゃあ次は中級の本を読めばいいんじゃね?

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

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

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

821:デフォルトの名無しさん
10/03/23 14:15:50
>>820
ありがとうございます!

822:デフォルトの名無しさん
10/03/24 03:18:22
教えてください。

office 2000、Win XP SP3です。

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

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

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


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

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

825:デフォルトの名無しさん
10/03/24 08:07:38
2003 XPです

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

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

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

826:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/24 14:34:19
>>826
回答ありがとうございます。
一度に記載出来ないのは仕様だったのね・・・

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


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

830:デフォルトの名無しさん
10/03/24 21:55:11
とりあえず、>>1-7見ような

831:デフォルトの名無しさん
10/03/25 00:48:52
>>828
無理

832:デフォルトの名無しさん
10/03/25 00:50:37
特定の文字列が含まれているシートの特定のセルを参照して、それをフォームに一覧表示したいです。
すべてのシートから参照する方法は分かったのですが、特定の文字列を含むシートのみを抽出する方法が
分かりません。
なにとぞお願いします

833:デフォルトの名無しさん
10/03/25 00:51:13
>>829
使える
出てこないのはたぶんFunctionを書く場所が間違ってる

834:デフォルトの名無しさん
10/03/25 00:52:09
>>832
Find

835:832
10/03/25 01:31:19
すいません、具体性が足りませんでした。申し訳ないです。

例えば、○○○、□□□、○○○1、○○○2というシートがある時、
○○○が含まれる3つのシートのC1の値を参照し、一覧にしてフォームに表示させたいのです。
私としては、foreachを使っていけば良いんじゃないかと思って考えてはいるのですが、具体的な形に
ならないものではまって動けないという感じです。

知恵をお貸し下さい。お願いします。

836:デフォルトの名無しさん
10/03/25 01:51:53
URLリンク(officetanaka.net)

837:832
10/03/25 02:06:29
ヒントありがとうございます。また頑張ってみます。

838:デフォルトの名無しさん
10/03/25 16:41:54
ボタンをクリックして表示させるフォームに引数って渡せないでしょうか。
クリックしたボタンによって違う処理をしたいんですが、引数を渡せないと大量の同じようなフォームをできてしまうのでそれを避けたいのですが…

839:デフォルトの名無しさん
10/03/25 18:07:16
継承が使えればformを継承し新しいクラスを作る
もしくはshow関数をオーバーロード
もしくはグローバル関数を使う
もしくはテキトーなtextboxに値でもいれておき、それを参照するようにする
下に行くほど簡単。どれでも好きなものを

840:デフォルトの名無しさん
10/03/25 18:16:40
excel2007で質問させてください。

各シートから条件に一致したデータを抽出して印刷しようとしています。
印刷ひな形となるシートのコピーを作成して
そのコピーしたシートにデータを書き込んで印刷→シート削除という流れなのですが
worksheets(hoge).copyを使用すると
Application.ScreenUpdating = falseにしていても
画面遷移が起こってしまいます。
画面遷移なしで処理したいのですが何か他に方法はありますか?

ひな形シートの全セル選択で貼り付けると印刷設定が移動できませんし
印刷設定のプロパティも全部コピーしていくしか無いのでしょうか


841:デフォルトの名無しさん
10/03/26 02:13:27
ちょっとVBAに慣れると調子に乗って
ExcelベースのGUIで便利なアプリにしてやろうなんて
夢想しがちだが、肝心な機能の呼び出しが非公開だったり
することが多くて失敗しやすいね

842:デフォルトの名無しさん
10/03/26 05:24:58
>>840
印刷設定のコピー方法はプリンターの機種ごとに違ってて、そう簡単にはコピーできなかったと思う

843:デフォルトの名無しさん
10/03/26 09:41:04
  ←→
┌───┐┌───┐
└───┘└───┘

上のような感じで複数のセルの中から値の入力されてるセルの上端に双方向矢印を入力させるというマクロを作りたいのですが
可能でしょうか?双方向矢印を引くだけならマクロの記録を使ってできるのですが値のあるセルだけにという条件をくわえるにはどうしたらいいでしょうか?
どなたか教えてください。




844:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/26 13:58:50
>>844
うまく説明できてなくてすみません。。

例えばA1からD9までの範囲があったとしてそこの中のセルに値があるものだけを検索して
図形の双方向矢印をセルの上端の線に合わせて入れたいんですが可能でしょうか?


846:デフォルトの名無しさん
10/03/26 17:26:23
>>839
グローバル関数でいけました。ありがとうございました

847:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/26 22:49:43
>>847
ありがとうございます!!まさにそのとおりです。
ちなみに矢印を上端の中心に持ってきて左右の長さを縮めたいのですが・・・
 

    ←→     .←──→
┌───┐┌───┐
└───┘└───┘
 今のままでは右のようになるので左の図のようにしたいと考えてまして
そういった方法の指定も可能ですか?

849:847
10/03/26 23:18:03
>>848
可能

 Rangeオブジェクトのプロパティ
 Left Top Width Height

後はヘルプを見るなりして がんばってみてね

850:デフォルトの名無しさん
10/03/26 23:27:15
色んなことをやりたい人がいるんだな

851:デフォルトの名無しさん
10/03/26 23:35:17

このスレはVBAとPerl14

のスレなのになぜPerlネタが一切でてこないんだ?



852:デフォルトの名無しさん
10/03/26 23:49:26
次の質問どうぞ

853:847
10/03/27 19:33:47
>>843
もう見てないかもしれないけれど

>>847のコードは
型宣言を 勘違いしてたみたい

変数 X1 X2 Y1 Y2 は Single型もしくはLong型で宣言するべきだった
Integer型だと少数点以下がカットされるので線が少しずれてる

さっきヘルプを見ていて気づいた
ゴメンね

854:デフォルトの名無しさん
10/03/28 03:21:33
シェイプ関連の位置指定は、ポイント単位だからなあ。
て、Longも駄目だろw

855:847
10/03/28 10:55:03
>>854
がーーーん
またまたすみません
たっ たしかにそうでした
回答者に向いてないかも俺

さすがに落ち込みました

856:デフォルトの名無しさん
10/03/28 11:02:37
ドンマイ。よくあることだw

857:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/28 21:07:57
ExcelVBA開発がメインの人っているの?
趣味とか、基本的にはVBとか、やけにできる事務員とか、そんな感じですか?

859:デフォルトの名無しさん
10/03/28 21:21:12
自称やけにできる事務員ですw

860:デフォルトの名無しさん
10/03/28 21:35:38
英単語が並べられている列があり、隣の列に意味を書き出す、というのを作っています。
使用する英語の辞書のURLはURLリンク(www.alc.co.jp)です。
「apple」という単語を検索するとURLは
URLリンク(eow.alc.co.jp)
となります。
ここで、英単語を検索した結果表示されたページから該当箇所を抜き出すというやり方が分かりません。
上記の「apple」の場合、「・apple」から「分節ap・ple」まで抜き出したいのです。
やり方がわかる方教えてください。



861:デフォルトの名無しさん
10/03/28 22:09:20
>>860
* データの転載は禁じられています。
class="midashi"

862:デフォルトの名無しさん
10/03/28 22:25:22
>>857
5MBのCSVなんて動作遅くならないか?
速さをなんとかしたいならsqlでやる。

863:デフォルトの名無しさん
10/03/29 00:28:17
>>860
VBA上から Webページのデータを取得するのは
そのWebページのソースを見て理解できないと無理
(そしてそれをどうVBA上からコントロールするかも)

ソースをみたけど
<DIV class=mr_10 id=resultList ondblclick=seow()>
ってのがあるから
id=resultList ←これを利用すれば

「・apple」から「《コ》アップル・メニュー」
までは抜き出せるね
あとはタグを辿っていくしかないかな

864:デフォルトの名無しさん
10/03/29 13:57:45
>>858
やけにできる事務員だった
データの正規化やコピーする際に絶対にミスしないのが魅力的
速度自体は大して変わらん

865:デフォルトの名無しさん
10/03/30 10:59:35
1ブック内に複数あるシート全てを選択した状態で、且つ一シート目にのみ開始ページ番号が振られている状態で
印刷したときに割り振られるページ数を、印刷せずにマクロで調べたいのですがどのような方法があるでしょうか?
このシートのこのセルは何ページ目に該当する、ということを調べて行きたいです。
プレビューで見ていけば可能ですがページ数が膨大なのでマクロで処理したいと思っています。


866:865
10/03/30 11:02:54
すいません、バージョンは2000です。

867:デフォルトの名無しさん
10/03/30 13:47:33
>>865
『このシートのこのセル』はそもそもどうやって特定するの?
1シートで印刷するのは複数頁あるってこと?

868:865
10/03/30 16:43:41
>『このシートのこのセル』はそもそもどうやって特定するの?
全シート走査で特定単語を置換していくので、
その置換処理が行われたときのセルを元に出力時のページをその都度
調べてワークファイルに書き出したいと思っています。
(置換処理、書き出す処理はできてます)

>1シートで印刷するのは複数頁あるってこと?
そうです。
1シートに1頁の場合と複数頁ある場合とがあります。


869:デフォルトの名無しさん
10/03/30 20:18:53
特定単語を置換する前に
検索→セル番地取得→セル番地から頁数割り出し
という作業をかませばいいんでないの?

870:865
10/03/30 21:13:16
>>869
「セル番地から頁数割り出し」の部分がわからないんです…

871:デフォルトの名無しさん
10/03/30 21:41:45
一度、印刷プレビューで1頁で何セル印字するのか調べてみたら

872:デフォルトの名無しさん
10/03/30 22:13:52
使った事ないけど

VPageBreak オブジェクト
HPageBreak オブジェクト
なんかどう?

873:872
10/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:デフォルトの名無しさん
10/04/02 07:24:45
Application.OnTimeでサブルーチンを時間起動したいのですが、
セルをダブルクリックして値入力状態であったり、モーダルで
バルーンを表示させていたりすると、Application.OnTimeに制御
が移らず、サブルーチンを起動できません。
これを回避する知恵をお持ちの方、ご教示願います。

875:デフォルトの名無しさん
10/04/02 16:52:52
回避するって
>セルをダブルクリックして値入力状態であったり、モーダルで
>バルーンを表示させていたりすると、
はどうするねん
別にexcel.applicationを起こしてそっちでontimeさせればええやん

876:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/04/05 02:29:05
>>876
ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額").Function = xlSum

878:876
10/04/05 08:04:46
>>877
レスありがとうございます。

そのコードを追加したら、

実行時エラー'1004':
PivotFieldクラスのFunctionプロパティを設定できません。

になりました。どうすれば良いのでしょうか?

追加した位置は、下記のステートメントの次です。

ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額").Orientation = _
xlDataField

よろしくお願いします。

879:デフォルトの名無しさん
10/04/05 12:28:18
>>878
フィールド名の「金額」の部分を自分の作ったテーブルに合わせて書き換える
テーブルの一番左上の灰色のセルの値を見る

880:878=876
10/04/05 17:07:07
>>879
レスありがとうございます。

常に合計になるようにできましたm(_ _)m

881:デフォルトの名無しさん
10/04/05 18:37:42
サブメニューを複数個作りましたが、
どのサブメニューを選択しても、同じSubプロシージャを呼び出したいです。

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

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


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4343日前に更新/253 KB
担当:undef