1 名前:デフォルトの名無しさん [2007/12/12(水) 17:27:44 ] ExcelのVBAに関する質問スレです 質問前に 【 >>2-3 】 あたりを良く読むこと 前スレ pc11.2ch.net/test/read.cgi/tech/1189814602/
2 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:28:23 ] ★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。 ★2 ExcelのVBA以外の部分に関する質問はNGです。 但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。 ★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。 VBAとは、『Visual Basic for Application』の略で Application ├Workbooks |└Workbook | ├Worksheets | |└Worksheet というApplication以下のオブジェクトを、VB言語で操作するものを指します。 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。 ★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。 ★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
3 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:29:01 ] ・過去スレ 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/
4 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:29:50 ] テンプレの最中にuncoを挿入する
5 名前:デフォルトの名無しさん [2007/12/12(水) 17:53:17 ] セル1に「1」と入力するとセル2に「A」と出力,同様に「2」と入力すると「B」と出力するようにするためにはどうすれば良いですか? どなたか教えてくださると助かりますm(_ _)m
6 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 18:04:32 ] いつまでやるんだよ・・・
7 名前:前スレのクレクレ君 [2007/12/12(水) 18:16:45 ] いや、私じゃないですよ
8 名前:デフォルトの名無しさん [2007/12/12(水) 18:31:18 ] 前スレの>>1000 へ hoge = Selection.Value のSelectionが結合セルだと2次元配列になる。 結合セルをSelectしないでhoge = Range("A1").Value とすれば2次元配列にならない。 2次元配列なら MsgBox hoge(1,1) としないと動かないが、2次元配列じゃなければ MsgBox hoge で動く。
9 名前:前スレのクレクレ君 = 1000 [2007/12/12(水) 18:37:44 ] >>8 な、なるほど!
10 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 18:48:01 ] >5 セル2に式「=CHAR( セル1 + 64 )」をいれときゃいいんでね? VBAは関係ないけど。
11 名前:デフォルトの名無しさん [2007/12/12(水) 19:08:09 ] 1. 1900年から2008年までのうるう年を見つけて、一個のメッセージボックスにすべてのうるう年を表示するようにプログラムを作成する。 2. 下記の数値の和を繰り返し文を使用して算出しなさい。 1+2+3+4+……+100 1の二乗+2の二乗+3の二乗+……+20の二乗 1の三乗+2の三乗+3の三乗+....+20の三乗 これをExcelVBAを使って解かなきゃいけないんだけど全くわかりせん。 どなたか教えていただけませんでしょうか。
12 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 19:21:00 ] >>2 >★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み > コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 > ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
13 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 19:46:39 ] >>11 1. MsgBox 閏年 & 閏年 & 。。。 2. 1^2+2^2+3^2 。。。 +20^2
14 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:23:03 ] Sub 空白セル削除() Worksheets("Sheet1").Activate For i = 1 To 1000 If Cells(A, i) = "" Then Cells(A, i).Delete shift:=xlUp End If Next End Sub これのダメなところを教えてください。 エラーが出るんですよね
15 名前:5 mailto:sage [2007/12/12(水) 21:33:13 ] >>10 おおっ ありがとうございます!! スレ違いでしたねすみません
16 名前:デフォルトの名無しさん [2007/12/12(水) 21:39:20 ] エラーで止まったところをヘルプで調べないお前の姿勢がダメだろう。
17 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:48:03 ] >>16 ワラタw >>14 セルズA,iを 1,i に変えたらうごいたぜ。 Excel2007 だけどな。
18 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:49:00 ] もはや全部ダメって言い切って良いな
19 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 21:59:26 ] >>18 そうか? Sub 空白セル削除() ここら辺はわかりやすくてよい。
20 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 22:07:00 ] >>16 すいませんでした 以後気を付けます >>17 thx マクロはじめたばっかで基本的な勘違いをしてたぜw >>18 是非参考コードをお願いします。
21 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 22:41:02 ] Mougでも隅から隅まで眺めてこい
22 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 22:57:16 ] なんだ自分ではたいしたコード書けないのにコード乗ってるサイト知ってるだけで出来ると思ってる人間かw
23 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:45:19 ] oshietekun you ga sundara beroberobaa
24 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 20:55:37 ] Rangeのポインタを渡すにはどう記載すればよいでしょうか?
25 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:16:51 ] 逆にRangeの実体を渡す方法があったら教えて欲しい まあインデックスのポインタのことだろうけど
26 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:41:43 ] byvalとbyrefの話?
27 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:37:33 ] Dim Data AS Variant Dim d AS Variant Redim Data(1,20) Redim d(1,60) dには{1,4,3,〜(60個の数値)〜}が入っている kukanにも区間データ(20個)が入っている。 Data(2行目に入れたい)=Worksheetfunction.Frequency(d,kukan) →Data二次元配列の2行目に答えを入れるにはどう記載すればよいでしょうか?
28 名前:デフォルトの名無しさん [2007/12/14(金) 01:08:47 ] userformのspinbuttonでmouseupしたときに押し続けまでカウントされた値を 処理できますか たとえば1から100までアップしたとき changeだと100回処理しなけらばならないので mouseupで100の値についてだけ処理したいのです
29 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 05:42:32 ] マジな回答が欲しいヤツは、とりあえず解読可能な質問をしる
30 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 07:42:42 ] >>27 dに60個のデータって、61個じゃないのか? それにDataもdも整数なのになんでVariant型? それはおいとくとして、ループを回せばいいだろ f = Worksheetfunction.Frequency(d,kukan) For i = LBound(Data,2) To UBound(Data,2) Data(1,i) = f(i + 1,1) Next
31 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 07:52:37 ] >>30 > >>27 > dに60個のデータって、61個じゃないのか? 確かにそのとおりです。 > それにDataもdも整数なのになんでVariant型? 二次元配列を使っているので。配列はVariant型って考えは間違っていますか? > それはおいとくとして、ループを回せばいいだろ > f = Worksheetfunction.Frequency(d,kukan) > For i = LBound(Data,2) To UBound(Data,2) > Data(1,i) = f(i + 1,1) > Next Frequencyの答えは一つの数字ではなく一次元配列でかえってくるので、それを二次元配列Dataに入れたいのです。
32 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 07:57:53 ] >>31 >二次元配列を使っているので。配列はVariant型って考えは間違っていますか? 間違ってる。整数なら普通IntegerかLong >Frequencyの答えは一つの数字ではなく一次元配列でかえってくるので Frequencyの戻り値は1ベースの2次元配列だろ?
33 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 08:09:57 ] 補足しとくが Dim Data() As Long みたいに宣言するんだからな。
34 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 08:20:37 ] もしかしてDataとかdにはセル範囲の値を一括して代入してるのか? だったらVariantでいい。ただRedimは不要。
35 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 08:50:14 ] >>34 > もしかしてDataとかdにはセル範囲の値を一括して代入してるのか? > だったらVariantでいい。ただRedimは不要。 逆です。Dataの値を後でセル範囲に一括して代入します。 Redimは不要なのですか?行や列の数を指定しなくてもいいのですか。
36 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 08:54:53 ] >>32 > >Frequencyの答えは一つの数字ではなく一次元配列でかえってくるので > Frequencyの戻り値は1ベースの2次元配列だろ?えっ!?区間と度数の二次元配列ですか?調べたつもりが。。。 ということはfをあるセル範囲(2×n)に代入すればよいということですね。
37 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 09:28:16 ] >>36 >Redimは不要なのですか?行や列の数を指定しなくてもいいのですか。 Variant型の変数に代入する場合不要ということ。 d = Range("A1:E1").Value みたいなときのことね。 >区間と度数の二次元配列ですか? 度数だけの2次元配列。 >ということはfをあるセル範囲(2×n)に代入すればよいということですね。 2×nじゃなくて1×n 縦じゃなくて横なならTransposeしないと出来ない。 縦1列ならそのまま可
38 名前:デフォルトの名無しさん [2007/12/14(金) 09:58:09 ] vbaのreplace関数って、指定の文字列がない時に何か 値を返すことって出来ます? 置換前の文章と照合するしかにあ?
39 名前:37 mailto:sage [2007/12/14(金) 10:29:12 ] 補足しとくがdとかkukanがセル範囲から取り込んだものなら、そんな配列は必要ないからな。 仮にデータがA1:A61にあり、区間がB1:B20なら f = Worksheetfunction.Frequency(Range("A1:A61"),Range("B1:B20")) でいい。引数を変数にするならRange型だ。 戻り値は区間より一つ多い11x1,の2次元配列になってる。 一つ多いのは区間の最後のデータより大きいもののカウント用
40 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 10:33:22 ] >>38 置換前の文字列と照合するか、先にInStrで調べてからでもいいんじゃない?
41 名前:39 mailto:sage [2007/12/14(金) 10:35:05 ] マチガイ 戻り値は区間より一つ多い21x1の2次元配列な
42 名前:デフォルトの名無しさん [2007/12/14(金) 10:59:42 ] replaceだけ、頭文字が大文字にならないのは仕様ですかw
43 名前:デフォルトの名無しさん [2007/12/14(金) 11:10:28 ] >>40 あ、そうか
44 名前:デフォルトの名無しさん [2007/12/14(金) 16:16:50 ] aaapapaaaaaaapaaaap という文があったとして、 これをp毎に分割するにはどうすればいいでしょうか。 instrでpの場所を探して、その文字数分leftで取り出せばいいと思うのですが もっといい方法は無いでしょうか。
45 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 16:39:59 ] >>44 VB6スレいけ
46 名前:デフォルトの名無しさん [2007/12/14(金) 16:57:07 ] VB6スレって、2バイト文字ばっかりじゃないですか
47 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:32:08 ] >>46 行けばわかる
48 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 18:16:47 ] >>44-46 そんなに目くじらたてなくてもいいんジャマイカ pで分割してセルに書き込むのかも知らんしだろ? つSplit関数
49 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 18:25:14 ] >>42 Replace関数もReplaceメソッドも頭文字は大文字になるぞ? 変数の宣言で使ってるとかプロシージャ名で使ってるとかなんか変なことしてるんじゃない?
50 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:48:14 ] 独学するのにお勧めの書籍ありませんか? プログラミングは初心者です。 かつてHTMLとCSS、javascriptをほんの少しだけ学校の夏期講座で勉強した程度です。
51 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 23:07:13 ] >>50 Excelでお仕事 でぐぐる 「VBA基本」を見る 書籍不要。
52 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:25:54 ] >>51 そこだと変なクセがつかないか? 最近見てないけど、前みたときはあまりいい内容ではなかった。
53 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 10:42:55 ] >>50 VBAエキスパートの参考書をやってから あとはリファレンスとして上記のEXCELでお仕事を参照すればいいと思う
54 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 15:21:49 ] 稚拙なHPを読んで機会損失するコストを考えたら、3,4千円の書籍を購入する コストは非常に安い。
55 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 15:40:30 ] どの言語もそうだけど最終的に書籍はリファレンスだけしか要らなくなる
56 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 18:59:33 ] あのサイトの人、VBAに関してはかなり下手だぞ? VBAのリファレンスにはならねーな。
57 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 19:37:34 ] ほとんどの人が代案を出せずに 一人の出した案を叩くばかりという状況にワロタ まあ、ここの回答陣がVB(A)初心者だったのが 何年前かと考えると… 古すぎてもう売ってないとか 対応バージョンがExcel95とか、 当時はWebとかほとんど無かったとか そもそも他言語から入ったとかだろうから 仕方ないだろうけど。 >>50 まあAmazonの書評でも見るか (これもあてにはならないが、ここよりは…) もしくは適当なVBA本の著者名でぐぐると サイト持ってて入門編を公開している人もいたりする。
58 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:25:06 ] 田中亨おすすめ。 mougの人は嫌い。
59 名前:デフォルトの名無しさん [2007/12/17(月) 10:52:50 ] >>49 replaceは名前としては一切使ってないのですが (過去にそのプロシージャ内で使ったことがあるかも・・・) なぜか、小文字です・・・。 あと、古いExcel97では、replace使えないんですね。ショック・・・ サブルーチンで誰か作ってないかな。
60 名前:デフォルトの名無しさん [2007/12/17(月) 10:59:20 ] >>48 ありがとうございます
61 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 14:47:55 ] >>59 Excel97でもOSが古すぎない限り(古くてもWSHをインストールすれば) ツール→参照設定で 「Microsoft VBScript Regular Expressions 5.5」に参照設定して RegExpオブジェクトの.Replaceを使えば ただしReplace関数より機能は高いが 正規表現な分ハードルも高い。
62 名前:デフォルトの名無しさん [2007/12/17(月) 17:55:16 ] >>61 ウホッ 確かに難しそうだ
63 名前:デフォルトの名無しさん [2007/12/17(月) 18:15:07 ] >>59 横レスだが、折れも、ずいぶん前に、何ヶ月前ぐらいかな? 何かの時にrangeが1カ所だけRangeにならないことがあった。いろいろと試していたときだった。そこだけ、いろいろと書き直しても小文字のままだったので、 折れも同じように、気になって聞いたが、誰も答えようがなかったみたいだった。 チャンと動いておれば、気にしないでオケw
64 名前:デフォルトの名無しさん [2007/12/17(月) 19:04:02 ] *.shapes(1).DrawingObject.Text = *.Cells.Value(1.1) ' ↑(Chart) ↑(Sheet) EXCEL2000だと正常に動作する上記のようなコードがあります。 EXCEL2007だと、 "指定したコレクションに対するインデックスが境界を超えています。" というようなエラーが出てしまいます。 (上記コードをコメントアウトすると正常終了します) 普通のシートのセルの文字列を、グラフシートのラベルにコピーする コードなのですが、2日ほどひたすら検索しましたが、 何が原因なのかがわからない状況です。仕事場からソースを持ち帰ること ができないので、これだけでは解析不能かもしれませんが、 何かヒントでも頂けたら幸いです。よろしくお願いいたします。
65 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 19:58:17 ] マクロを記録して味噌
66 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 20:16:50 ] Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Select Selection.Delete shift:=xlShiftUp で「A列に何も入っていない行」を削除できますが、 「A列およびB列に何も入っていない行」は削除できませんでしょうか? Range("A:B").〜とすると 「A列もしくはB列に何も入っていない行」になってしまいます。 結局for〜nextでCells(i,1).value&Cells(i,2).value=""かどうか調べて、みたいなので 動くことは動いたんだけどなにか簡単な方法はないかと。
67 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:04:20 ] >>64 前後関係意味不明 上限がいいかげんなループの中でShape回してるんジャマイカ? >>66 ない Range("A:B")とやったところで内部的には1次元でしかないので
68 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:35:37 ] ユーザーフォーム(モードレス)を残してワークシート最小化し フォーム上のボタンを押してファイル選択ダイアログをだしているんですが ファイル選択ダイアログがマウスクリックを受け付けてくれません EXCEL 2000だと問題なく動くのですがEXCEL XPだとこの症状がでます 回避策ないでしょうか
69 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:42:18 ] コードさらせアホが。二度手間じゃ
70 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:51:51 ] こんな感じです Private Sub Workbook_Open() Dim oldState oldState = Application.WindowState Application.WindowState = xlMinimized AppActivate "Microsoft Excel" UserForm1.Show vbModeless End Sub Private Sub CommandButton1_Click() Dim fname As String fname = Application.GetOpenFilename(fileFilter:="txtファイル(*.txt),*.txt,txtファイル(*.txt),*.txt", Title:="txtファイルを選択") If fname = "False" Then Exit Sub End If End Sub
71 名前:デフォルトの名無しさん [2007/12/18(火) 12:32:52 ] inputboxを、カイル君や冴子先生のようにするには? とカイル君に聞いても教えてくれなかった。
72 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:56:20 ] モードレスは対応するバージョンがあるぜ
73 名前:デフォルトの名無しさん [2007/12/18(火) 14:14:14 ] inputboxの外観でググっても出ないな。
74 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 17:24:28 ] >>68 何も確認せずにレスするんで恐縮だが、最小化じゃなくて、非表示(App~.Visible)とかじゃダメ?
75 名前:デフォルトの名無しさん [2007/12/18(火) 18:54:33 ] >>65 >>67 ありがとうございました。 マクロの記録で確認しましたところ、shapes〜となるのですが、 そのコードで再度実行すると、やはりそこでエラーになってしまいました。 それからまたいろいろと調べていたところ、下記を参考にして解決いたしました。 やはり、EXCEL2007が原因だったようです。 www2.moug.net/bbs/exvba/20070920000006.htm
76 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 19:33:13 ] コントロールを扱うための知識はコントロールそのものではなく、 実はコレクションってのがVBAの真理だったりする
77 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 22:55:28 ] >>74 指摘のとおりに変えたらEXCEL XPで動きました ありがとうございます 明日EXCEL2000でも確認してみます
78 名前:デフォルトの名無しさん [2007/12/19(水) 05:50:53 ] 特定の範囲内でランダムに1つのセルの値(文字列)だけ残して他を消す(又は表示させない) ようにしたいんですがなにか方法ないでしょうか。 ランダムに複数セルの値を取得する→消去 の流れでいいんでしょうか。 ご教授願います。すれ違いだったらすいません。 *例えばA1〜A5に文字列が入力されていて、マクロを実行したらA1のセルの値のみがのこって他を 消すようにできないかと思います。
79 名前:デフォルトの名無しさん [2007/12/19(水) 09:42:17 ] マクロ歴三日の私が通りますよ Sub rand() Range("D" & 1).Formula = _ "=round(rand(),1)*10" i = Range("D1").Value Range("A" & i).Select makura = MsgBox("are you sure to erase?", vbOKCancel) If makura = vbOK Then Selection.ClearContents End Sub
80 名前:デフォルトの名無しさん [2007/12/19(水) 09:46:00 ] あ、残すのか・・・ 英語とか・・・色々すまん煎ってくるわ
81 名前:デフォルトの名無しさん [2007/12/19(水) 10:06:52 ] Sub rand() yarinaosi: Range("D" & 1).Formula = _ "=round(rand(),1)*10" i = Range("D1").Value If i = 0 Then GoTo yarinaosi Range("A" & i).Select Selection.Cut Range("B" & i).Select ActiveSheet.Paste Range("A1:A10").Clear Range("B" & i).Select Selection.Cut ActiveCell.Offset(0, -1).Select: ActiveSheet.Paste End Sub
82 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 12:15:59 ] >>81 その式だと10になる確率が低いんじゃねーのか? 9になるのはround(rand(),1)が8.5以上9.5未満の1の幅があるが 10になるのは9.5以上で半分の幅しかねーな。 ROUNDなんか使っちゃいかんよ。 Range("D1)..Value = Int(Rnd*10)+1 とすれば1〜10の確率はそれぞれ10パーセントだ。
83 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 12:20:56 ] ちょっと書き直し 9になるのはrand()が0.85以上0.95未満の0.1の幅があるが 10になるのは0.95以上で半分の幅
84 名前:79,81 [2007/12/19(水) 14:14:48 ] >>83 うーむ、なるほど。
85 名前:デフォルトの名無しさん [2007/12/19(水) 17:53:38 ] 絶対パス付きを取得し、変数filepathに、ファイル名をfilenameに入れて、ファイルを開こうとしています。 しかしフォルダ名に空白があると存在しませんとエラーがでます。 openfile filepath & filename どのように書けばよいのでしょうか?
86 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 18:00:58 ] openfileが悪さしてる
87 名前:デフォルトの名無しさん [2007/12/19(水) 18:06:15 ] trimしてみては?
88 名前:デフォルトの名無しさん [2007/12/20(木) 05:13:01 ] htmlの指定したタグの中身を取り出す関数(メソッド?)ってどういうものでしたっけ? GetOuterHtmlみたいな感じの名前でしたが、手元にVBがなく、ググってもでてこない
89 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 07:41:31 ] 分かってないのに分かったような物言いをしたところで間抜けであることは変わらない
90 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 09:53:17 ] >>88 スレ違い
91 名前:デフォルトの名無しさん [2007/12/20(木) 11:06:38 ] 以前質問させてもらった者ですが 1+2+3+4+……+100 この和を繰り返し文を使用して出せというのがいまだにわかりません。 この場合For文を使えばいいんでしょうか? 無知で申し訳ないです。
92 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 11:39:16 ] >>91 スレ違い For文でできる。 どうしても分からなければVBスレで。
93 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 12:07:29 ] dim a(100) as integer for i=1 to 100 a(i) = i next msgbox (a(1) + a(100))/2*100
94 名前:デフォルトの名無しさん [2007/12/20(木) 15:01:54 ] >>90 以前エクセル付属のVBAで使った記憶があるのですが
95 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 15:13:37 ] >>94 Microsoft HTML Object Libraryを参照設定して、F2でMSHTMLを眺めて、ググるなりしろ。 これ以上の質問はVBスレでやれ。
96 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 16:04:23 ] >>93 ワロタw
97 名前:デフォルトの名無しさん [2007/12/20(木) 16:19:13 ] Sub nnn() Dim a As Variant Dim i As Byte Dim sentence As String Dim sentence2 As String '''''''''''''''''''''' Range("A1").Formula = "I am Japanese." a = Array("I", "am", "Japanese", "living", "in", "USA", ".") For i = 0 To 6 sentence = Range("A1").Value sentence2 = Replace(sentence, a(i), "", 1) Next i MsgBox sentence2 End Sub このプログラムで、sentenceをa配列全て使って、 置換したいのですが、 array中の最後の文字しか変換されません。 どうすればよいでしょうか...
98 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 16:32:06 ] >>97 かろうじてExcel要素が混じってるが、基本はExcel関係ないぞ。 Forの行にブレークポイントを設定して、ステップ実行させながら、変数の中を見てみろ。
99 名前:デフォルトの名無しさん [2007/12/20(木) 17:03:25 ] >>98 置換したはずの文字が、ふ、ふ、復活しているよっ!
100 名前:デフォルトの名無しさん [2007/12/20(木) 17:14:26 ] あ、sentence2はsentenceでいいのか。 むずかしい
101 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:53:05 ] とりあえずUSAには定冠詞のTheを付けるように
102 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 19:18:31 ] >>91 学校の宿題だったっけ? >>93 のFor Nextで合格点もらえるよ。