[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 10/24 21:30 / Filesize : 261 KB / Number-of Response : 870
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA質問スレ Part8



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)

159 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:56:43 ]
下手な釣りだなあ。次の質問どうぞ。

160 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:49:05 ]
>>128
が見えない

161 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 20:20:00 ]
excel vba 極めたいのですけど
お勧めの参考書はありますか?元制御系プログラマで
プログラミングの基本は充分できています。
技術評論社のポケットリファレンスはどうですか?

162 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 20:25:06 ]
便乗質問・・・。

win32APIを勉強したいのですが、お勧めの本ってありますか?
使用目的はExcel VBAで呼び出す事です。

163 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 20:29:47 ]
Excel VBAによるWin32 APIプログラミング入門 (単行本)

ぐぐることも出来ないの?

164 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 23:32:31 ]
質問者も回答者もバカが多いな

165 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 00:05:08 ]
お前ほどじゃないがな

166 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 03:03:14 ]
だな

167 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 03:08:05 ]
157 名前:128[] 投稿日:2008/09/07(日) 16:38:58
結局お前らAccessVBAが理解できなかっただけ佳代w
低能エクセル厨乙w

こいつリアルでもこんな感じなんだろうな



168 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 07:45:44 ]
>>162
マジレスするとWin32APIの為に本を買うのはもったいない。
MSDNとネット上のAPIサンプル集とかで十分。

169 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:00:04 ]
detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1112704276
上のようなことの逆は可能ですか?
 
 例えば、セルAに映画のタイトルが縦に並んでて、
セルBにはその映画の詳細が見れるHPアドレスが沢山並んでます。
 セルBのそれぞれのアドレスを、セルAに一括でハイパーリンクさせる(埋め込む)
方法が知りたいです。
 ご教授、宜しくお願い致します。

170 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:41:35 ]
pc11.2ch.net/test/read.cgi/bsoft/1219830884/238

171 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 20:08:18 ]
>>170
循環参照になってる

172 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 20:09:26 ]
笑!

173 名前:y mailto:sage [2008/09/08(月) 20:21:47 ]
>>169

セルB1にあるアドレスを、セルA1にハイパーリンクとして埋め込むのは、
次のようにすればできます。

Sheet1.Hyperlinks.Add Anchor:=Cells(1, "a"), _
 Address:=Range(1, "b"), _
 TextToDisplay:=Cells(1, "a").Value

(マクロの記録を使って、ハイパーリンクを埋め込む動作を記録してみれば簡単です)

これをループで括って、「1」となっているところ(これは行番号にあたります)を
変えていけば、お好みの行数分操作できます。



174 名前:y mailto:sage [2008/09/08(月) 20:25:13 ]
あ! すみません。
169はマルチポストだったんですね。
気づかずに答えてしまいました。

>>169
ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88
一度ここを読んでおいてください。

175 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 20:29:35 ]
> Range(1, "b")


176 名前:y mailto:sage [2008/09/08(月) 20:29:41 ]
さらに自分のレスの間違いに気づきました。
Address:=Range(1,"b") → Address:=Cells(1,"b")

177 名前:169 mailto:sage [2008/09/08(月) 21:03:00 ]
>>173 マルチ悪かった。
 ツール→マクロ→VBA→標準モジュールに保存した後、
マクロ実行してみたけどできません。
初心者なんでもう少し詳しく教えていただけませんか?



178 名前:169 mailto:sage [2008/09/08(月) 21:54:01 ]
1行だけできましたけど、
行数分操作ができません。
Cells(1, "a"),
1の部分の範囲指定はどうすればいいの?

179 名前:169 mailto:sage [2008/09/08(月) 21:55:21 ]
できればセルを範囲指定して、マクロ実行で
一括で変更できると助かります

180 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:01:32 ]
ググレ

181 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:27:39 ]
>>180
いろいろ調べてもわからねぇよ
質問スレなんだから聞いてるんだろ。。意地悪しねぇで教えろよ。
 その気がないなら返信するな

182 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:45:30 ]
>>179=>>169=>>こないだの池沼 



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






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<261KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef