1 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 23:16:33 ] ExcelのVBAに関する質問スレです 前スレ pc11.2ch.net/test/read.cgi/tech/1212587819/ ★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 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。 ★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
183 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:46:16 ] >>181 =>>179 =>>169 =>>こないだの池沼
184 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 23:16:26 ] モーグでも行けよ池沼
185 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 23:40:48 ] で、また169が暴れるのか?
186 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 23:43:52 ] >>181 =>>179 =>>169 =>>184 =>>こないだの池沼
187 名前:デフォルトの名無しさん [2008/09/09(火) 01:33:11 ] XMLファイルをVBAで扱いたいんですけど、そういった方面を勉強できるような書籍はないでしょうか。 「XML入門」みたいな本はたくさん見るんですけど、あれって具体的なコーディングについては記述が無いorごく少ないですよね。。。 あってもPHPとかばっかりだし。。。
188 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 08:48:08 ] 書籍があってもバカじゃどうしようも無い まともな頭があればVBAでCOM(XMLDOM)使ってXML扱うくらい、 ネットの情報だけで事足りる
189 名前:デフォルトの名無しさん [2008/09/09(火) 10:31:32 ] あるセルからあるセルまでソルバーを使うということをやりたいのですが、 ↓のを作ったのですが、出来ません。どうすればいいですか? SOLVERの参照設定はやりました。 Sub Macro1() Dim x As Integer For x = 1 To 5 Range("Cells(x, 3)").Select SolverOk SetCell:=Cells(x, 5), MaxMinVal:=3, ValueOf:="0", ByChange:=Cells(x, 2) SolverSolve Userfinish:=True Next x End Sub
190 名前:y mailto:sage [2008/09/09(火) 19:35:50 ] >>177 173の後半を、もう少し具体的に書きます。 まずループ用の変数rを宣言し、ここでは例として For 〜 Next間を5回繰り返すループを示しておきます。 Dim r as Long For r = 1 to 5 Sheet1.Hyperlinks.Add Anchor:=Cells(r, "a"), _ Address:=Cells(r, "b"), _ TextToDisplay:=Cells(r, "a").Value Next 繰り返しのたびに、rは1, 2, 3, 4, 5と変化していくので、 上のコードでは1〜5行目に対する操作が行われることになります。 初心者の方なら、「VBA デバッグ」などで検索してみて、この過程を 一つ一つ目で確認する方法を身につけると、上達が早くなります。 For r = Inputbox("開始行?") to InputBox("終了行?") とすれば、処理をしたい行の範囲を簡単に指定できますが、 もっと便利にしたければ、自分でも他の方法を色々調べてみてください。 質問する時は、どんなに間違っていてもいいので、とにかく何か自分なりに 調べて考えたコードを貼って、それに対するアドバイスを求めた方がいいですよ。 181のようなことを書くと、>>1 の★5にあるように、「また丸投げか」と 怒りを買ってしまいます。
191 名前:y mailto:sage [2008/09/09(火) 20:01:47 ] >>189 マクロの記録を使って、ソルバーでやりたい作業をマウスでやってみて、 どんなコードが記録されるか確かめてみてください。(>>1 ★5) 189のコードについては、 @単純な構文ミス Range("Cells(x, 3)").Select → Cells(x, 3).Select A目的セルをどこにしたいのか、可変セルをどこにしたいかが不明 です。特に、Aが分からないとアドバイスができません。
192 名前:y mailto:sage [2008/09/09(火) 20:03:56 ] >189 「>>1 ★6」でした。失礼しました。
193 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 20:44:23 ] >>190 ご親切にありがとうございました。 勉強になりました
194 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 22:41:34 ] >>191 すみません 目的のセルがCells(x, 5)で、可変セルがCells(x, 2)のつもりでした。 で、@のやつをやったら出来ました。 ありがとうございました。
195 名前:デフォルトの名無しさん [2008/09/09(火) 22:50:31 ] VBA初心者です 何か作ろうと思うのですが…自分では思いつかないので… 何か問題お願いします。
196 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 22:57:53 ] >>195 このスレを集計してyの貢献度を調査せよ。
197 名前:195 [2008/09/09(火) 23:04:59 ] >>196 ラジャ
198 名前:デフォルトの名無しさん [2008/09/09(火) 23:34:22 ] 式を教えてください。 A列には文章が入っています。 B列には文章に含まれる単語、C列にはコード番号が入っています。 それぞれ数百〜数千行になります。 A列にはB列の単語のいずれかが含まれる場合には、 単語に対応するC列のコードをD列に表示させたいのですが、 どのような式がよいでしょうか。 VLOOLUPやFINDなどを組み合わせてみても上手くいきません。 お手数ですが、どなたか至急お教え願えますでしょうか。
199 名前:デフォルトの名無しさん [2008/09/10(水) 00:31:40 ] 具体的なセルの中身教えろよ このスットコドッコイ
200 名前:デフォルトの名無しさん [2008/09/10(水) 07:26:43 ] A列…デフォルトの名無しさん、具体的なセルの中身教えろよ、このスットコドッコイ B列…デフォルト、セル、スットコドッコイ C列…E46194、H23t55、342421
201 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 07:44:07 ] ここはExcel VBAのスレです
202 名前:デフォルトの名無しさん [2008/09/11(木) 00:16:48 ] XPでExcel2003です c:\aaa 配下にある全てのファイルとサブフォルダを c:\bbb 配下に全てコピーする事は可能ですか? また、サンプルコード等ありましたらヒントを頂けると助かります 色々と探してはいるのですが、いまいちピンとこないので サンプルがあると助かるのですが、、、、 VBAはまだまだ初心者なので未熟者で恐縮です。
203 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 06:12:54 ] >>202 >>1 ★3 ★4
204 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 19:30:31 ] たまにmougヲチするんだけど、痛い回答者が多いのね。
205 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 19:59:47 ] シートにコンボボックスを貼り付けて AddItemで追加した後にシートを Xボタンを押して閉じようとすると 変更を保存しますかと聞かれるんですが このチェックを外す方法ってあります? OSはXPでExcel2003です。
206 名前:y mailto:sage [2008/09/11(木) 20:15:03 ] >>198 文章中の、特定の単語の有無の判定なら、たぶんInStr関数で何とかなると思います。 調べてみて使えそうなら使ってください。 >199にもありますが、具体的なデータが分からないとアドバイスしずらいです...
207 名前:y mailto:sage [2008/09/11(木) 20:17:20 ] >>195 どんな業界で働いている方か分かりませんが、 実務に役立つ知識が増すようなテーマを選ぶと、 何かと都合がいいのではないでしょうか。 為替、株式市況、地価、青果水産物市況など、 ネット上にはたくさんの生データが公開されています。 それらを自動的に取得し、テーマに沿って演算し、 レポートを出力するマクロを組むだけでも、 相当勉強になると思います。 やるのであれば、日々刻々と変化する数字の方が面白いです。 例えばある人は、東京に10数箇所ある中央卸売市場の毎日の市況データを 取得し、各市場の卸売価格差をグラフに出力するマクロを作っていました。 仲買業者なら、どこの市場で買い付けをすれば一番安いか、 逆に生産者なら、どこの市場に出荷すれば一番高いか、 一目で分かるというものです。ちなみに彼は商社に勤めていますが、 似たようなことをしている人は結構いるでしょう。 Excelは基本的にデータ処理の道具なので、何を試すにしても、 まずは題材になるデータを見つけてこなければなりません。 ならば自分が、分析対象として最も興味を覚えるデータを選ぶのがベターです。 その上で、自分のスキルに応じた試行錯誤をしてみればいいと思います。 仮に「VBA解説書に載っている多機能な家計簿を作るんだ」と決意したとして、 自分で小遣い帳をつけているほどの人ならともかく、付属CDに入っている 仮想データを使って作っていくようなやり方は、モチベーションが湧きづらい ように感じます。
208 名前:デフォルトの名無しさん [2008/09/11(木) 22:02:38 ] あれ今日y絶好調だな
209 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 23:07:26 ] >>206 ×しずらい ○しづらい ◎しにくい
210 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 01:38:18 ] >>195 WindowsVBAつくってよ
211 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 03:36:31 ] yには、人生相談にすら答えてくれそうな勢いを感じる
212 名前:y mailto:sage [2008/09/12(金) 20:05:30 ] >>205 「シートを Xボタンを押して閉じようとすると」とありますが、 シートに×ボタンはないので、たぶん「ブックを」のつもりでしょうか。 「変更を保存しますか」というメッセージは、ブックを保存した直後の状態であれば 表示されません。この状態は、WorkbookオブジェクトのSavedプロパティをTrueに することで、強制的に作り出すことができます。 ブックが閉じられる直前に、その操作が自動で行われるようするためには、 ThisWorkbookオブジェクトのコード領域にBeforeCloseイベントを挿入し、 その中でSavedプロパティを操作します。 Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.Saved = True End Sub
213 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 20:44:06 ] うざいな
214 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 20:51:26 ] >>213 お前がな
215 名前:205 mailto:sage [2008/09/12(金) 22:35:11 ] なるほど。Savedプロパティですか。 ありがとうございました。
216 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 00:10:19 ] 確かにうざいわ
217 名前:y mailto:sage [2008/09/13(土) 02:54:40 ] ・・・
218 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 03:49:12 ] 何コイツ
219 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 06:49:48 ] 煽りなんか気にすんな。
220 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 07:14:09 ] 未だに169が粘着してる
221 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 08:56:37 ] >>217 は、マジでうざいなw
222 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 09:06:33 ] まぁ、2chではあまり見ないキャラであることは確かだな。 嫌ならNGしとけ。
223 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 09:25:58 ] 凄い粘着だな。。。おい。
224 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 10:01:34 ] >>218-223 をNG指定した
225 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 11:55:22 ] マクロなんですけど、行挿入のマクロを作りたいんです。 だけど、挿入する行をセルの値から指定したい場合はどうすればよいですか? 例 B2 = 3 3行目と4行目の間に行挿入をするようB2をつかってさせる。
226 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 13:16:55 ] Dim i As Integer i = Range("B2") Rows(i).Insert
227 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 13:18:30 ] これだけでもいけるな Rows(Range("B2")).Insert
228 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 14:07:04 ] >>226-227 助かります、ありがとうございました。
229 名前:y mailto:sage [2008/09/13(土) 16:13:47 ] ・・・
230 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 22:03:03 ] yそろそろコテにしたら?なりすましが出るくらい名が知れてきたんだからさ
231 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 22:16:44 ] yがコテじゃなかったら何だと言うのだ
232 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 22:33:41 ] トリップつけたら?ってことじゃね?
233 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 23:38:26 ] いい加減、yの話題やめろよ
234 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 00:06:42 ] うざすぎ
235 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 03:08:08 ] エクセルのシートに画像をドラッグした時に、指定場所に指定のサイズに変換したいのですができますか? また、工事管理を行っていて、工期の数日前になると警告文が出るようにできるのでしょうか?
236 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 05:20:37 ] > エクセルのシートに画像をドラッグした時に、指定場所に指定のサイズに変換したいのですができますか? 「シートに画像をドラッグした時に」というイベントが用意されてないから、 「ドラッグした」ら自動で処理するってのは無理 「シートに画像をドラッグしてからボタンを押したら」なら可能だが > また、工事管理を行っていて、工期の数日前になると警告文が出るようにできるのでしょうか? 可能だがExcelでやるべきことじゃないな Excelでやるってことは、Excelとその警告マクロを作ったブックを立ち上げてないと警告文出ないわけだし やるとすれば、「n日前」ではなく、「n日前以降、最初にExcelを立ち上げたとき」という条件になるかな
237 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 16:10:42 ] 前者:できない 後者:できない
238 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 17:37:16 ] EXCEL関数についてお教えください あいうえお(abc) かきくけ(ほげほげ) さしすせそたちつ(nekdk) という行がありまして、()とその中の文字列だけを全部消したいです。 ()は全角です。()内の文字、文字数数がことなるので置換が使えないでいます。。
239 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 18:02:25 ] マッチコレクション
240 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 18:10:17 ] >>238 >>1 ★2
241 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:03:02 ] >>238 関数ではないけど ツール→区切り位置で区切り文字を ( にすると ( の前後で別のセルに分かれるからそれではダメかな?
242 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:58:50 ] VBAで検索システム的なものを作っています。 行き詰ってしまったので何かアドバイスをいただければと思います。 OSはXPでエクセルのバージョンは2002です。よろしくお願いします。 ブック内に「メイン画面」「情報A」「情報B」という3つのシートがあります。 「メイン画面」のB5セルに会員番号(K_Ban)を入力してマクロを実行すると「情報A」「情報B」から該当の会員番号に関する情報が「メイン画面」の任意のセルに代入されるというものです。 ただし「メイン画面」の形式の都合で、該当する「情報A」のうち、上から3件のみを出力させて4件目以降はカットしています。(下記コード参照) 「情報B」は「種別」という項目があり、「野菜」「肉類」「魚類」…などの分類が30種類ほどあります。 「情報B」についても、各種別毎に3件目以降はカットしたいのですが、行き詰っています。 すなわち、会員番号1について「情報B」は30件あり、野菜25件、肉類5件があるとすると 「メイン画面」には野菜3件、肉類3件分の情報を出力させたいのです。 また、種別については、今後随時変更があるので「種別毎に変数を設定して直接数える」のではないようなコードにしたいと思っています。
243 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:00:25 ] Public Sub 検索() Dim K_Ban As String Dim MyRange As Range Dim MyAddress As String Dim cnt As Integer K_Ban = Worksheets("メイン画面").Range("B5") Set MyRange = Worksheets("情報A").Range("A1:A50").Find(K_Ban, LookAt:=xlWhole) MyAddress = MyRange.Address cnt = 8 Do Worksheets("メイン画面").Cells(cnt, 3) = MyRange.Offset(0, 0).Value Worksheets("メイン画面").Cells(cnt, 4) = MyRange.Offset(0, 1).Value Worksheets("メイン画面").Cells(cnt, 5) = MyRange.Offset(0, 2).Value cnt = cnt + 1 If cnt = 11 Then Exit Do End If Set MyRange = Worksheets("情報A").Range("A1:A50").FindNext(MyRange) Loop Until MyRange.Address = MyAddress End Sub
244 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:25:44 ] シートの構造書くか、Bookをどこかにアップ
245 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 08:41:27 ] だよな普通
246 名前:y mailto:sage [2008/09/15(月) 11:18:44 ] >>242 |A列. |B列. |C列. |D列. |E列. 01 | 0123456789| .| .| .| 02 | .| .| .| .| 03 | .| .| .| .| 04 | .| .| .| .| 05 | .| .| .| .| シート内のデータ内容を説明するために、以前こんなテンプレを使っている人がいました。 「情報A」「情報B」シートの中身を、文章で説明するより楽だと思ったら使ってください。
247 名前:242 mailto:sage [2008/09/15(月) 13:54:22 ] >>244-246 以下のようなシート構造で、種別→日付で並べ替えてあります。 A B C D 番号 種別 データ1 データ2 1 肉類 豚肉 20080915 1 肉類 牛肉 20080912 1 肉類 鶏肉 20080801 1 魚類 その他 20080401 2 肉類 猪肉 20080905 2 野菜 その他 20080802
248 名前:y mailto:sage [2008/09/15(月) 16:03:53 ] >>247 Sub Sample() Dim K_Ban As Long: K_Ban = Worksheets("メイン画面").Range("B5") Dim r As Long Dim shubetsu As String Dim shubetsuCnt As Integer With ThisWorkbook.Sheets("情報B") .Range(.Cells(1, 1), .Cells(.Rows.Count, 4).End(xlUp)).AutoFilter Field:=1, Criteria1:=K_Ban r = 2 Do While .Cells(r, 1) <> "" If .Rows(r).Hidden = False Then If shubetsu <> .Cells(r, 2) Then shubetsu = .Cells(r, 2) shubetsuCnt = 1 ElseIf shubetsuCnt < 3 Then shubetsuCnt = shubetsuCnt + 1 Else .Rows(r).Hidden = True End If End If r = r + 1 Loop .Range(.Cells(2, 1), .Cells(.Rows.Count, 4).End(xlUp)).SpecialCells(xlCellTypeVisible).Copy _ Destination:=ThisWorkbook.Sheets("メイン画面").Cells(8, 3) '←任意のコピー先セル .AutoFilterMode = False End With End Sub
249 名前:y mailto:sage [2008/09/15(月) 16:04:42 ] 上のコードは、条件に合わない行を非表示にしていき、最終的に表示されている行だけを 「メイン画面」の任意のセルにコピーする、という考え方です。デバッガでステップ実行していけば、 不要な行が非表示になっていく様子がよく分かると思います。不便なところは改良してみてください。 なお、データは「種別→日付で並べ替えてあります」とありますが、見たところ「番号→種別→日付」で並んで いますね。上のコードは、そう並んでいる必要があります。 他のやり方を提案する方もいるかもしれませんので、そちらも参考にしてください。
250 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 18:09:00 ] 先日行挿入について質問したものです。 C3で指定した値の行に行を挿入して、D3,Fj,D3で与えた値を挿入した行のHi、Fi,Iiに値を入れたいのですが、どこが間違っていますでしょうか、ご指摘お願いします。 Sub Main Rows(Range("C3")).Insert Dim i As Integer Dim j As Integer i = Range("C3") Range("D3").Copy Destination:=Range("Hi") j = i-1 Range("Fj").Copy Destination:=Range("Fi") i = Range("E3") Range("D3").Copy Destination:=Range("Ii") END SUB このように作ったのですが、うまくいきません。
251 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 18:39:29 ] >>250 まず、Range("Hi")というセルの指定のやり方はない Rangeを使いたいんなら、Range("H" & i ) ほかには、Cells(i, 8)、もしくは、Cells(i, "H") 解説サイトいっぱいあるから基本的とこから少し勉強したほうがいいよ
252 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 19:29:45 ] エクセルの使い方もロクに知らない俺が 今日これからVBAの勉強を力尽きるまでやってみるぜ。 困ったときはお前らだけが頼りだ。
253 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 06:39:12 ] >>251 ご指摘、解説ありがとうございます。 出来る限り自分でやるようにしてみます。
254 名前:242 mailto:sage [2008/09/16(火) 23:49:49 ] >>248 ありがとうございます。 (もしかしたら上級者の方には普通なのかもしれませんが) 自分には全くない発想でした。勉強になりました。 お示しいただいたコードを元に自分でも勉強したいと思います。
255 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 00:16:06 ] そう考えること自体は不思議ではないと思うよ。 現によその言語ではそういうことができるものだってある(Perlとか)。 いずれにせよVBAはそういうことをしないということに変わりはないけれど。
256 名前:デフォルトの名無しさん [2008/09/17(水) 01:45:49 ] ねぇねぇみんな。 Microsoft Forms 2.0 TextBoxだと右クリックしてもメニューが出てこないよね。 出てくるようにしたいんだけど、何かいい知恵あるかな?
257 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 17:14:06 ] すいません、質問です。 1004エラーが出ます。(´Д`; worksheet記述を加えてみたり、色々試してみたのですが消えません。 作りたいものとしては、 A列を縦にチェックして異なる文字列が出てきたら罫線(太線)を引く、 というものです。 突っ込み、お願いします。 Sub test() Dim i As Integer Dim st_flag As Byte Dim range1 As Range st_flag = 0 i = 3 Do While Cells(i, 1).Value <> "" If (st_flag = 1) Then If (Cells(i, 1).Value <> Cells(i - 1, 1).Value) Then Range(Cells(i, 1), Cells(i, 6)).Borders(xlEdgeTop).LineStyle = xlMedium End If Else st_flag = 1 ''最初の1セルは比較をしない End If i = i + 1 Loop End Sub
258 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 19:04:30 ] 読むのめんどいからどの行でエラーなのか教えて
259 名前:デフォルトの名無しさん [2008/09/17(水) 19:37:16 ] Range(Cells(i, 1), Cells(i, 6)).Borders(xlEdgeTop).LineStyle = xlMedium ↓ Range(Cells(i, 1), Cells(i, 6)).Borders(xlEdgeTop).Weight = xlMedium
260 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 20:29:58 ] 実行時エラー '1004': Border クラスの LineStyle プロパティを設定できません。 これくらいコピペしようぜ
261 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 20:30:38 ] 時間の許す限りエラーの内容くらい小一時間考えよう
262 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 20:37:01 ] 質問者と回答者よりも講釈師の方がが多いスレ
263 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 21:21:15 ] 板全体に言えるわけだが すれ違い甚だしい質問だとか煽りだとか ここはまだまし
264 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 21:42:26 ] >>262 質問者 回答者 講釈師 貴方はどれに該当しますか?
265 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 21:43:55 ] ヌルポ
266 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 21:51:22 ] ポルヌ
267 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 21:52:59 ] >>262 は煽り専門要員だよ
268 名前:y mailto:sage [2008/09/17(水) 23:26:36 ] >>254 念のため補足しますが、>>248 のコードは決して最善の方法ではありません。 合致する会員番号でふるいをかけ、その中から種別ごとに最大3つまでの アイテムを取り出していく取捨選択の過程を、視覚的に理解するために利用してください。 仕組みが単純なので、コードが短くて済むというのが唯一の利点ですが、 マスタデータの行の表示・非表示を切り替えて実現する「検索システム」というのは、 >255でも指摘をいただいていますが、普通はやらないでしょう。 (数がたくさんになると、けっこう動作が重くなってしまいます) まじめに実装するとすれば、取捨選択の考え方はそのまま生かすとしても、 転記の仕方に改良の余地があります。適当な二次元配列を用意して、 取捨選択したデータを一行ずつ追加していき、最終的に配列ごと任意のセルに 書き込む、というのが一般的なやり方になると思います。 >>256 TextBoxのMouseDownイベントプロシージャ内で、Commandbars("登録されているCommandbar名").ShowPopup を 実行すれば、そのタイミングで表示されます。ユーザー設定のショートカットメニューも表示できます。 ちなみにMouseDownイベント発生時は、Button引数 が 定数xlSecondaryButton と等しければ、右クリックと判断できます。
269 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:50:36 ] さすがy
270 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 05:40:38 ] うぜぇ
271 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 09:07:55 ] >>257 っす。 >>258 申し訳ないっす。ブレークポイントで調べてみたらここらしいです。 If (Cells(i, 1).Value <> Cells(i - 1, 1).Value) Then → Range(Cells(i, 1), Cells(i, 6)).Borders(xlEdgeTop).LineStyle = xlMedium End If >>259 うぉ、できました! 罫線の種類とか太さとか、指定する先が間違っていたのですね。 >>260 そこまで親切に表示されませんでした。orz 出てきたのは、 実行時エラー '1004': アプリケーション定義またはオブジェクト定義エラーです。 でした。あ、verはexcel2003です。 >>261 小一時間考えて駄目だったので聞いてみました。orzorz Cのコンソール系しか打ったことが無いので、感覚的につかめなくて。 ともあれ、無事にできたので。 ありがとうございました。m(_ _)m
272 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 14:26:11 ] >>266 !ッガ
273 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 18:15:17 ] >>242 をわざわざVBA使ってまでやってる理由が分からんな… 関数だけで何とでもなりそうだw
274 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 19:42:37 ] >適当な二次元配列を用意して、 >取捨選択したデータを一行ずつ追加していき、最終的に配列ごと任意のセルに >書き込む、というのが一般的なやり方になると思います。 はぁ? 何でお前ごときが一般論を語れるんだよ?
275 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 20:49:36 ] >>274 お前ごときがここにくんな
276 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 22:30:24 ] 今独学でVBAを学んでいます。 皆さんにお聞きしたいのですが、 独学で学ぶにお薦めの本はありますか? 大村あつし著 かんたんプログラミング EXCEL VBA基礎編 と できるシリーズのVBAを読んでいます。
277 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 23:40:24 ] >>276 漏れの場合はVBAに関する知識はほとんどネットやヘルプで調べたものだったりするし・・・ VBとかやってるならオブジェクトブラウザとヘルプだけでも何とかなると思う 便利なテクニックとかはネットで拾い集めて行く 最初に手に入れたVBAの本に載ってたサンプルがコンパイル通らなかったから 本は全然信用してないだけだけどなw でも1冊だけ役に立った本があったな・・・ 「Excel VBA逆引き大全」とかだったかな?
278 名前:デフォルトの名無しさん [2008/09/19(金) 01:19:38 ] すいません。 VBA作成経験なく、ここを答えを求める場として 使うことに申し訳なく思っています。 複数のExcelファイルを指定する。 当該ファイルを新ブックにして保存する。 →その際、シート名が重複しても問題なし 新ブックのファイル名はあらかじめ指定したものを このようなマクロをつくることは可能でしょうか。 前述のとおり、まったく経験なしなので、 サンプル、たたき台程度で構いませんので、 ご教示いただけたら嬉しいです。
279 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 01:57:51 ] 相変わらずyきめぇw
280 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 02:05:09 ] >>278 さっぱり意味がわかりません。
281 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 02:08:42 ] >>277 >VBとかやってるならオブジェクトブラウザとヘルプだけでも何とかなると思う できる奴の戯言だな
282 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 04:03:48 ] >>278 簡単だよ。
283 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 06:07:09 ] >>275 アホ?