1 名前:既定のプロパティさん mailto:sage [2012/01/29(日) 00:05:13.16 ] 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/ 14 pc12.2ch.net/test/read.cgi/tech/1262748898/ 15 pc12.2ch.net/test/read.cgi/tech/1271261239/ 16 hibari.2ch.net/test/read.cgi/tech/1280045912/ 17 hibari.2ch.net/test/read.cgi/tech/1289182437/ 18 hibari.2ch.net/test/read.cgi/tech/1298240666/ 19 hibari.2ch.net/test/read.cgi/tech/1305754555/ 20 hibari.2ch.net/test/read.cgi/tech/1312435844/ 21 hibari.2ch.net/test/read.cgi/tech/1316931607/ 前スレ: Excel VBA 質問スレ Part22 toro.2ch.net/test/read.cgi/tech/1322400978/
49 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 08:01:58.10 ] 詳細な仕様を知っている>>48 がいると聞いて
50 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 08:18:33.01 ] >>49 いや所詮草ガキだから
51 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 22:23:01.17 ] 草=複数の連続する"w" 1個の場合、複数でも連続でもないから、実は草ではない
52 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 22:49:35.37 ] >>51 さすが小学生だな 目のつけどころが違う
53 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 23:18:44.34 ] >>51 それは単草といって草の一種なのよ
54 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 23:34:57.87 ] マクロから別名保存のダイアログを出して、ユーザーにブックを保存してもらおうとしているのですが、 ダイアログおw表示させた時に初めての保存ならマイドキュメント、2回目以降なら前回のフォルダーを 表示されるようにするにはどうすればいいでしょうか? よろしく御願いします。
55 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 02:11:09.99 ] >>54 まず仕様をしっかり確定させないとプログラミングはできないぞ 初めてかどうかはどうやって判別するんだ? 前回のフォルダはどこにどうやって保存するんだ? これが答えられない(わからない)ってなら、もうちょっと詳しく状況を書かんとなんとも言えん
56 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 06:32:53.23 ] >>54 初めての保存→直接Excelを起動しての作成 2回目以降→既存のBookを呼出し修正保存 意味はこれで合っている? 1年1組成績表フォルダの1月成績結果というBookを呼出して新規作成を選んだ時の保存先もやはりマイドキュメント? 或いは2月成績結果にBook名に流用変更して保存する場合は?
57 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 06:16:46.60 ] >>53 残念、ハズレ というか、そもそも「単草」なんてないから 草=複数の連続する"w" 数が複数と定義されているので、単数を表す接頭語を付けることは無い 芝="w"そのものであり数は関係ない 数が定義されていないので、数を表す接頭語を付けることもある->単芝、複芝 「単草」ってのは君と同じく、単芝と草を混同した勘違い君が 思いつきで口にするだけで、定義としては存在していない
58 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 07:16:08.51 ] >>57 どっちでもええやん 言葉とはそういう勘違いから定着するもんだよ 正しい日本語は〜と言ってる学者連中はただの馬鹿だぞ もう広まってる用法ってのは正しいものとしていかんと
59 名前:デフォルトの名無しさん [2012/02/04(土) 07:16:34.18 ] >>57 そもそも「草」とか「芝」とかが定義されてるってどこで? 少なくとも非ネットの日常生活においてwを草とか芝とか言わない訳だが。 単にネット上のコミュニティーで認知されてると「君個人が認識してる」だけでしょ。 だったら「単草」だっておkじゃないの? その辺の線引きが曖昧すぎだよ ちなみに>>53 ではありません。 草とか芝の定義とやらにも興味ないです
60 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 08:03:57.05 ] ネタ解説に釣られ杉wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
61 名前:デフォルトの名無しさん [2012/02/04(土) 09:02:23.24 ] 言い負かされるとネタで逃げる奴
62 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 09:14:49.65 ] かまうなよ これは僕はレス乞食ですって自己紹介をしてるだけなんだからwwww
63 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 10:15:29.22 ] >>58 いい訳必死だな あのさ、誤用と、新語や新たな言い回しを一緒くたにしてないか? 別に既存の日本語以外は使っちゃだめとは言わないけど、 間違いを内包する言葉までまとめて「定着すればそれは正しい」なんて言うのはただの馬鹿だぞ wを芝と呼ぶのは良いが、wをエックスと呼ぶのは明らかな間違いだろ >>59 > 「w」の文字が並ぶ様子が「雑草が生えているように見える」というところから、 ~~~~~~ > 「w」を多数並べて笑いを表現する行為を「草を生やす」と呼ぶ場合がある。 ~~~~~~~~~~~~~ > 草 - ネットスラングでwwwwwwwのこと。 > 草:インターネットスラングのひとつ。(笑)の略であるwを多数書き連ねることで蔑笑を表したもの。 ~~~~~~~~~~~~~~~~~ どこを見ても、「並ぶ」「多数」「書き連ねる」と複数であることを説明し、例としても7連のものが上げられている 因みに上記は独断と偏見入り交じる個人サイトの記事ではなく、ウィキペやニコペなど大手の手がける辞典の記事ですよ
64 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 10:42:23.74 ] 荒らすなら他へ行け、馬鹿
65 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 11:04:08.52 ] こういう話題しかレスできないんだろ。 スルーしとけ。
66 名前:デフォルトの名無しさん [2012/02/04(土) 11:44:22.68 ] wikiが定義ってアホかと
67 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 13:21:17.58 ] 広辞苑だって出版された当時のスラングを個人の独断で大量に収録してんのに それは信頼してWikipediaをバカにする男の人って本質がわかってないってゆーか、頭悪いよね
68 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 13:41:55.07 ] 反射的に wiki を馬鹿にする奴もどうかと思うが、 広辞苑が個人の判断で作られてるって、これまた 頭悪い以前のアホが来たな。
69 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 17:37:20.46 ] wikiをバカにしてるんじゃなくて、wikiがネットスラングの定義だって言ってるやつをバカにしてるんじゃないかな
70 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 18:56:03.91 ] まあ結論は出たみたいだから、もう終わりにしようぜ。
71 名前:54 mailto:sage [2012/02/04(土) 19:32:32.70 ] >>55-56 レス、ありがとうございます。 返事が遅くなってすみません。 ユーザーフォームに保存用のボタンを貼って、保存しようとしています。 保存を行った時に保存先フォルダーの記憶用変数を用意して、その変数が 空なら初めての保存、空白以外なら保存用ダイアログを表示した時にそのフォルダーが 表示したいという事でした。 変数に取り込めれば、フォームを閉じる際にiniファイル等に保存して次回以降は フォルダー選択の手順を省けると思いました。 よろしく御願いします。
72 名前:54 mailto:sage [2012/02/04(土) 19:55:05.76 ] 書き忘れました。 保存先記憶用変数が空の場合は、保存先ダイアログ表示時の フォルダーはExcel任せでも良いです。 よろしくお願いします。
73 名前:デフォルトの名無しさん [2012/02/04(土) 20:05:32.51 ] iniファイルへの書き込みや読み込みはAPI使うっての知ってますか? まぁ単純にテキストファイルのオープンで読み込み書き込みでも出来なくはないだろうけど
74 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 20:16:21.93 ] >>72 で、何がわからないの?
75 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 21:11:43.87 ] >>71 chdir 前回保存先 名前を付けて保存ダイアログ表示 今回保存先を選択 非表示シートにcurdir(今回保存先)を書きみ保存 名前を付けて保存
76 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 23:05:00.06 ] 複数のブックの一部を読み取っていくマクロを書いているのですが 非表示・バックグラウンドでブックを開くにはどうしたら良いのでしょう? ググったりしていろいろ試してみたのですが、どうしても一瞬表示されてしまいます。 マクロは Application.ScreenUpdating = False Set _ActiveSheet = ActiveSheet Set book = Workbooks.Open(PATH) book.Windows(1).Visible = False Call _ActiveSheet.Activate() Application.ScreenUpdating = True というようにしています。 また、ブックのオープンに時間がかかっているため、非同期でブックをオープンしてそれをキューに放り込んで行きたいのですが、 こういったことはどうやってやれば良いのでしょう?
77 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 23:20:48.95 ] >>71 ini ファイルじゃなくて、ブック自体に覚えさせることもできるよ。 Option Explicit Const PropertyName As String = "SavedFolder" Sub Macro1() Dim SavedFolderProperty As DocumentProperty Set SavedFolderProperty = Nothing Dim Index As Integer With ActiveWorkbook.CustomDocumentProperties For Index = 1 To .Count If .Item(Index).Name = PropertyName Then Set SavedFolderProperty = .Item(Index): Exit For End If Next End With With Application.FileDialog(MsoFileDialogType.msoFileDialogSaveAs) .FilterIndex = 2 If SavedFolderProperty Is Nothing Then .InitialFileName = "" Else .InitialFileName = SavedFolderProperty.Value End If .Show If SavedFolderProperty Is Nothing Then ActiveWorkbook.CustomDocumentProperties.Add PropertyName, False, MsoDocProperties.msoPropertyTypeString, .SelectedItems.Item(1) Else SavedFolderProperty.Value = .SelectedItems.Item(1) End If .Execute End With End Sub
78 名前:2000 mailto:sage [2012/02/05(日) 02:30:18.27 ] >>76 > Application.ScreenUpdating = False > Set _ActiveSheet = ActiveSheet > Set book = Workbooks.Open(PATH) > book.Windows(1).Visible = False > Call _ActiveSheet.Activate() ActiveWorkbook.Close > Application.ScreenUpdating = True
79 名前:デフォルトの名無しさん [2012/02/05(日) 17:31:56.30 ] エクセルの関数について質問です。 B1セルに10が入っていたらA1セルに100と返し、 〃 11か12、13のいずれかの数字が入っていたらA1セルに200と返し、 〃 14が入っていたらB1セルに300と返し、 〃が空欄もしくは、10.11.12.13.14以外の数字が入っていたら100と返す 数式を組みたいのですがIFとORを組み合わせてもうまくいきません。 どなたかご教授頂けますでしょうか。
80 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 17:38:45.19 ] それをVBAでやりたいってことかな?
81 名前:79 [2012/02/05(日) 17:43:45.11 ] >80 いえ、違います。 エクセル上で上記の数式を完成させたいだけです。
82 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 17:46:29.32 ] >>81 だったら Excel総合相談所 100 toro.2ch.net/test/read.cgi/bsoft/1325935411/l50
83 名前:79 [2012/02/05(日) 17:50:34.95 ] あ、スレ違いでしたね。 ちょっとこっちで質問してみます。
84 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 03:30:45.14 ] 同一コードなのに、コードのキャッシュでもされてるのか、結果不定で「?」なときがあると思いますが、そんな時の対処方法はありますか?
85 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 04:16:29.46 ] 構文エラーを起こす
86 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 05:30:54.13 ] >>84 プログラムとは… 自分が思った通りに動く物ではない 自分が書いたとおりに動くのである つまり結果が自分の希望に反して不定になるのは書き方が悪い。はっきり言えば間違ってる よく見直せ
87 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 06:58:44.08 ] Excel2003です セルの内容でDBに更新を行う処理です Set crs = New ADODB.Recordset crs.CursorType = adOpenDynamic crs.LockType = adLockOptimistic crs.CursorLocation = adUseClient crs.ActiveConnection = cn ' sSQL = "" sSQL = sSQL & "SELECT *" sSQL = sSQL & " FROM WSEL" sSQL = sSQL & " ORDER BY WSEL.Chusyutu" crs.Source = sSQL crs.Open ' Do Until crs.EOF : DBの項目にセット処理 : crs.Update ←エラー発生 crs.MoveNext Loop crs.Close 1/2
88 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 06:59:45.09 ] 2/2 DBはMySQLをODBCで使用しています Updateのところでエラーが発生します 実行時エラー '-2147217864 (80040e38)': 行が見つからなかっため、更新できません。列の値は最後に読み込まれた後で変更された可能性があります。 OpenしてからUpdateまでただ項目をセットしているだけでカーソルを移動させていません 項目のセット処理を削除するとエラーは出ません ただの ○○=×× という処理でカーソルが移動するとは思えないのですがどんな問題があるのでしょうか?
89 名前:デフォルトの名無しさん [2012/02/06(月) 11:02:10.59 ] ADOのUpdateコマンドではなくSQLのupdate文を その例で言えば crs.Execute updateのsql文 という書き方でいつもExcelからmysqlに対してやってる そのやり方ではどうなの? まぁ続けるとスレ違いと騒ぎ出す野郎が多そうだから mougのDB板で聞いてみたら?
90 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 20:30:01.60 ] >>89 レスどうもです >crs.Execute updateのsql文 この方法でやってみます もし上手くいかなかったらDB板で聞くことにします ありがとうです
91 名前:84 mailto:sage [2012/02/07(火) 02:38:18.51 ] >>85 なるほど。ありがとうございます。 >>86 ワロタ
92 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 04:59:35.62 ] それ主キーがないとかで行を特定できてないだけじゃないのか
93 名前:デフォルトの名無しさん [2012/02/07(火) 12:04:22.02 ] 質問です。 「初項(セル B3 の値)と公差(セル C3 の値)を元にして, セル範囲 B5:G5 に等差数列の値を入力する マクロ「等差数列」を定義せよ」 という課題があるのですが、何から手を付ければいいのか分かりません。 よろしければご教授お願いします。
94 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 12:13:41.21 ] 公式にぶちこめ
95 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 15:15:08.32 ] >>93 おっぱい見せて Option Explicit Private Sub マクロ等差数列() Dim 初項 As Double Let 初項 = Application.ThisWorkbook.ActiveSheet.Range("B3").Cells(1, 1).Value Dim 公差 As Double Let 公差 = Application.ThisWorkbook.ActiveSheet.Range("C3").Cells(1, 1).Value Dim 数列1番目 As Double Let 数列1番目 = 初項 Application.ThisWorkbook.ActiveSheet.Range("B5").Cells(1, 1).Value = 数列1番目 Dim 数列2番目 As Double Let 数列2番目 = 数列1番目 + 公差 Application.ThisWorkbook.ActiveSheet.Range("C5").Cells(1, 1).Value = 数列2番目 Dim 数列3番目 As Double Let 数列3番目 = 数列2番目 + 公差 Application.ThisWorkbook.ActiveSheet.Range("D5").Cells(1, 1).Value = 数列3番目 Dim 数列4番目 As Double Let 数列4番目 = 数列3番目 + 公差 Application.ThisWorkbook.ActiveSheet.Range("E5").Cells(1, 1).Value = 数列4番目 Dim 数列5番目 As Double Let 数列5番目 = 数列4番目 + 公差 Application.ThisWorkbook.ActiveSheet.Range("F5").Cells(1, 1).Value = 数列5番目 Dim 数列6番目 As Double Let 数列6番目 = 数列5番目 + 公差 Application.ThisWorkbook.ActiveSheet.Range("G5").Cells(1, 1).Value = 数列6番目 End Sub
96 名前:デフォルトの名無しさん [2012/02/07(火) 16:41:05.20 ] すみません、ワードのVBAについてはどこか質問スレってありませんでしょうか?
97 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 17:30:37.03 ] >>96 専門スレはないのでここで聞いてみる Word(ワード)総合相談所 Part21 toro.2ch.net/test/read.cgi/bsoft/1319313721/
98 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 17:46:04.08 ] ない 場違い承知・まともな回答返ってこない前提でここかパワポVBAスレッドで聞いてアレンジするか ググって見つかる掲示板利用するしか
99 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 17:48:36.97 ] (*ノノ)イヤン
100 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 17:51:41.95 ] >>95 >おっぱい見せて さろんへ行け。
101 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 17:51:42.53 ] VBEで入力した全角文字が片っ端から自動で確定されて日本語入力できないんですが、仕様ですか?
102 名前:デフォルトの名無しさん [2012/02/07(火) 21:11:34.07 ] >>97-98 ありがとう、ダメ元ですがエクセル場合はこーする、でも構わないので聞いてみます。 検索対象文字列の手前に改行を入れる、というVBAをつくろうとしています。 物:いちご物:みかん物:バナナ となってる文章を 物:いちご 物:みかん 物:バナナ と整形したいため、「物:」を検索し、その手前で改行を入れるVBAを作りたいです。 以下は自分で作ってみたものの、物:そのものを消して改行を3発入れてしまう駄作です。 Sub 検索() With Selection.Find .Text = "物:" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchWildcards = True Do While .Found = True If .Execute(FindText:="物:", Forward:=True, Format:=True) = True Then Selection.TypeParagraph Selection.TypeParagraph Selection.TypeParagraph Else End If Exit Do Loop End With エクセルならこーする、ワードは知らん。でも構いませんのでご教示頂けると幸いです。
103 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 21:24:17.08 ] Selection.TypeParagraphが三つあるから改行がみっつ入るんじゃないのか? それひとつにしてそのあと"物:"追加すればいいんじゃね つか物:を置換してマクロ記録すればすぐわかるような
104 名前:デフォルトの名無しさん [2012/02/07(火) 21:36:32.82 ] >>103 回答ありがとうございます。 例で出したソースは例えで、「物:」実際は数字や日付、名前のような動的なものが入ります。 なので静的に「物:」を後から足すという手法が使えません。 さらに、実際は改行は1発ではなく、間に3行欲しいので3発入れる必要があります。 例えが下手で申し訳ありません。
105 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 21:48:44.82 ] データの整理をVBAで行うことを考えている初心者です VBAを試しに書いて実行してから保存をしてみたところ、VBAによって行われたシート側の改変まで保存されてしまうようなのですが、 コードの部分だけを保存する方法はないでしょうか?
106 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 21:51:57.10 ] >>93 斜め上から Sub 等差数列() Range("B5") = Range("B3") Range("C5") = Range("B3") + Range("C3") Range("B5:C5").AutoFill Destination:=Range("B5:G5") End Sub
107 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 21:57:15.58 ] >>105 VBAを行うファイルとデータファイルとを別々にスレばいい。 今は同じブック内でやってんでしょ?
108 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 21:59:38.02 ] >107 なるほど、それは盲点でした どうもありがとうございます
109 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 22:15:08.83 ] >>106 オートフィルメソッドなんか使わんでも数式は代入だけでコピーできる Sub 等差数列() Range("b5") = "=b3" Range("c5:g5") = "=b5+$c$3" End Sub さらに短かく Sub 等差数列2() Range("b5:g5") = "=$b$3+$c$3*(column()-2)" End Sub
110 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:20:14.94 ] >>109 それ 94 の方法でしょ
111 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:50:08.62 ] >>102 >>97 または mougでもいけばいいんじゃない With Selection.Find Replacement.ClearFormatting .Text = "物" .Replacement.Text = vbCr & "物" .Execute Replace:=wdReplaceAll End With
112 名前:デフォルトの名無しさん [2012/02/08(水) 00:33:54.14 ] >>95 ,>>106 ,>>109 ,>>110 の方々、ありがとうございます。とても助かります。 もうひとつ質問があるのですが、 ・選択したセル範囲に対して、 a.空白セルの場合には背景色を黄色( RGB(255,255,0) )にする b.空白でないセルの場合は背景色を色なし( xlColorIndexNone )にする マクロ「チェック」を書きたいのですが、どのようにすればいいのでしょうか。
113 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 03:01:53.56 ] >>112 順番は逆だが気にするな 中学か高校の情報の授業なんだろうが先生が期待している回答ではないかと Sub チェック() With Selection .Interior.Pattern = xlNone .SpecialCells(xlCellTypeBlanks).Interior.Color = RGB(255, 255, 0) End With End Sub
114 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 03:16:33.90 ] >>112 Sub チェック() Selection.Interior.Color = -4142 Selection.SpecialCells(4).Interior.Color = 65535 End Sub
115 名前:デフォルトの名無しさん [2012/02/08(水) 04:11:01.60 ] >>111 スレチの質問にヒントありがとうございます。 しかし実際は>>104 なので、"物"とすることができません。 具体的には2ちゃんのレス番、名前欄手前に3つ改行を入れたいのです。 Sub TEST() With Selection.Find .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True .Text = "[0-9]{1,3} :* ??:??:??.?? ID:????????" .Replacement.Text = vbCr & vbCr & vbCr & "ここに何か". .Execute Replace:=wdReplaceAll End With End Sub 検索結果をそのまま持ってくるような関数は無いでしょうか? 上記"ここに何か"部分にそれを入れれば上手く動きそうな気がします。
116 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 07:28:55.58 ] >>115 >>97
117 名前:デフォルトの名無しさん [2012/02/08(水) 16:02:40.64 ] >>113 ,>>114 ありがとうございます!
118 名前:デフォルトの名無しさん [2012/02/08(水) 16:14:10.84 ] >>116 ありがとうございます。>>111 さんに教えて頂いたmougにて有用な回答を得て解決出来ましたので エクセルでも応用が利くかもしれないので、方法を貼っておきます。 .Replacement.Text = "^p^p^p\1" とすることで、\1が置換後の文字列をそのまま使ってくれる事を教わりました。 これで解決することが出来ました。 以上です。ご回答頂き本当にありがとうございました。
119 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 23:04:47.66 ] お邪魔します。 OS:WinXP-SP2 Ver:Excel2002です 目的:シートAとBの特定範囲を一括して印刷プレビュー Sheets(Array("A", "B")).Select Range("A1:F59").Select Selection.PrintPreview Sheets("C").Select と入れてシートAとBのA1:F59の印刷プレビューを開きたいのですが この命令を実行するとシートAのA1:F59のプレビューしか開けません。 シートAとBを一括してプレビューさせるには何が足りないのでしょうか?
120 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 23:58:52.00 ] >>119 ActiveWindow.SelectedSheets.PrintPreview
121 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 00:17:23.02 ] >>119 Worksheet オブジェクト(普通のシート)には PrintPreview メソッドが存在する、よってシートを選択してプレビューできる sheets オブジェクト(複数のシートを保持できる)には PrintPreview メソッドが存在する、よって複数のシートを選択してプレビューできる range オブジェクトには PrintPreview メソッドが存在する、よって範囲を選択してプレビューできる range オブジェクトは同一シート内なら複数の範囲を保持できる、よって同一シート内なら複数の範囲をプレビューできる ただし、Excel には複数のシートをまたがる複数の Range を保持できるオブジェクト自体が存在しない そのため、それに対応する PrintPreview メソッドも存在しない たぶん
122 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 00:36:45.70 ] >>119 PageSetupを変更して良いなら ↓はどう? Sheets("A").PageSetup.PrintArea = "A1:F59" Sheets("B").PageSetup.PrintArea = "A1:F59" Sheets(Array("A", "B")).PrintPreview
123 名前:119 mailto:sage [2012/02/09(木) 11:32:11.25 ] >>120-122 ありがとうございました。 最終的にこうなりました。 Sub 印刷プレビュー() 'セルB55の数値からシート印刷か部分印刷かを判断 If Range("B55") <> "" Then 'B55に数値が存在するならばシート印刷 Sheets(Array("請求書", "見積書")).PrintPreview Else 'B54に数値が存在しなければ部分印刷 Sheets("請求書").PageSetup.PrintArea = "A1:F59" Sheets("見積書").PageSetup.PrintArea = "A1:F59" Sheets(Array("請求書", "見積書")).PrintPreview '印刷範囲を初期化 Sheets("請求書").PageSetup.PrintArea = "A1:F119" Sheets("見積書").PageSetup.PrintArea = "A1:F119" End If End Sub
124 名前:デフォルトの名無しさん [2012/02/09(木) 17:07:00.03 ] Dim 変数 as Range このようにオブジェクト変数を使いセルを代入すると その情報の中にそのセルの上位のシートやブックも一緒に保存されてるんですか?
125 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 18:46:47.98 ] >>124 たしかParentプロパティとかに入ってたと思う。
126 名前:124 [2012/02/09(木) 19:08:28.56 ] Parentプロパティって何でしょうか? つまりそのRange型変数には入ってるってこと? その特定のセルの場所を保存するには ブック型変数(Dim〜as Workbook)、シート型変数(Dim〜as Worksheet)、セル型変数(Dim〜as Range)の3つが必要かと思ってたけど セル型ひとつで済むならかなり楽だけど、違うのかな?
127 名前:125 mailto:sage [2012/02/09(木) 19:41:53.50 ] たとえば、こんな風にやってみると レンジ型変数からシート名とブック名も取得できる でもこんなことするより シートやブックもオブジェクト変数に代入しちゃう方が早くないか? Sub test() Dim Rng As Range Set Rng = ThisWorkbook.Sheets(1).Cells(1, 1) Debug.Print Rng.Parent.Name Debug.Print Rng.Parent.Parent.Name End Sub
128 名前:125 mailto:sage [2012/02/09(木) 19:49:11.26 ] >>126 ごめん、後半読んでなかった セル範囲の指定をRange型変数ひとつでできないか、という話だったのね。 Range型変数に代入されたセル範囲はRange型変数だけで特定できるから そういう意味ではWorkBook型やWorkSheet型の変数は不要だよ。 てっきりブックやシートの指定もレンジ型一つで全部済ませたい ってことかと思ってたよ (>>127 で書いたとおりそれもできることはできるけど、 記述が長くなるからあんまりメリットを感じない。)
129 名前:デフォルトの名無しさん [2012/02/09(木) 22:17:32.76 ] バイナリファイルを読み込んでデータの中の文字列を探したいと思ってます。 バイト配列と文字列を比較するためにしなくてはいけないのですが、 型を合わせる方法がわかりません。 バイト配列から文字列、また 文字列からバイト配列に変換する方法を教えてください。 よろしくお願いします。
130 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 23:42:11.88 ] >>129 バイナリファイルを文字列に変換して処理する例(すべてのバイトをを &H0000〜&H00FF のUnicode文字として変換) Const adTypeBinary = 1 Sub Foo() bin = LoadBin("D:\misc\a.txt") n = GetBinSize(bin) Text = "" For i = 0 To n - 1 Text = Text + ChrW(CodeAt(bin, i)) Next index = InStr(Text, ChrW(&HFF)) MsgBox "最初に見つけた &HFF の位置: " + CStr(index) index = InStr(Text, "hello") MsgBox "最初に見つけた hello の位置: " + CStr(index) End Sub Function LoadBin(path) Set stm = CreateObject("ADODB.Stream") stm.Type = adTypeBinary stm.Open stm.LoadFromFile (path) LoadBin = stm.Read() stm.Close End Function Function GetBinSize(bin) GetBinSize = LenB(bin) End Function Function CodeAt(bin, index) CodeAt = AscB(MidB(bin, index + 1, 1)) End Function
131 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 23:44:26.34 ] >>129 >ANSI 形式のバイト型配列を文字列に変換する場合は、StrConv 関数を使用してください。 >Unicode 形式の配列を変換する場合は、代入式を使用してください。 以上 StrConv 関数のヘルプから それ以外の文字コードだった場合はVBAだけで簡単にやる方法は多分ない
132 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 00:19:32.83 ] 文字コードによるけど、バイナリファイルだって最初っからテキストモードでオープンすりゃええがな
133 名前:126 [2012/02/10(金) 00:29:11.59 ] >>127 >>128 すばらしい解説ありがとうございます。 なるほど、Rangeでもシートやブックの情報を裏で持ってたんですね。 頭スッキリしました。 こういうスッキリ感がプログラムという複雑化しやすいことを扱うにはものすごく重要ですしね。 ということはRangeのオブジェクト変数はものすごく便利ですね。
134 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 00:53:51.04 ] 間違ってた ○ChrW ×Chr
135 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 00:55:28.19 ] >>134 は>>130 についてです
136 名前:129 [2012/02/10(金) 01:23:07.49 ] >>130 >>134 >>135 具体的なサンプルありがとうございます。 SJISの場合はChrでUTFの場合はChrW を使えばよいのでしょうか? >>131 たしかSJISだったと思うのでStrConvを使えば 比較できるということですね。 ヘルプを確認してみます。 >>132 テキストモードでオープンすると正しく取得できない 値があるのでバイナリモードでオープンする方法を検討しています。
137 名前:130 mailto:sage [2012/02/10(金) 01:44:11.61 ] >>136 >SJISの場合はChrでUTFの場合はChrW 違う ChrWは単なる間違い 130の例で Shift_JIS の "あ" を検索したいなら、 Chr(&H82) + Chr(&HA0) を検索する必要がある 面倒だけど、その代わりバイト並びさえ分かっていれば変換による情報落ちの心配なしにどんなコードでも処理できる、という例
138 名前:デフォルトの名無しさん [2012/02/10(金) 11:13:23.28 ] VBAの基本的な文法はマスターしたのですが Error処理のしかた プロシージャのCallの呼び方 きれいなコードの書き方 イミディエト窓の使い方 バグフィックスのしかた など、普通の入門書にはほとんど書かれていないこともマスターしたいです そのためのいい本はありますか?
139 名前:デフォルトの名無しさん [2012/02/10(金) 13:05:03.46 ] これは正しいですか↓ ------------------------------------------------- LoadするとInitializeイベントが発生して、 ShowでActivateイベントが発生する。 HideするとDeactivateイベントが発生して、 UnloadでTerminateイベントが発生する。 LoadしないでShowすると自動的にLoadされてShowするし、 HideしないでUnloadしても自動的にHideされてUnloadする。
140 名前:デフォルトの名無しさん [2012/02/10(金) 13:07:14.91 ] >>139 神! こういう整理された情報こそ実用的であり非常に有用。 みんなも>>139 みたいな情報を共有しあうために貼り付けようじゃないか!
141 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 13:34:27.98 ] すくなくとも >ShowでActivateイベントが発生する。 >HideするとDeactivateイベントが発生して、 は正しくない Showした結果アクティブになればActivateイベントが発生するし Hideした結果アクティブじゃなくなればDeactivateイベントが発生する HideしたからってかならずDeactivateが発生するわけじゃない
142 名前:デフォルトの名無しさん [2012/02/10(金) 14:42:14.40 ] Workbooks(x)のxを そのworkbookの名前から取り出す方法を教えてください。
143 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 15:20:21.90 ] 取り出す必要なんてない。
144 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 16:14:52.80 ] >>142 WorkbookオブジェクトにはIndexプロパティがないので直接求めるのは無理 Workbooksコレクションをループで順番に見ていくしかない けど>>143 の言う通り、インデックス番号なんかわからなくてもプログラムは書ける 何がやりたいの?
145 名前:142 [2012/02/10(金) 16:31:35.11 ] 長いコードを短くしたいの。
146 名前:デフォルトの名無しさん [2012/02/10(金) 16:33:32.37 ] コピペをVBAコードて書く場合、 なぜ対象オブジェクトはシートなんですか? 普通に考えてセルであるべきだ。 納得される説明・理由が聞きたいのですが。
147 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 17:11:39.81 ] >>145 短くしたいなら、 dim book as workbook set book = workbooks("bookname.xls") '以降bookを使ってコードを書く の方が良くない?
148 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 17:34:20.86 ] >>145 それならオブジェクトを変数に入れた方がいい 短くなるだけでなく、処理も少し軽くなる 具体例は>>147 コードを短くする方法はいくつかあって、Withを使うのも効果的
149 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 19:10:47.12 ] >>146 そんなことをここで聞かれてもな マイクロソフトに聞け ただ、おまえが普段どんなコードでコピペしてるかしらんが 少なくとも俺はコピーするときはRangeが対象なことがほとんどだし Rangeに張りつけたければPasteSpecialも使えるぞ