[表示 : 全て 最新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/

445 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 20:16:35 ]
"09*.xls"

446 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 20:53:18 ]
まぁ、スピードが要求されるならC++でDLL書いてVBAから呼べって話になるんですがね

447 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 22:02:08 ]
そういう問題じゃねーのまだ分ってねーの
計算量のオーダが2乗ってことだよ

448 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 22:04:49 ]
ほら
1+2+3+...+n=n(n+1)/2=n**2+1/2*n

449 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 22:28:51 ]
流れを無視してすみません
VBA初心者ですが質問させてください

Userformでの話なのですが
ボタンが押された際に
TextBoxにセルの値を代入し表示
2秒間隔をあけ、その後フォームを閉じる

という処理を行いたいのですがTextBoxに表示される前にフォームが閉じられてしまいます。
フォームが閉じられる前にTextBoxにテキストを表示させるにはどのような方法をとればいいのでしょうか?

サンプルコードは以下のとおりです。

Private sub CommandButton1_Click()

TextBox1.text = sheets("sheet1").range("A1").value

call delay(2) '2秒ディレイするという命令

Unload Me

endsub

分かりづらいコードで申し訳ないですがご指導のほどお願いいたします。

450 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 22:40:23 ]
>>445
ありがとうございます!!

451 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 22:43:48 ]
どうしてもその自作関数つかうなら
delayのほうに
閉じる動作書けばいんじゃね

452 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 23:09:19 ]
>>447
.NET Framework使えよって話だ

453 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 00:17:06 ]
>>449 ontime



454 名前:デフォルトの名無しさん [2010/02/28(日) 00:40:48 ]
VBAで指定されたURLに日本語をくっつけてWebを開く事は出来ますが
そうではなくて
開いたWebページのあるテキストボックスに選択されたセルにある文字列を入力して
ボタンを押下する方法とかはあるのでしょうか?

もしあればご教授お願いします

455 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 01:10:19 ]
>>454
Sendkeys

456 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 11:21:20 ]
>>449
DoEvents を使ってみるといいかも

TextBox1.text = sheets("sheet1").range("A1").value
DoEvents
call delay(2)
Unload Me

457 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 01:46:21 ]
テキストファイルA.txtの内容をstrAとし、
テキストファイルB.txtの内容をstrBとし、2つを合体させて
クリップボードにコピーしようとしています。

strA も strB も、それぞれ読み取れてはいるのですが、
strA & strB とすると前者の方しかコピーされません。
逆にしても同じです。

&でつなぐことはできないのでしょうか?

458 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 02:42:09 ]
>>457
よくわかりませんが、先に

strAB = strA & strB

したり、そこで文字列結合関数を使ってみては?

459 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 19:14:57 ]
nul文字混入

460 名前:デフォルトの名無しさん mailto:sage [2010/03/02(火) 22:00:35 ]
Worksheets("225構成銘柄(業種別分類)").Range(Cells(2, 1), Cells(2, 2)) = Worksheets("水産").Cells(3, 3)

これでアプリケーション定義またはオブジェクト定義のエラーです。が出るのは何でだ?
もしかしてシートまたいでのコピーっていちいちactiveにせないかんの?
簡略表記できないの?

461 名前:デフォルトの名無しさん mailto:sage [2010/03/02(火) 22:50:10 ]
>>460
1.
Worksheets("225構成銘柄(業種別分類)").Activate
Range(Cells(2, 1), Cells(2, 2)).value = Worksheets("水産").Cells(3, 3).value

2.
With Worksheets("225構成銘柄(業種別分類)")
.Range(.Cells(2, 1), .Cells(2, 2)).value = Worksheets("水産").Cells(3, 3).value
End With

3.
Worksheets("225構成銘柄(業種別分類)").Cells(2, 1).Resize(1, 2).value = Worksheets("水産").Cells(3, 3).value

お好きなのをどうぞ

462 名前:デフォルトの名無しさん mailto:sage [2010/03/02(火) 23:22:41 ]
なんか納得いかないけどありがとう御座います。
とくに2なんかwithで囲っただけでなんで上手く行くんだ?

463 名前:デフォルトの名無しさん mailto:sage [2010/03/02(火) 23:52:33 ]
>>462
RangeやCellsはシートを指定しないとアクティブシートを対象とする。
そのため460の書き方では、CellsのシートとRangeのシートが一致していない。
461の.Cellsはドッドが付いているため.Rangeと同シートを対象としているので動く。

と正しくないかもしれないけど勝手解釈な説明をしてみた。



464 名前:デフォルトの名無しさん [2010/03/03(水) 08:47:09 ]
>>457
(strA & strB)
としてはどうか

465 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 16:46:26 ]
>>463
ふんわりと勉強になった。
知らん事だらけで困惑する。

466 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 20:11:36 ]
簡単に言うと、
Cells(2, 1), Cells(2, 2)
ってのが、どこのシートのセルか指定されてないってことね。

467 名前:デフォルトの名無しさん [2010/03/03(水) 21:25:06 ]
現在VBAでエラーが出た場合

On Error GoTo ErrorHandler
ErrorHandler:
MsgBox "エラーが発生しましたので終了します"

のように強制的に終了させていますが
これだとどこでエラーが起こったのかわかりません。
しかしこれをはずすとVBAの画面が出てきてしまうのでそれは何としても避けたいのですが

いわゆる実際の開発現場での作業などで作成される場合、
一般的にデバッグってどうやってされているのでしょうか?

たとえば通過ログを各地にはりつけてこのログが通って、このログが通っていないので
その間で落ちたと言うやり方が思いつくのですが、
あるいはこの部分で落ちたとかがわかるコードなどあるのでしょうか?


468 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 21:32:39 ]
>>467
Debug.Assert(条件文)

469 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 21:40:30 ]
Err.Description じゃなかったっけ?
それみてエラー箇所が特定出来ないなら関数が大きすぎるんじゃないか?

470 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:22:40 ]
>>467
とりあえずErrオブジェクトでぐぐれ
エラーの発生した場所を正確に知るにはErl関数を使うという手もあるが
使い方がかなり面倒なのでおすすめはしない

471 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:28:40 ]
ちがう
Err.LineNumber

472 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 01:06:17 ]
>>467
VBEのメニューバーにそのものずばり「デバッグ」てのがあるでしょ
いちいちソースを書き換えなくても、どこまで実行したら一時停止とかできるんだよ

473 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 16:44:12 ]
>>471
ErrオブジェクトにLineNumberなんてプロパティある?



474 名前:デフォルトの名無しさん [2010/03/04(木) 20:12:54 ]
Excelにプルダウンを入れていて、いくつか選択肢を入れているのですが
Excelを最初開いた時には空白で
別のシートを選択して、またこのシートに戻ってきた時に表示されます
これの原因ってわかりますでしょうか?
初期化がうまくいっていない気がしますが
どうしても理由が分かりません

ちなみにコードとしては
VBAプロジェクトの同じシートの中に下記の記述を入れています
Private Sub Worksheet_Activate()
With Me.Director_Combo
.Clear
.AddItem ""
.AddItem "あああ"
.AddItem "いいい"
.AddItem "ううう"
.ListIndex = 0
End With
End Sub


475 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 20:22:51 ]
>>474
ThisWorkbookのWorkbook_Openイベントに記述する
シートの指定を忘れずに


476 名前:デフォルトの名無しさん [2010/03/04(木) 21:48:31 ]
ある文字列中に.が何個あるか出力したいんですけど、どうすればいいですか?
例えば"1.25.30.2"ならば3を出力したいです。

477 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 21:59:28 ]
>>476
単純に思いついたコードなんで間違ってたらすまん

Dim wkArr() As String
wkArr = Split("1.25.30..", ".")
MsgBox UBound(wkArr)

478 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 22:11:36 ]
あんまりスマートじゃないな
s = "12.34.56.."
Debug.Print Len(s) - Len(Replace(s, ".", ""))

479 名前:デフォルトの名無しさん [2010/03/04(木) 22:30:41 ]
>>478
なるほど。LenとReplaceを組み合わせるんですね。
どうもありがとうございます。

480 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:01:38 ]
Sheets(intS).Activate
ActiveSheet.Range("C3:C100").AutoFilter Field:=1, Criteria1:=ANAME
Range("C100").Select
Selection.End(xlUp).Select
If Selection.Value <> "あああ" Then
Range(Selection.Offset(0, -2), "E4").Copy

Sheets(intB).Activate
Range("C100").Select
Selection.End(xlUp).Select
If Selection.Value <> "" Then
ActiveCell.Offset(1, 0).Range("A1").Select
End If
ActiveSheet.Paste  ←
End If
Selection.AutoFilter

矢印の部分でWorkSheet クラスの Paste メソッドが失敗しましたのエラーになってしまいます。

* Microsoft Visual Basic for Applications (VBA) マクロで、Excel 2003 ブックの 1 行全体のコピーと貼り付けを実行している。
* Microsoft VBA マクロで、Excel 2003 ブックの 2,516 以上の行の範囲のコピーと貼り付けを実行している。

のどちらにも当てはまっていないと思うのですが、なぜでしょう。

481 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:03:56 ]
ごめんなさい書き忘れました。
Windows7 Office2007 です

482 名前:デフォルトの名無しさん [2010/03/07(日) 08:20:54 ]
やってはいけないの見本

483 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 09:46:48 ]
>>480
コピー元かコピー先のどちらかでセルが結合されてない?



484 名前:480 mailto:sage [2010/03/07(日) 17:31:48 ]
セルの結合はないです。
PasteSpecialでも同様のエラーが出ます

485 名前:デフォルトの名無しさん [2010/03/07(日) 19:38:09 ]
VBAを利用して

Webページにある複数のテキストボックスに
A1セルに書かれている内容をWeb上のAというテキストボックスに入力
A2セルに書かれている内容をWeb上のBというテキストボックスに入力
するような物を作りたいのですが
やり方とかあるのでしょうか?

あれば教えてください

486 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 20:22:08 ]
>>485
IEオブジェクト.Document.フォーム名.テキストボックス名.value = 設定したい内容

フォーム名やコントロール名が無い場合
DocumentオブジェクトのFormsコレクションやItemコレクションを使う

IEオブジェクト.Document.Forms(n).Item(n).Value = 設定したい内容

487 名前:デフォルトの名無しさん [2010/03/07(日) 21:56:28 ]
A〜E列を下記。A,Dを検索キーとしてBをEに移します。
test()では1が拾えず10を拾ってしまいます。(XP, Excel2000)
どう修正すればよいでしょう。
A B C D E
-- -- -- -- --
1 あ __ 1
2 い __ 2
3 う __ 3
9 け __ 9
10 こ __ 10
11 さ __ 11
14 せ __ 14
15 そ __ 1

Sub test()
Set myRngA = Range("A1:A15")
Set myRngD = Range("D1").CurrentRegion
For i = 1 To myRngD.Rows.Count
myKey = myRngD.Cells(i)
Set myCel = myRngA.Find(what:=myKey)
If Not myCel Is Nothing Then
myRngD.Cells(i, 1).Offset(0, 1) = myCel.Offset(0, 1)
End If
Next i
End Sub

488 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:49:54 ]
>>487
Set myCel = myRngA.Find(what:=mykey, LookAt:=xlWhole)

489 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:54:31 ]
大量の日付+株価の四本値データ(1まとまりで5列使用)があるのですが、開始日も終了日も全てバラバラ(最長の奴で8192日データ。この8192日の中に全ての期間入ってる)
綺麗に日付の行をそろえて昇順でソートしたいのですが、VBAで上手いことやるアイデアを下さい。

490 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 23:29:40 ]
>>489
ソートするって、四本値データが日付順にならんでないというのが不思議だが
同じ日付を同じ行に持ってきたいということかな?
もしそうなら
ビンソートでデータをビンに詰め終わったところで
空きビンに対応する日付データーを入れてやればいいんでないかな


491 名前:487 [2010/03/07(日) 23:38:31 ]
>488

ありがとう。たすかりました。

LookAt:=xlWholeがないと、一行目が無視されるわけですね?

492 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 01:24:39 ]
>>491
全然違う。
LookAt=xlWholeは完全一致。
これを書かないと初期状態ではLookAt:=xlPartの部分一致になる。
開始セルのAfter:=***を書かないと範囲の先頭の次から検索するので
部分一致で10がヒットすることになる。


493 名前:489 mailto:sage [2010/03/08(月) 01:37:33 ]
ビンソートという用語初めて知った。情報有難う。

ソート自体は簡単なんだけど、データのスタート位置設定するの難しいわ。
日付が素直に+1日づつなら多少は簡単なんだけど、休場日とかのせいで日付が飛び飛びなのがうっとうしい・・・

後学の為にVBAで処理したいけど、もう手作業でやるか?



494 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 01:57:54 ]
SQL使えよ

495 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 12:36:05 ]
SQLもビンソートも不明だったので。

@→一番長い日数入ってる列探して基準にする
A→各銘柄からデータ取得開始日とって、基準を参考に貼り付け開始行を取得
B→貼り付け開始行を利用して切り取り貼り付け
C→Aから繰り替えす

みたいな普通の力技でなんとかしました。アドバイス貰ったのに全く生かせないでごめんなさい。

496 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 13:37:07 ]
オートシェイプの検索アドインを業務の補助として作成中です。
一般的な実装はできましたが、よくばって検索値の前回値を使用できるようにしたい。
このような場合、前回値をどこに保存するのが一般的なのでしょうか?
excelマクロ・xlaならではの保存方法等ないでしょうか?

ないのであれば、別途保存用のシートに保存するか、またテキストファイル等に残します。
(あんまりエレガントじゃないきがして嫌です。)
ご存じの方おりましたらご享受ください。

497 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 13:58:58 ]
>>495
ビンソートよりもバケット(バケツ)ソートという名前のほうが一般的かもしれない

内容は
日付のラベルが付いたビンに対応するデーターを放り込んで
詰め終わったら、端から順に取り出す

今回はデータがもともと順並びしてるので、
結果的にあなたがエクセル上でやったことと同じ作業ですね







498 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 14:06:04 ]
>>496
Excelはシートに保存するのがエレガントだと思います。

499 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 15:39:54 ]
なんらかの関数で引数となるシート名が存在するかチェックしてるんだが
シート数分Forでまわして同名シート見つけた時点でexitしてるんだけど
シート枚数が多くて使用者のPCスペックが低いためか時間が結構かかってきているんだが
なんかアドバイスない?
さしあたって事前にシート名チェックするのやめて
ダメならOn Error GoToで飛ばすようにしといたんだけど
もっといい方法あったら教えてください

500 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 15:57:25 ]
シート名チェックってそんなに時間かかる処理だっけ?
何枚くらチェックしてるの?


501 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 16:13:38 ]
シートの存在チェックは、何かやってみてon error gotoが一番速い

502 名前:499 mailto:sage [2010/03/08(月) 16:22:21 ]
>>500
50枚くらいなんだけどモバイル用ノートで
CPUがセレロンなんだ・・・

>>501
やはりそうですよね
まず実行してみてだめだったらon error gotoで
具体的エラー内容を探すように変えていきます。

ありがとうございました。

503 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 18:02:04 ]
>>502
ん、通じたのかな?例えばIsWorkSheetExist()みたいな関数を作って、その中で
on error goto NotExist
a = worksheet("Sheet1").range("a1").value // (*)
return true

NotExist:
return false

をやれってことで、「何かやって」は(*)の行の内容のこと。
いろんな関数にon error gotoをばらまけってことじゃないよ。



504 名前:デフォルトの名無しさん [2010/03/08(月) 18:36:00 ]
ADOつかってSQL使えば?
別にExcelのシートに対してもSQLで読み書きできるよ

505 名前:デフォルトの名無しさん [2010/03/08(月) 20:14:29 ]
こんばんは。どなたか詳しい方教えてくださいませんか。

エクセルのマクロでCSVファイルを開く→編集→保存(CSV形式)までを自動化しているのですが、

保存時の文字コードをS-JISではなくEUC-JPにして保存したいのです。

色々調べたんですが使えそうなのがなかったので・・。

506 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 21:02:08 ]
保存した後で変換ツールに投げるとこまで自動化したらばどうよ

507 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 21:19:20 ]
>>505
nkf.dll

508 名前:デフォルトの名無しさん [2010/03/08(月) 21:48:31 ]
ありがとうございます。

nkf.dll

を使ってみようと思います。

509 名前:デフォルトの名無しさん [2010/03/08(月) 22:44:29 ]
詳しい方に質問です。

ExcelVBAでシートに保護をかけて、変更して欲しくないセル(項目名など)
をロックしています。
ただ、シートに保護をかけてしまうと、テキストボックスや線オブジェクト、
図形オブジェクトがdisable?になってしまって使用できなくなります。

何か解決する方法はありますでしょうか?

510 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 00:33:02 ]
保護の対象を細かく指定すりゃいいだろ

511 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 02:03:00 ]
DrawingObjects:=False

512 名前:デフォルトの名無しさん [2010/03/09(火) 14:40:04 ]
XPで2003を使用しています。
VBA初心者で調べつつ作成しましたが、思った動作になりません。
どうかご教示下さい。

仕入先マスタのシートで仕入先CDを重複しないよう、入力後に
チェックをするようにしました。
(コードは次レスに貼ります)

【問題点】
If Not IsNumeric(Target.Value) Then Exit Sub
を入れると、ターゲットが複数行の場合は動作してくれません。

上記のコードを削除すると、複数行を挿入したり、連続しない複数行を
削除した時に重複したと認識されてしまいます。
(emptyかNullが重複?)

※つづきます

513 名前:512 [2010/03/09(火) 14:42:31 ]
※つづきです

Dim maxRow As Long
Private Sub Worksheet_Change(ByVal Target As Range)
With Workbooks("仕入管理帳.xls").Worksheets("仕入先マスタ")

maxRow = .Cells(Rows.Count, 1).End(xlUp).Row
' If Not IsNumeric(Target.Value) Then Exit Sub
If Target.Column <> 1 Then Exit Sub
Set rngTarget = .Range("A2:A" & Target.Row - 1)
Set rngFind = rngTarget.Find(Target.Value, LookAt:=xlWhole)
If Not rngFind Is Nothing Then
If Target.Row <> rngFind.Row Then
Application.EnableEvents = False
MsgBox ("仕入先CDが重複しています"), vbExclamation
Target.ClearContents
Application.EnableEvents = True
End If



514 名前:512 [2010/03/09(火) 14:44:01 ]
※最後です

Else
Set rngTarget = .Range("A" & Target.Row + 1 & ":A" & maxRow)
Set rngFind = rngTarget.Find(Target.Value, LookAt:=xlWhole)
If Not rngFind Is Nothing Then
If Target.Row <> rngFind.Row Then
Application.EnableEvents = False
MsgBox ("仕入先CDが重複しています"), vbExclamation
Target.ClearContents
Application.EnableEvents = True
End If
End If
End If
End With
End Sub

よろしくお願いします。

515 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:20:45 ]
★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

516 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:58:01 ]
>>512
Targetに複数のセルが含まれるときは、こうすれば一つずつチェックできる
もちろんセルが1つでもエラーにはならない。Forの中を1回通るだけ
For Each c In Target
  If Not IsNumeric(c.Value) Then Exit Sub
Next c

517 名前:512 [2010/03/09(火) 16:25:12 ]
>>516
出来ました!ありがとうございます!
1週間もあれこれ悩んでいたので、とても助かりました!!

518 名前:デフォルトの名無しさん [2010/03/09(火) 20:57:12 ]
Excelに
Craete AAA_TBL


一行改行されて
Craete BBB_TBL


一つのシートにこういうデータがあった場合、
crateAAA_TBL.sqlファイルを作成して
その中には
Craete AAA_TBL


crateBBB_TBL.sqlファイルを作成して
その中には
Craete BBB_TBL


と分割したいのですが
分かりますでしょうか?


519 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 21:01:46 ]
わけわからん、なにが起きてるんだ


r=3
c=10
debug.print r , c

if r=3 and c=2 then
........
elseif r=3 and c=4 then
........
elseif r=3 and c=3 then
........
elseif r=3 and c=2 then
.......
elseif r=3 and c=10 then
debug.print r , c
debug.print "ここまで来た"
end if

実行結果

3 10



520 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:00:52 ]
Sub test()
r = 3
c = 10
If r = 3 And c = 10 Then
Debug.Print r, c
Debug.Print "こないわけないだろ"
End If
End Sub

521 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:15:58 ]
でも来ねえだもん、くまった


522 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:18:37 ]
省略せずに丸ごとソースを貼るかエクスポートしてどこかにアップしろ

523 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:20:24 ]
if r=3 and c=2 then

まったく同じ条件のIfが2つある。どうせほかにもタイプミスとかしてるに決まってる



524 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:44:29 ]
デバッガでブレークポイント仕掛けてステップ実行しろよ

525 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:45:45 ]
スマソ、自己解決した
頭のほうの if に不等号が入ってた
思い込みがあると目が見てても脳が見てないようだ

526 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:17:38 ]
無能には良くあること

527 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:37:20 ]
本当に>>523が正解だったとは

528 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 06:46:48 ]
不等号が入ってたのは正解なので
タイプミスではありません
見のがしです
すいません、正確に言っておきたいもので(まげられないおんな風)


529 名前:デフォルトの名無しさん [2010/03/10(水) 07:34:21 ]
ソフトのこと全く知りません。
そんな僕でもがんばればVBAは習得できるでしょうか?


530 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 10:13:26 ]
はじめから知ってるやつはいねえからそこは心配ない
あとはセンスしだい

531 名前:デフォルトの名無しさん [2010/03/10(水) 11:19:08 ]
>>530 ありがとうございます。
超入門の本を読んでいるのですが、読み終わったらもう少し専門書を購入し読みながら、
他の人の書いたプログラムを解読しつつ勉強しようと思うのですが、
このやり方でいいのでしょうか?

532 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 11:49:53 ]
人が言葉を覚えるとき最初はオウム返しから始まるでしょ
プログラム言語もそれと似たようなもんですよ

書籍のサンプル等をガシガシ打ち込んでけば、身についていきます
コピペではあんまり身につきません、コピペが早くなるだけです
手打ちでがんばってください

人の書いたプログラムの解析は自分で作るよりも大変ですから、
そこから入るのは無理があるように思います




533 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 18:49:45 ]
>>531
そういうやり方&他人のコード解読法で一回挫折したので、その後検定取りの為の勉強したな。(VBAエキスパートスタンダード)
アレは基本的に誰でも受かるように出来てるし、体系だって勉強出来るシステムになってるので基本は身に付くよ。



534 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 05:27:46 ]
Excel VBAで、コピーしたセル範囲をペーストする時に列幅を変えずに貼り付ける事は
可能でしょうか。
コピーする内容にセル結合や罫線が含まれています。
どうかご教授下さい。

535 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 07:59:09 ]
列をコピー&ペースト

536 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 12:00:19 ]
>>534
まず普通にコピペしたあと、同じ場所にもう一度形式を選択して貼り付け→列幅

537 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:03:47 ]
B3セルに"私は花子ですわ"、B4セルに"私は太郎ですよ"
があるとき、C3、C4セルにA列の2つの文字列を比較して違う部分を赤色にしたい。文字列の長さは同じとする。
で、次のように作ったんだけど、最後しか赤くならない。なんで?

Sub 文字列比較()
' 文字列比較 Macro
' マクロ記録日 : 2010/3/12 ユーザー名 : xp

Dim str1 As String
Dim str2 As String
Dim buf1 As String
Dim buf2 As String

str1 = Range("B3")
str2 = Range("B4")

For i = 1 To Len(str1)
buf1 = Mid(str1, i, 1)
buf2 = Mid(str2, i, 1)

If StrComp(buf1, buf2, vbTextCompare) = 0 Then
Range("c3").Value = Range("c3").Value & buf1
Range("c4").Value = Range("c4").Value & buf2
Else
Range("c3").Value = Range("c3").Value & buf1
Range("c4").Value = Range("c4").Value & buf2
Range("c3").Characters(i, 1).Font.ColorIndex = 3
Range("c4").Characters(i, 1).Font.ColorIndex = 3
End If
Next
End Sub

538 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:32:35 ]
初歩的な質問ですがお願いします。

For
If xxx then
@の処理
Else
Aの処理
End If
Bの処理
Next

xxxの場合、@の処理をした場合には、Bの処理をせずに
次のfor文へ行きたいのですが、elseの中になにを書けばいいでしょうか?

539 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:42:58 ]
>>537
マクロの記録でやってそうだからわかりそうなもんだけど、
 Range("c3").Characters(3, 1).Font.ColorIndex = 3 '花
 Range("c3").Characters(4 1).Font.ColorIndex = 3 '子
 Range("c3").Characters(7, 1).Font.ColorIndex = 3 'わ
は続けてやらないとダメだと思う。
  j = 0
For i = 1 To Len(str1)
If StrComp(Mid(str1, i, 1), Mid(str2, i, 1)) <> 0 Then
j = j + 1
ReDim Preserve s(1 To j)
s(j) = i
End If
Next
こんな感じで位置を先に取得してみては?

540 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:46:19 ]
連レスすまん。
>>538
Aの処理の次にBを書いちゃダメなの?
For
 If xxx then
  @の処理
 Else
  Aの処理
  Bの処理
 End If
Next
それか、エスパーぎみに答えるとSelect caseを使うとか??

541 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:54:58 ]
>>537
これの意味を勘違いしているような
Range("c3").Value = Range("c3").Value & buf1

セルc3の文字列を取出してbuf1の内容と文字列結合 → セルc3に上書き
この処理をすると これ以前にあった色指定が無効となる

つー事で
>>537を修正すると

Sub 文字列比較()
Dim str1 As String
Dim str2 As String
Dim buf1 As String
Dim buf2 As String

str1 = Range("B3")
str2 = Range("B4")
Range("c3").Value = str1
Range("c4").Value = str2

For i = 1 To Len(str1)
buf1 = Mid(str1, i, 1)
buf2 = Mid(str2, i, 1)

If StrComp(buf1, buf2, vbTextCompare) <> 0 Then
Range("c3").Characters(i, 1).Font.ColorIndex = 3
Range("c4").Characters(i, 1).Font.ColorIndex = 3
End If
Next
End Sub

542 名前:538 mailto:sage [2010/03/12(金) 21:03:38 ]
>>540
ありがとうございます。


顔洗って出直してきます。

543 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 21:25:28 ]
For
If xxx then
@の処理
Else
Aの処理
Bの処理
End If
Next



544 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 05:44:13 ]
>>538
for x=1 to 100
if xxx _
then
@の処理
else
Aの処理
end if
Bの処理
Next
次のfor分の処理

こう書くと Bの処理をコメントアウトすればいいんじゃねということがわかるけど
Aの処理のあと”だけ”にBの処理をしたい、と言うこと?それとも
真ならば他の人のいうとおりだけど
Bの処理はAの処理の前にしたいのか、後にしたいのかが不明確ですよ
Bの処理がAの処理と独立ならば順不同だけど

545 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 06:06:19 ]
VBAと関係ないね

546 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 11:50:59 ]
Webクエリでデータを読み込んで加工するVBAを作成しています
データの込みこみを待ってから次の工程へ行くようにするにはどうすればよいですか?

547 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 15:10:25 ]
>>546
Do While IEobject.Busy = True And IEobject.ReadyState <> 4

548 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:47:47 ]
こみこみ ← なんかカワイイ

549 名前:546 mailto:sage [2010/03/13(土) 18:59:55 ]
ありがとうございます

WebクエリとIEObjectの関係が分からないので、
もう少し調べます

550 名前:デフォルトの名無しさん [2010/03/13(土) 20:40:49 ]
Cells.Replace What:="1", Replacement:="1", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

0から9までの全角数字を半角数字に変換したいのですが
上記を10回書くよりも
これをfor文で回したいのですが
全角でというのか実現できません

教えてください


551 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 21:28:58 ]
>>550
StrConv

552 名前:デフォルトの名無しさん [2010/03/13(土) 22:07:45 ]
すみません質問です

以下のような数字の置き換えをしたいのですがどのようにすればいいでしょうか?

<a name="1">  →  <a href="hoge">
<a name="2">  →  <a href="hoge">
<a name="3">  →  <a href="hoge">

<a name="9999">  →  <a href="hoge">

553 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 22:21:59 ]
>>550
全角文字をループで扱うのはけっこう難しい。
文字コードを数値として扱う手もあるが、可読性が悪くなる。
プログラムの見栄えをすっきりさせたいなら、
配列に入れるか、置換のための関数を作るという手がある。
aryWhat = Array("0", "1", "2", ……



554 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 22:30:04 ]
>>552
そういう場合は正規表現を使います。桁数の決まっていない数字は[0-9]+と書きます。
<a name=""[0-9]+"">
とすれば、これ1行で1から9999までのすべてが検索の対象になるので、これをhogeに置換します。

555 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 22:33:35 ]
>>550
ヒント

Sub d()
  For i = 0 To 9
    Debug.Print i, StrConv(i, vbWide)
  Next
End Sub

556 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 23:34:43 ]
>>554

ありがとうございます
すごく助かりました

557 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 11:41:57 ]
別のエクセルファイルの標準モジュールに書いてある定数を読み込むには、
どうしたらいいでしょうか?

558 名前:557 mailto:sage [2010/03/14(日) 12:23:52 ]
自己解決しました

559 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 16:11:54 ]
NO 品名  価格 数量 金額
1  りんご 100  3  300
・・・

という連続したデータを

NO  1 ・・・
品名 りんご
産地 
数量 3 ・・・・

というふうに転記させる方法を教えてください。
転記先のフィールドは、元のフィールド名のものがない場合もあり、
逆に元のフィールドに無いものが転記先にあったりします。
また、転記元や転記先のフィールドの順番は、入れ替わる場合があります。
うまいやり方がありましたら教えてください。

560 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 17:34:39 ]
>>559
どうかな。

1行目に作業用の空白行を追加する。

転記元の左端から1セルずつ値を読み、右に移動するループ(セルが空白になるまで)
 転記先の上端から1セルずつ値を読み、下に移動するループ
  if転記元の値と転記先の値が同じならば
   作業用の行に転記先のセル位置を記入

(ここまでで転記先のセル位置を取得)
A1 A2       A4
NO 品名  価格 数量 金額
1  りんご 100  3  300

あとは転記元のデータを1行ずつ処理。

561 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 17:39:05 ]
>>559
新しいほうのデータの1レコード分の配列を用意する
古いほうのデーターから該当する配列の位置に読み込む
新しいデータへ配列から書き出す
以後レコード分繰り返し

562 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:22:14 ]
別のシートにセルを一個ずつコピーしていけばいいのでは

563 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:48:01 ]
おれだったらVLOOKUPでぱぱっと片付ける



564 名前:480 mailto:sage [2010/03/14(日) 22:45:10 ]
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

565 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 14:15:40 ]
Excel2007
Workbooks.Add
で新規にワークブックを作成する際に
オプション→数式で自動になるように作成することってできませんか?
今の状態は手動になっています。


566 名前:565 mailto:sage [2010/03/15(月) 18:09:02 ]
自己解決?
元のプログラムが入っているブックのオプションが手動になっていたので自動に変えたら
新しくできたブックも自動になってました。

なんか、自分自身をコピーして作ってるみたいな?(よく判りませんが w

567 名前:デフォルトの名無しさん [2010/03/16(火) 11:39:35 ]
WinXP Excel2003

Sub Input_Date(ByVal iDay As String)
ActiveCell.Value = CStr(iYear) _
& "/" & CStr(SpinButton1.Value) & "/" + iDay
ActiveCell.NumberFormatLocal = ComboBox1.Value
End Sub

いまのままだと何処のセルにも入力するようになっています。
指定したセルにのみ入力するよう変更したいのですが、どこを直せば良いでしょうか?


568 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 12:59:16 ]
>>567
ActiveCell

569 名前:デフォルトの名無しさん [2010/03/16(火) 16:40:50 ]
VBAで、「どこぞのプロシージャ内で」、「別のプロシージャやイベントを設定・修正」するって出来る?
例えばBook/Formのロード時のイベントプロシージャで、
 btn_test_1
 btn_test_2
   …
 btn_test_10
…って感じのボタン10個について、forで回してそれぞれのClickイベントに同一の処理を上書きさせる、とか。
それともクラスモジュール作って〜な やり方しか無いのだろうか?
わかり辛い書き方でごめん。

570 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 17:54:28 ]
2003、XPです。
株のシストレの計算をやらせるのに、ブック2枚を頻繁に行ったり来たりさせるようなモジュールはやはり相当遅くなるのでしょうか?

A:計算する元の四本値データだけ入ったブック。(シートが35枚あって、それだけで既に80MBのサイズ)
B:Aから計算結果だけを出力させるブック。

一枚に詰め込むべきか、複数枚に分けて管理すべきか・・・

571 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 18:11:19 ]
>>570
単にデータを読み書きするだけなら大して遅くはならない。
いちいちSelectとかActivateとかやっちゃうと遅くなるんで、そうしないように注意してプログラムを作ればいい。
あとは、オブジェクト型変数とかWith句をできるだけ活用すること。
計算中は余分なイベントを止めるのもそこそこ効果がある。

572 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 18:14:14 ]
>>569
質問の1行目だけ見ると答えはNO。
だけどたぶん、別の方法でできることをわかってないだけの気がする。

573 名前:デフォルトの名無しさん [2010/03/16(火) 18:38:49 ]
VBAでFX自動売買ソフトを作る事って可能でしょうか?

やりたい事

・業者orヤフー等からのレート取得
・発注機能

こんな感じです



574 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 18:42:34 ]
可能です

575 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 18:46:01 ]
是非作ってみたい
もしくはどなたかに作成していただきたいです

MT4だと業者に対応していないので・・


576 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:00:54 ]
プログラムもわからんのにそんな事言っててもどうしようもないと思うが
んで、誰がただでやるわけww?

577 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 20:13:48 ]
>>570
株価データの保存はDBに任せて、Excelは計算に専念させた方がスッキリすると思うけどね

578 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 20:17:59 ]
Cells(1, 2) = Cells(1, 1)
というマクロを作ったのですが、Cells(1,1)の文字数が多すぎると
#VALUE!
というエラーが出てしまいます。
Cells(1, 1)の値を他のセルにコピーするにはどうすればいいのでしょうか。

579 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 20:27:13 ]
まずは仕様書を書いてね
そしたら見積もり出すから

580 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 20:28:36 ]
>>578
そのエラーは文字列の長さとは直接は関係ありません。
まずB列の幅を広げて、セルB1の書式を確認してください。

581 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 20:58:02 ]
>>578
当方の環境下では
Cells(1, 2) = Cells(1, 1)
だと 半角256文字以上で#VALUE! になるね

Cells(1, 2).Value = Cells(1, 1).Value
だと大丈夫みたい なぜかしらんけど

つか.Valueを付けるのが本来の使い方なんだけどね

582 名前:デフォルトの名無しさん [2010/03/16(火) 21:29:59 ]
>>570
ADOつかてSQL書けよ

583 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 22:30:23 ]
>>581
XP、2003だけど下記コードでエラー出ない。
なんでだろ?

Sub test()
Cells(1, 1) = String(257, "あ")
Cells(1, 2) = Cells(1, 1)
End Sub

↑どっかおかしい?



584 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 01:39:38 ]
>>583
これでやったら912文字のところでエラーになった
Sub test()
  For r = 1 To 1000
    Cells(r, 1) = String(r, "あ")
    Cells(r, 2) = Cells(r, 1)
  Next
End Sub

585 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 01:51:17 ]
>>575
50万くらい出す気あるなら話聞いても良いよ。

586 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 02:10:47 ]
>>584
Sub celltest()
Cells(1, 1) = String(910, "あ")
Cells(1, 2) = Cells(1, 1)
End Sub

910文字まではOKってことだな。
>>578>>581はどういう現象なんだろ?バージョンの問題かな?

587 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 03:01:12 ]
いや、911文字までOK。
ていうか、みんなOSとExcelのバージョンぐらい書こうよ。
うちはXPと2003。

ちなみにVBAを使わずにセルに直接入力した場合は1セル32767文字まで入る。
ttp://office.microsoft.com/ja-jp/excel/HP051992911041.aspx

588 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 03:15:21 ]
>>587
ん?
>>584だと911行目でエラーが発生してるから
911文字はエラー、910文字まではOKってことじゃないの?
OSとバージョンが同じだから、やっぱりバージョンの問題なんだろうな。

589 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 03:22:49 ]
doudemoii

590 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 12:25:45 ]
どうでもよくない。
>>578>>581の状況が再現できないと回答もできないし、
自分が同じトラブルに遭う可能性だってあるわけだから解決できないと気持ちが悪い。

591 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 12:47:26 ]
>>589
だんだん話しについていけなくなっちゃったんだろうなw

592 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 14:51:07 ]
気持ち悪いから>>578早く戻って来い!

593 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 16:29:57 ]
>>581で再現できてんじゃん



594 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 17:26:31 ]
で、解決方法は?

595 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 17:31:37 ]
再現できないとか言ってるから、再現できてると言ったまで。
>>581によれば、Value付ければいいんじゃないの?

596 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 17:47:44 ]
>>594
Cells(1, 2) = Cells(1, 1).Valueにすればいい。
Cells(1, 2) = Cells(1, 1)と何が違うのかは知らん。

597 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 17:53:15 ]
解決できないから気持ちが悪いんじゃなくて、解決できてるけど仕組みがわからなくて
気持ちが悪いんじゃないの?

598 名前:デフォルトの名無しさん [2010/03/17(水) 18:11:26 ]
初歩的な質問ですんません

セルに直接入力せずに三角形みたいなのをクリック(セルをクリックすると現れる三角形)すると
あらかじめ設定してた項目を取り出せるあの機能はなんて名前でしったけ?
またその設定はどこでやればいいですか?
お願いします。vista使いです

599 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 18:16:36 ]
>>598
ひょっとして、これのことか?

Excel講座 > セルをコンボボックスにする
www.serpress.co.jp/excel/no004.html

600 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 18:35:25 ]
うちだと910文字超えないとエラーにならないのに、
どうして>>581は256文字でエラーになるの?
もうちょっと再現の条件とか手順をkwsk

601 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 18:45:27 ]
>>599
そうそうそれそれ
どうもすんません

602 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 19:41:37 ]
>>598
セルにコンボボックスを仕込むより入力フォームを作って
ボタンぼんでシートに値がコピーされるように作った方がいいと思うが。

603 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 20:40:45 ]
テスト



604 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:04:36 ]
Excel2007
ブックを新たに作成するときにシートの枚数を3枚とか指定することは出来ないのでしょうか?

605 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:19:57 ]
テンプレートで

606 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:20:48 ]
>>604
Application.SheetsInNewWorkbook = 3
こういうこと?

607 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:23:33 ]
あ?テンプレの話?
2003だと
ツール→オプション→全般→新しいブックのシート数
で設定できる。2007はわからん。


608 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:28:37 ]
>>606
それです。ありがとう
テンプレートは?状態ですけどw

609 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:30:49 ]
>>608
とりあえずググれよ。(もう見てないだろうが・・・)

610 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 06:32:14 ]
>>600
どうしてExcelのバージョンすら明記しないのか不思議。馬鹿?

611 名前:デフォルトの名無しさん [2010/03/18(木) 13:18:25 ]
>>610
話の流れからすると910文字までいけるのは、XPで2003だって二人が書いてるぞ。
バージョン明記してないのは質問者と>>581の解答者だ。

それはそうと、これだと10000行までいけるなw
Sub test()
 For r = 1 To 10000
  Cells(r, 1).Value = String(r, "あ")
  Cells(r, 2).Value = Cells(r, 1).Value
 Next
End Sub

612 名前:611 [2010/03/18(木) 13:44:40 ]
おっと、>>611はXPで2003だ。
ちなみに、Win7の2007でも検証してみた。
 ・Valueあり→10000行までいけた
 ・Valueなし→8203行目でエラー
という結果。2007だとValueなしでもこんなにいけるんだなw
ってことは、質問者のバージョンは2002以前とエスパーしてみる。
それにしても、2007のVBEどっから起動するのかわからなくてビビったw

613 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 15:21:35 ]
>>611-612
>>600の「うち」の環境を書けと言ってるんだ、馬鹿。
じゃなければ、第三者が全体を把握できないだろ。



614 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 15:41:08 ]
>>611-612
Value付ければいいって結論が出てるのに、いつまで何やってんの?

615 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:06:15 ]
>>613
>>600は、910文字超えないとエラーにならないって書いてあるから
流れから2003だってわかると思うが?
流れを読まなくてもわかるように、レス内に明記するのがネチケット(笑)ということなら、
まぁ、そういうことなんだろうw

>>614
Valueは単純に“省略可能なもの”と認識してたんだが、
今回のケースで言うと、場合によっては省略してはいけないってことか?
すまん、素人にもわかるように説明してくれ。

616 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:13:20 ]
>>615
とことんアホだな。

仮にExcel 2003が911文字目からエラーになるということだとしても、
911文字からエラーになるからといってそれがExcel 2003とは限らないだろ。
高卒文系なのか?

何かを明らかにしたくてその話題に参加し、なおかつ相手に再現の手順を求めるのなら、
まず自分の情報を出せっつーこった。

> すまん、素人にもわかるように説明してくれ。

知るかアホ。
このスレは素人の好奇心を満足させるスレじゃねーよ。

617 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:19:38 ]
>>611
ド素人はこれだから困る。
セルに設定出来る最大文字数はヘルプにちゃんと書かれてる。
ヘルプ見ろ。

618 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:24:40 ]
エクセルVBAに詳しい人教えてください!
yutori.2ch.net/test/read.cgi/morningcoffee/1268888151/

619 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:32:09 ]
いつまでやってんだよ……

620 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:32:10 ]
>>616-617
論点がずれてますよ。
人のことを馬鹿とかアホとか高卒文系とかド素人とか言ってるけど、
話の内容を理解できていないのは、あなたの方ですね。
何かを明らかにしたくないなら、あなたはこの話題に参加しなくてもいいと思います。

621 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:37:10 ]
ずらしてんのはお前の方だ馬鹿。

これになんかコメントしてみろ、アホ。
> 仮にExcel 2003が911文字目からエラーになるということだとしても、
> 911文字からエラーになるからといってそれがExcel 2003とは限らないだろ。
> 高卒文系なのか?

622 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:38:03 ]
>>618
ソース見てボタンの名前調べればいいんじゃないの?
そんな単純なことじゃなくて?

623 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:38:50 ]
・Valueを付ければ問題ない
・Excelの仕様上、何文字まで設定出来るかはヘルプに書かれている

これ以上、何を知りたいの?



624 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:41:05 ]
話の流れからするとw、>>600=>>611じゃねーの?
馬鹿と言われて悔しかったのかな?

625 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:41:30 ]
>>621
hideyoshi.2ch.net/test/read.cgi/mental/1266008088/l50
とりあえず筋トレでもしてみたら?

626 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:45:40 ]
おまいらいつまでやってんだwwwwwwwwwwww

627 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:50:36 ]
>>625
反論不能か、高卒文系のド素人が。
もう黙っとけ。

628 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:57:30 ]
VBAからGroovyのプログラムを呼びたいんですが、何か方法はありますか?
Groovyに限らず、VBAから他の言語のプログラムを呼んで、返り値を使用する
ことってできるんですかね?

629 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:58:28 ]
一つのセルには200文字も必要ねーな。
50文字でも十分じゃね?
数式厨には足りないかも知らんけどw
超長ーい数式を得意としてるやつもいるからな。

630 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:05:02 ]
>>621
必死ですね。コメントを求められているのでレスしますね。
その事象が起きるからといって、Excel2003だという証明は私には出来ません。
学歴も聞かれてますね。おっしゃる通り文系ですが大卒です。
これでよろしいでしょうか?

631 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:06:40 ]
だよな。表計算ソフトなんだから50文字でも多いぐらいだ。

632 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:09:01 ]
超長〜い数式は勘弁してほしいw

633 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:18:44 ]
超長ーい数式とか配列数式とかSUMPRODUCTのフィルコピーが大好きなやつはほとんどアホばかり。
VBAで言えば変数使わないで何度も同じ値を取得してるようなもんだ罠。
数式でやるならVBAの変数に相当する作業セルを使えってこった。



634 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:22:44 ]
>>623
もういい加減アホとか言うのやめれ。

635 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:25:04 ]
ん?俺のことかな
すまん、今度からヴァカと書くことにするわ。

636 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:27:44 ]
>>630
証明できるかどうかなんて聞いてないんだよ。

>>615
> 流れから2003だってわかると思うが?
わかると思ってるなら、それは馬鹿ゆえだってことだ。

横からノイズ増やしといて、俺の知りたいことだけお前ら教えろとかいう奴はいらないんだよ。
わかった?

637 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:31:39 ]
ふぁいと!
俺は50文字でも十分すぐるから興味ナス

638 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:32:35 ]
>>630
お前も必死だよwww

639 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:34:53 ]
大卒文系って、裏・逆・対偶レベルの論理学も理解できないの?
今はやりのゆとりって奴?

640 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:36:20 ]
まぁ餅つけ
50文字でも十分ということで糸冬了

641 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:39:24 ]
まぁ、セルに表示できないような文字数を設定するというのは、基本的な使い方では
ないわけだから、自分がそのような処理を実装しなければならなくなったときに、
ターゲットとなるExcelの仕様上の制限を調べ、テストを十分にやれば良い。

642 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:41:21 ]
必要条件と十分条件を良くわかってない馬鹿SEのことを思い出した。

643 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:43:09 ]
CellsのデフォルトプロパティがValueじゃないってことじゃないかと思うけど、
調べるつもり無し。



644 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:51:55 ]
Cells(2, 1) = Cells(1, 1)
でエラーが発生するとき、
Range("B1") = Range("A1")
でもエラーが発生するね。
何故なのかはそれほど知りたくないけど、RangeのデフォルトプロパティはValueだって
思ってたので、ちょっとキモチワルイ。

やっぱり
Range("B1") = Range("A1").Value
と書くと動く。
まぁ、デフォルトプロパティは使うなってことかな。

645 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:52:57 ]
スレが伸びてると思ったら一人で暴れてるようだな。
文体でバレバレだw

646 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:57:50 ]
>>644
セルの文字数についてはバージョンによる違いだってわかるけど、
Valueの省略については色々調べてもわからなくて、昨日からずっと気持ち悪い。
納得できる答えをくれる神は降臨しないかと待ってるんだけど
スレ覗く度に荒れる一方で(ry

647 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 18:22:47 ]
>>646
納得できる答えが見つかっても、安全側に倒してデフォルトプロパティに頼らない
コードを書くしかないという状況は変わらないよ。

648 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 18:24:50 ]
>>645
バレバレw

649 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 18:29:42 ]
まぁどっちもひといが、この板的にはこれが一番ひどい。

>>611
>それはそうと、これだと10000行までいけるなw

650 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 18:38:10 ]
例えば

Sub test()
MsgBox TypeName(Range("A1").Value)
MsgBox TypeName(Range("A1"))
End Sub

とやると
Empty
Range
となる

651 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 19:46:05 ]
>>650
だから?

652 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 19:54:40 ]
>>611にガン擁護された>>600は、どのような登場の仕方をするのであろうか。

653 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 20:44:22 ]
>>623
256文字でエラーになるExcelのバージョン



654 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 23:07:40 ]
>>653
え!?それかよっ!!www

655 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 23:27:05 ]
>>653
うち Excel2003(XP) と Excel97(Win98)あるんだけど
Excel97(Win98) だと256文字でエラーになる

656 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 23:48:24 ]
哲也君がVBAマクロを2昼夜かけて作ったんですよ。



これが本当の「マクロ 2夜連続」なんつって。

657 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 02:04:41 ]
>>653
だったら、初めから自分の環境の結果を書いとこうね。
俺は何もしないけど、お前ら俺の知りたいことを教えろパターンですな。
ちなみに俺は、これまで出ていないExcel 2000を持っていて実験もし結果もわかったが教えない。

658 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 06:32:11 ]
俺はウチとまったく同じ環境の結果がガイシュツだから書かなかっただけなんだけど、
同じことを何度も書かなきゃいけないの?
役所に出す書類だな、まるで。

659 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 06:38:42 ]
それが知りたいんだったら、既出の情報をまとめるなりなんなりしろよ。
餓鬼かよ。

660 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 07:31:23 ]
私女だけど、たった1行の実験結果を書かずに言い訳を何行も書く男の人って

661 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 08:40:37 ]
まとめなきゃ把握できないほどの情報量か?
数えてないけど3例ぐらいしか出てなかっただろ。

662 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 08:55:26 ]
XP 2003です

ググっても中々みつからないんだけど、
手動で選択したセル範囲の数字を一気に計算(仮に10倍)とかするのってVBAで出来るの?

あとついでに、セル範囲の一番右下の座標も取りたいんだけどやり方教えてください。

663 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 09:11:53 ]
>>661
いつまでやってんだ



664 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 09:13:07 ]
>>662
前半:できる。rangeを関数の引数に取りfor each
後半:一発でできるかどうかは知らん

665 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 09:15:03 ]
>>682
VBAでもちろん出来るが手操作でも出来る。
どっかのセルに10と書いて、コピー、形式を選択して貼り付け、乗算

一個の選択した矩形範囲の右下隅のセルを操作したければ
Selection(Selection.Count).****
Excel2003はこれで大丈夫だが、Excel2007は全セルを選択したとき
CountプロパティがLong型なので入りきれなくてエラーになる。
そこまで考慮するなら
With Selection
 .Item(.Rows.Count*.Columns.Count).****
End With
座標って行番号とか列番号とかアドレスが必要なケースは滅多にないだろう。
全くないというわけではないが。

666 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 09:15:04 ]
>>661
ほら、お前もスレを確認しないと状況がわからないだろ。
>>653の知りたかったことなんて誰も知らないんだから、状況をまとめて
あとこのバージョンの動作を教えてくれってやるのが筋。

667 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 09:59:47 ]
>>653
Excel 2000では256文字目でエラーになる。

これで全部揃った?揃ったならまとめくらいしてもバチはあたらないよ。

668 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 10:08:55 ]
Excel95がまだ出てなーなw


669 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 10:26:54 ]
だれか知ってる人がいたら教えてくれ。
A1の表示形式がG/標準のとき
Debug.Print Format(Range("a1"), Range("a1").NumberFormat)
とやると"M32032ral"が返るんだが、これって何?

670 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 10:28:49 ]
いかん、Valueつけるの忘れたわ

671 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 10:31:38 ]
A1の値を書くのも忘れたわ
1の場合ね

672 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 10:38:56 ]
>>669
知ってるのか知らないのかわからないが、それ、Formatの第二引数の指定方法が間違ってる。

673 名前:デフォルトの名無しさん [2010/03/19(金) 11:18:49 ]
競艇のネット自動投票プログラム作っています。自動ログインは完成しましたけど、
次の画面の投票する競艇場選択のボタンを押す方法が分かりません。

押したいボタンのHTMLソースは以下
<input value="福  岡" onclick="jyocd(22)" tabindex="2" type="BUTTON">

ボタンの名前(name)が無いから通常のやり方ではできません。

また、
SendKeys "{TAB 5}"
SendKeys "{ENTER}"

で5番目の競艇場をクリックではできましたが、最終レースが終わると
その競艇場選択ボタンが消えますので、必ずしも××競艇場が5番目とは限らないのです。

検索等で昨日1日中調べてみましたが解決しません。。。助けてください。



674 名前:デフォルトの名無しさん [2010/03/19(金) 12:08:09 ]
データについているハイパーリンクの中の数字を取り出して(〜info.php?chr=25121とあったら568311)、もしAという数字だったら、その列の情報を全て、シートAにコピー
という仕組みを作りたいと思っております。
ハイパーリンクの中の数字を参照するには、どうしたらよろしいのでしょうか?助けていただけると助かります。


675 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 12:57:29 ]
>>672
どこが?
まさかNumberFormatLocalってんじゃないだろうね。
もしそう思ってるならそっちが間違ってる。
そんなことはないとは思うけど。

676 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 12:58:20 ]
まとめました。扱える文字数はバージョンの違いってわかるんですけど、
何故Valueを省略するとエラーが出るのか、どなたか教えて頂けませんか?

【バージョン不明】
256文字以上でエラー
>>578(質問者)、>>581>>596

911文字以上でエラー
>>600


【バージョン記述あり】
Win98&97(256文字以上でエラー)
>>655

OS不明&2000(256文字以上でエラー)
>>655

XP&2003(911文字以上でエラー)
>>583>>588?)、>>584>>587?)、>>586

Win7&2007(8203文字以上でエラー)
>>612

677 名前:676 mailto:sage [2010/03/19(金) 13:01:21 ]
訂正ですorz
OS不明&2000(256文字以上でエラー)は>>667でした。

678 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 13:14:44 ]
あぁ分ったわ。
NumberFormatは"General"だから
Gは元号のGで明治だからM
eは和暦の年
nは分
eは和暦の年
ralはGeneralの右3文字だな。
結局Formatじゃ駄目でWorksheetFunction.Textってことか。
俺の間違いだったわ。

679 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 14:42:54 ]
>>678
いやいや、ヘルプ見ろよ

680 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 14:46:07 ]
>>676
それ多分OS関係ない。

> 何故Valueを省略するとエラーが出るのか、どなたか教えて頂けませんか?
多分、今ここにいる奴は答えられないから、これまでに回答がないんだよ。
モーグにでも行けば?

681 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 17:50:13 ]
>>674
> chr=25121とあったら568311

の法則がよくわからない。
Aは数字じゃない。
16進?でもなそさうだし。

682 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 17:53:43 ]
>>679
FormatもWorksheetFunction.Textも似たようなもんだろうと思ってた俺が
馬鹿だったが、Formatのヘルプの表示書式指定文字なんて一部しか載ってないね。
とりあえず"s","h","n","g","aaa"などが抜けてる。
"General"はWorksheetFunction.TextにはあるがFormatにはないということだな。

683 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 18:01:50 ]
範囲指定していっぺんに10倍はVBAでもできる。
「形式を選択して貼り付け、乗算」をマクロの記録してみ。



684 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 18:12:10 ]
Formatのヘルプの最後にある表示書式指定文字だが、あれは一覧じゃなかったか。


685 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 18:14:19 ]
>>682
ホントだ。ローカルのヘルプは抜けてるのがある。
オンラインヘルプなら全部出るみたいだけど。

686 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 18:26:38 ]
>>682
あと"p"とか"ccc"とか"ooo"とか"ww"とかもあるみたいね。
Format(1,"ww")が53、Format(1,"www")が531になるがなんのこっちゃ。

687 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 18:47:18 ]
"p"じゃなくて"q"だったわ。
"ccc"も"c"ね。
Format$(シリアル値,"yyyy/mm/dd")とするところを
Format$(シリアル値,"c")としても同じみたい。

>>685
オンラインのヘルプどこ?
さっきから探してるんだが見つからん。
MSDNかな?

688 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 18:54:35 ]
cはcountryのcだと予想して地域オプションをいじくってみたら、案の定
Format$(シリアル値,"c")は必ずしもFormat$(シリアル値,"yyyy/mm/dd")と
同じじゃなかったわ。

689 名前:662 mailto:sage [2010/03/19(金) 19:51:07 ]
>>664-665
回答ありがとうです。本当にたすかりました。
面倒なんで「(どっかのセルに10と書いて)コピー、形式を選択して貼り付け、乗算」をマクロ記録させてそれでやり過ごしました。

690 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 20:03:49 ]
Formatの奴うざいよ?
Valueの奴と同じちゃうんかと思われるレベル。

691 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 20:15:38 ]
うざくてすまんね。
Value関連は考えすぎだな。
629と633と637は俺だけどな。

692 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 20:21:00 ]
というわけど、今後は>>690のハイレベルな回答を期待しましょうねw

693 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 20:38:21 ]
ヘルプ見ろでFAだろ。
質問者はまだ見れてないようだが。



694 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 20:42:05 ]
めんどくさいけど探してやった。
ほれ。
msdn.microsoft.com/ja-jp/library/59bz1f0h(VS.80).aspx

695 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 20:47:20 ]
それVBAも一緒なの?

696 名前:デフォルトの名無しさん [2010/03/19(金) 20:51:40 ]
ブイバのことは俺に任せろ!

697 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 21:04:53 ]
>>693
クソ生意気な奴だなぁ。
ヘルプくらいは真っ先に見てるさ。
俺の見れるヘルプにはcやwwwは見れないんだよ。
お前がそういうなら探せばどっかにあるんだろうけどね。
Formatで検索して出てくる下には書いてない。
Format 関数
ヘルプ > 関数 > D-G
Format 関数の使用例
数値表示書式指定文字 (Format 関数)
文字列表示書式指定文字 (Format 関数)
数値を表すその他の書式 (Format 関数)

もうどうでもいいけどな。


698 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 21:09:18 ]
>>694
お、ありがとう。
そこにあったか。
どうでもいいと書いたがこれから見るわ。


699 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 21:14:54 ]
>>693=694の俺なんですが・・・

700 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 21:18:56 ]
なんというツンデレ!!
おまいら何やってんだよwww

701 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 21:25:30 ]
>>699
ふーん?
結局お前もまともにヘルプ見てなかったと言うことかw
>>694もリンク先見たけど、cやwwwは載ってないわ。
ExcelヘルプでFormatで検索しても出てこなかったが、表示書式指定文字で検索したら出てきたよ。

702 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 22:21:05 ]
>>701
日付の書式のヘルプ初めて見たよ。
cとかooooとかwwとか今まで知らんかった。

703 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 22:35:11 ]
>>702
同じく。
しかしヘルプでFormatじゃなくFormat関数と最後まで打てば日付関連の書式は出てきたな。
手抜きはいかんな。
またうざいとか言われるからこのへんにしとくよ。



704 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 22:53:23 ]
>>703
「Format 日付」でも出てくるよ。
間にスペース入れればAnd検索だな。

705 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 23:16:10 ]
>>704
トンクス
Formatだけでも2ページめにあったね。
ヘルプはカーソル当ててF1しか普段使わないから、オンラインヘルプの使い方知らなかった。

706 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 02:51:23 ]
いつからこのスレは自分が発見したことのメモ帳になったんだ

707 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 02:53:16 ]
>>701
で、結局そのヘルプのありかをこのスレにフィードバックするつもりは無いのか。
やっぱValueの奴とレベル一緒だわお前。

708 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 03:37:26 ]
>>672でちゃんと使い方が間違ってると教えてもらってるのに、何なのこいつ。

709 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 07:56:45 ]
>>672
>>669だが、夜会合ですぐレス書かなくてすまんな。
ヘルプは>>671>>704のおかげで読めたよ。
俺も実は探せてなかったもんでね。
ヘルプ読めと言いながらVBAのヘルプじゃないものを教えた人もいたみたいだが。


710 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 08:02:40 ]
まちがった
>>701>>704のおかげな

711 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 08:09:44 ]
>>707
ヘルプのありかは>>701はフィードバックしてるんじゃね?
表示書式指定文字で検索って書いてあるし。
Excelヘルプをオンラインヘルプに読み替えればいいんじゃね?

712 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 10:14:12 ]
ヘルプ見ろで切れまくる奴はいるは、ヘルプ見つけられない奴続出だわ、レベル低すぎ。
お前ら一体今までどうやってプログラミングしてたんだよ?
何でもググってコピペしてたんじゃねーの?

713 名前:デフォルトの名無しさん [2010/03/20(土) 10:14:17 ]
エクセルVBAであるサイトのラジオボタンを自動で選択するマクロを作っているんだけど
その方法が検索で調べた方法じゃできなくて困っています。

HTMLのラジオボタンの部分のソースは
<input name="kumiban1" value="1" onclick="check1(this)" tabindex="3" type="RADIO">

となっています。

"kumiban1"のvalue="1" をクリックしたいのです。



714 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 10:37:36 ]
>>713
同じページ内に同じ名前の name="kumiban1" が複数あった場合は objIE.document.all("kumiban1") だとエラーになる。
そういう時は objIE.document.all("kumiban1")(0) 、objIE.document.all("kumiban1")(1) のように番号を付ける。
自分のチェックしたいボタンが何番目かは自分で調べてね。

715 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 10:50:18 ]
>>712
まぁまぁ、レベルの高いと思われる>>694でさえ見つけられなったんだから。
俺もF1キーで大体事足りてるしね。
ところで2010では有名なFindメソッドの使用例の間違い、直ってるか誰か知らない?
俺未だにISDNだからベータ落とせない。
前トライしたら途中で切れてばっか。

716 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 10:53:30 ]
>>712
コピペでマクロ作って社内で高評価

自分で考えなければできないようなことをさせられる

コピペ技術だけじゃどうにもなんねぇ・・・でもまともに組んだことねぇ

そうだ!聞いて教えてもらう←いまここ

結局できない

評価右肩下がり

717 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 10:54:51 ]
>ISDN
マジか!!
まだいるんだなぁ…
テレホ思い出したわ

つうか、ネカフェとか行ってDLしてくりゃいいんじゃねぇの?


718 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:10:16 ]
かわりにダウンロードしてくれる友達とかいないの?

719 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:12:59 ]
>>717
そんなものあったらすでに行ってるよ。
こちとらド田舎離島だからね。
今度弟にDLしてもらって郵送してもらうかな?
来年は光が開通するんだが。

720 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:14:44 ]
>>718
リロードしなかった。
>>719のとおり。

721 名前:デフォルトの名無しさん [2010/03/20(土) 11:24:21 ]
>>714
>番号を付ける
の記述はどうやるんですか?

722 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:33:19 ]
>>721
えっ
回答にちゃんと番号付いてるやん

723 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:34:30 ]
>>715
なんで>>694がレベル高いことになってるんだかさっぱりわからんが、F1で事足りないときの
対処法を言ってるんだが。馬鹿(694)が一人でもいると、自分がマニュアル見ないエクスキューズになるのか?



724 名前:デフォルトの名無しさん [2010/03/20(土) 11:36:25 ]
>>722
いや構文の記述法がよく分からないのです

725 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:40:09 ]
プログラマー
RTFMは
遠くになりにけり

726 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:44:44 ]
>>723
レベルが高いをまじにとったか。
昨日Value関連でさんざん罵倒してたのが彼だと思ったからちょい嫌味で書いただけ。
人違いだったらごめんな。

727 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:49:06 ]
>>724
ブラウザをコントロールする方法はいくつかあるから、
まずは自分のやりたい方法というか、試してだめだったプログラムをここにアップして。
そしたら修正点を書くから。

728 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:53:56 ]
ってかここカルシムム不足がいるよね。
あーいえばこういうし困ったもんだ。

729 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:59:21 ]
牛乳飲もう

730 名前:デフォルトの名無しさん [2010/03/20(土) 12:05:08 ]
>>727
いくつか試したんですが例えば↓こんな感じです。

Dim objIE As Object
Dim objITEM As Object
Dim nNO As Integer

Dim strRADIO(0 To 5) As String



strRADIO(0) = "1"
strRADIO(1) = "2"
strRADIO(2) = "3"
strRADIO(3) = "4"
strRADIO(4) = "5"
strRADIO(5) = "6"

nNO1 = 1



On Error Resume Next
For Each objITEM In objIE.Document.all

If objITEM.TAGName = "INPUT" Then
If objITEM.Name = "kumiban1" And objITEM.Value = strRADIO(nNO) Then
objITEM.Checked = True

End If
End If
Next

731 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 12:26:28 ]
>>728-729
まったく関係ないけど、それ俗説だから。

732 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 12:39:24 ]
アホがアホって言われることが気に入らない奴が居るみたいね。

733 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 12:40:04 ]
>>731
そうかカルシウムじゃ駄目なのか。
もう駄目かも知らんね。
もともとプログラマーは廃人が多いんだが。



734 名前:デフォルトの名無しさん [2010/03/20(土) 15:17:17 ]
すみません、A列目の値が x で、1行目の値が y となるようなセルを探すのは
VBAでできますか?Excelの機能だけでもできますか?
どんな関数を使えばいいかヒントをください。検索します。


735 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 15:25:25 ]
>A列目の値が x で、1行目の値が y となるようなセル

??????????????

736 名前:734 mailto:sage [2010/03/20(土) 15:34:52 ]
すみません、A列の値と1行目の値をキーとして交差するセルを検索したいのです。

737 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 15:38:47 ]
ctrl + Fで検索すればいいんじゃないの?
つか、ここはVBAの質問スレだぞ。

738 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 15:47:57 ]
すみません、そのセルの値をプログラム的に参照したいということです。

739 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 15:54:08 ]
A列の値と1行目の値をキーってのがわからない
例をしめしてちょ

740 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 16:07:06 ]
>>734
どうかな?

Do While セルの値が空白になるまで
 if セルの値が"x"の場合
   セルの位置を取得してLoop終了
 end if
 
 一つ次のセルへ移動
Loop

741 名前:740 mailto:sage [2010/03/20(土) 16:28:45 ]
考え方は以下の手順でよろしいかと。

A列を検索し、"x"の入っているセルの行番号を取得
1行を検索し、"y"の入っているセルの列番号を取得
Cells(行, 列).Value で目的のセルの値を取得

742 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 16:40:39 ]
worksheetfunctionでlookupとかじゃだめなの?
質問者のレベル的にそこまで難しいことをしてなさそう。

743 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 16:52:32 ]
でも、質問があると速攻答えてくれるお前らは何だかんだで根はいい奴等だと俺は思ってるんだからね///



744 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 16:59:13 ]
>>713,730
コピペミスだと思うけど
 <input name="kumiban1" value="1" onclick="check1(this)" tabindex="3" type="RADIO">
を対象なら
>>730
 誤 nNO1 = 1
 正 nNO = 0
ではないかな

これでチェックが入るはず

その上でonclick="check1(this)"を作動させたいのであれば

objITEM.Checked = True

objITEM.Click
に変更してみては?

745 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:44:50 ]
下手な言葉で説明されるよりも具体例を出して何をしたいのかを言った方が遥かに早いと思うぞ >>734

746 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:57:12 ]
質問です。
決まったセルの位置をVBAで扱う場合、
私は下記のように定数定義して使っています。

Public const 合計金額欄 As String = "D8"

この方法は、
Range(合計金額欄) には良いのですが、
Cells(r, c) で使いにくい欠点があります。
みなさんはどんな風に位置を定義していますか?

747 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 19:30:22 ]
>>746
極力マジックナンバーや文字列リテラルをコードの中に入れないと言う
方向性はいいけど、度が過ぎるとくどいコードになるから嫌われるよ。
セルくらいはコードの中でオブジェクト変数に
Set c = Range("A8")
と書いてcを使い回せばいいじゃん。
多くのプロシージャで定数の合計金額欄を使いたければ
各プロシージャの 中でオブジェクト変数に
Set c = Range(合計金額欄)
などとセットしてcを使い回せばいい。
CellsやRangeを頻繁に使うコードはあまりきれいじゃないから。

748 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:01:14 ]
プロシージャの先頭で
Set c = Range(合計金額欄)
みたいにして、実際の処理にはcを使うようにすればいい。

749 名前:デフォルトの名無しさん [2010/03/20(土) 21:04:11 ]
「名前」を挿入しろよ

750 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:19:53 ]
>>725
2010のFindメソッドのヘルプは相変わらず間違ったまま。
直す気はさらさらないんでしょうね。
2002のころから報告は山ほどいってるはずなのに。

あと静かになったところを混ぜ返すのもなんだけど
>>669,>>672
別にFormatの第二引数の記述が間違ってるわけではないでしょう。
ご本人が>>678で書かれてるように第二引数の書式にそって出力
されてるだけだから。
Format(Range("a1"), Range("a1").NumberFormat)
すなわち
Format(1, "General")
すなわち"Genaral"の左4文字は書式指定文字で
Format(1, "Gene"""ral""")と同じ。
シリアル値の1は1899/12/31(明治32年12月31日)だから
書式にそって"M32032ral"が出力された。
別に記述が間違ってるわけではないですね。
"M32032ral"に意味があるかと言われれば何もないけど
Format(値,Range(***).NumberFormat)って書き方は日付の値検索で
使うこともあるね。
長文失礼

751 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:25:00 ]
わかった。
お前が一番のいらない子だ。

752 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:27:08 ]
つか、暴言は気まくりの奴をなんで「ご本人」とか言ってるんだか

753 名前:746 mailto:sage [2010/03/20(土) 21:35:04 ]
>>747
>Set c = Range(合計金額欄)
なるべく上記のようにして変数で取り扱うようにしたり、
Withで記述を省略したりしています。

>度が過ぎるとくどいコードになるから嫌われるよ。
入力フォームと定数定義を作りながら、
だんだん動作と実装のイメージを固めてコーディングに取り掛かる、
という作り方をしてるorz。



754 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:38:09 ]
>>750
何を言いたいのか良く解らないけど、それマニュアル読めば解決することだよね?
マニュアル読めという回答はするなという主張なのかな。

755 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:48:26 ]
ほとんどの質問はぐぐれば解決することだよね?
以下略

756 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:49:12 ]
暴言ねぇ、
そんなのどうでもいい。
仮に丁寧でも内容が間違ってれば駄目だから。

ヘルプ読めはべつにいいんじゃないの?
ただ間違った指摘があったから書いただけ。

757 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:51:25 ]
>>746
本当に決まり切った位置なら、セルに名前を付ける。
home.att.ne.jp/zeta/gen/excel/c03p05.htm

そうじゃないなら、Rangeを返す関数を作ったり、そのRangeの値を返す関数を作ったりする。
function SumPriceRange() as range
set sumpricerange = range("d8")
end function

function GetSumPrice() as long
getsumprice = range("d8").value
end function
とか。

758 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:58:44 ]
>>750
君って、printf("%d", some_pointer)で変な値が出力されるんですけど、とか聞かれたら、
どのような仕組みでその変な値になるか説明しそうだな。

759 名前:746 mailto:sage [2010/03/20(土) 22:09:56 ]
>>757
セル範囲を管理するモジュールを1つ用意して、
その中にセル範囲を返す関数を並べ、
各プロシージャはそれを参照するという感じでしょうか?

760 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:12:32 ]
>>750
669だけど、WorksheetFunction.Text(値,書式)のように返り値1を期待してのものだったので俺の間違いでいいです。
これ以上相手すると疲れるから。
降参です。

761 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:17:28 ]
自分で事を荒立てといて、なんていいぐさw

762 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:23:59 ]
最初のレスでG+e+n+e+ralで表示された結果って書いとけば良かったんだよ。
マニュアル読めとか出し惜しみすんなよ。

763 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:37:59 ]
なんか再燃してるねぇ。
2chはこうじゃなくっちゃw
>>752
暴言がどれをさすか知らんけど、クソ生意気と書いたのは俺で質問者じゃねーから。
>>762
出し惜しみする頭なんてあるわけないと思うw
Formatの使い方よく知らないからヘルプヘルプとわめいてたんじゃね?






764 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:41:43 ]
ヤレヤレ ┐(´ー`)┌ マイッタネ

765 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2010/03/20(土) 23:49:45 ]
>>750
どうもです
MSも相変わらずですか。

766 名前:デフォルトの名無しさん [2010/03/21(日) 10:49:19 ]
>>744でもダメですた。
競艇の自動投票を作っているんですけど競艇のサイトが特殊なのかな・・・
ラジオボタンのチェックが入りません。

767 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 10:58:32 ]
>>750
何がどう間違っているのか書けよ屑

768 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 11:30:42 ]
>>766
投票ページにアクセスするには会員登録が必要だろうから、
そのページのソースをどっかにアップしてくんない?

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

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

771 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:09:54 ]
おーすまん>>750
上はもちろんトウシローの>>767あてね

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

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

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



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

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

776 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:22:47 ]
そいつの相手してる奴がこれまた痛いw

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

778 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:28:44 ]
いろんな厨がいるが、ヘルプ厨ってのもいるんだなw

779 名前:744 mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:42:42 ]
>>777
俺は頭悪いからそんなこと分らないんだよ
とにかくヘルプだヘルプ!
VB.NETのヘルプじゃなくてVBAのヘルプな

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

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

783 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:32:05 ]
自作自演もほどほどにしようぜ



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

785 名前:679 mailto:sage [2010/03/21(日) 13:38:32 ]
今顔真っ赤です。

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

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

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


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

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

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

790 名前:766 [2010/03/21(日) 16:34:22 ]
>>768
ソースアップしました。
firestorage.jp/download/90a5112c83637a3be41a86ca9723b61c6c7229b1

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

792 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 17:17:38 ]
あ、それから説明サイトは、、、、

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


793 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 01:55:13 ]
VBAで練習用にマインスイーパ作った

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



794 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 02:17:08 ]
>>793
ゲーム作って勉強したいならこんなんあるみたいよ。
www.amazon.co.jp/gp/product/4844326864/

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