Excel VBA質問スレ Pa ..
[2ch|▼Menu]
251:デフォルトの名無しさん
08/04/10 15:54:27
もう一ついいでしょうか
フォントの色を変える方法はセルを指定するしかないのでしょうか?
表を作っていてさっき質問したB5~B35に入る曜日の土日だけ赤にしたいと思っています
しかし月によって、どこに土日が入るかわからないのでセル指定ではなくて変数などを指定してやる方法はありますか?
ちなみにSelect文を使って変数の中身を替えています

252:デフォルトの名無しさん
08/04/10 16:15:12
>>250
ThisWorkbookのマクロに
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Sheet3" Then Exit Sub

Worksheets("Sheet3").Range("D7").Value = Sh.Range("A3").Value
'以下略
End Sub

253:デフォルトの名無しさん
08/04/10 16:19:40
>>251
マクロじゃなくていいなら「条件付書式」。
マクロなら、
for each cell in worksheets("sheet1").range("B5:B35")
if cell.value = "土" or cell.value = "日" then
'interiorがうんたらかんたら
end if
next

254:デフォルトの名無しさん
08/04/10 16:20:41
>>253
こればっかりはしょうがないですよね、ありがとうございます!

255:デフォルトの名無しさん
08/04/10 16:38:20
>>252
動きました!!ありがとうございます!!
ですが、sheet3をクリックすると、一瞬だけ表示されて消えてしまうのですが…

256:デフォルトの名無しさん
08/04/10 17:02:21
>>255
どんな現象か良くわからんけど、"Sheet3"を"sheet3"にすると解決する?

257:デフォルトの名無しさん
08/04/10 17:39:30
>>256
そ、それだった!
解決しましたありがとうございます。
本当に助かりました。ご迷惑をおかけしました

258:デフォルトの名無しさん
08/04/10 22:19:48
知恵をお借りしたく、書き込みいたしました。

OS:XPSP2
excel:2003

グーグル先生にお聞きしてみたところ、どうも答えが返ってこないため、こちらに書き込みいたしました。
Excelを利用して、
@Webの検索フォームにA列に記載された文字列を入力し検索
A表示されたページの指定したテキストボックスに記載された文字列をB列に貼り付け
を繰り返すマクロを組もうと頑張っているのですが、どうにもAが解決できません。

できればお知恵を貸していただけないでしょうか?
宜しくお願いします。

259:デフォルトの名無しさん
08/04/10 22:53:35
一概には言えない。
どのページか書いたら、答えが返ってくるかもな。

260:デフォルトの名無しさん
08/04/11 00:05:31
ちょっと外部には出せない類のページでorz

こちらもphpで生成されたhtmlのページしか見れないため、htmlのソースからデータを取り出す形でやっているのですが...

文字列の部分だけを改変したhtmlのソースなら見せられると思うのですが、それでは駄目ですか?

261:デフォルトの名無しさん
08/04/11 00:29:57
なんだ、それなら文字列検索すればいいじゃん。
何が問題なんだ?

262:デフォルトの名無しさん
08/04/11 00:40:18
>>260
大事な情報扱ってるなら2chなんか頼るな
プログラム板、プログラマー板、ソフトウェアー板を徘徊して
ネタ探し回ってる奴いてるよ
解答者の振りして「それじゃ答えられない」「もっと具体的に」と
最後はネタパクられちゃうからね
もしくは「それは素人には無理。業者に出す仕事だ。」色んな言葉で揺さぶられるだけ
動的HTMLは俺も扱った
ここの板で聞いたけどいくら質問しても答えなんかない。
それよりファイル操作できる(ファイルの読み書きできる言語)調べろ
2chで調べたらダメだよ
解答者装った変なのが張り付いてるから
図書館やインターネットで調べてネタは誰にも言うな。
ファイルの読み書きだ。
くどい様だけどマジで2chの板は気おつけろよマジレス。

263:デフォルトの名無しさん
08/04/11 00:59:00
>>262
ありがとうございます。
他の板だと、色々とあるんですが、初めてヌクモリティを感じました。
お世話様でした。ありがとうございます。

264:デフォルトの名無しさん
08/04/11 01:08:35
>>262
そんなコストパフォーマンスが悪いことやってるの、引きこもりくらいだろwww

265:デフォルトの名無しさん
08/04/11 01:23:15
被害妄想

266:デフォルトの名無しさん
08/04/11 01:45:39
バリバリのマクロ使いは質問者の2〜3行読んだだけで
何を意としているかはわかってるよ
わかった上で「それじゃよくわかんないよ」「もう少し具体的に」
それじゃこれか!
わざとずれた解答のマクロ出してくる
質問者は一気に信用する
質問者が自分で改編できないことは解答者はわかってるw
やがて改めて聞きに来るのはほぼ確実。
あとは「もう少しだから頑張ろう」とか適当に良きアドバイザーを装って
ネタぱくったら、さよならベイビーwww
解答者の計算どおりネタはぱくって答えは出さない

計算どおりにいきそうにないときは多数を装い
マナーだの常識だの礼儀だの罵倒する役柄と
優しさと知識を持ち合わせた解答者が入り混じる
少しくらい教えたところでこんなトコで質問してるレベルの奴に改編なんか無理。
質問者は解答してもらいたいのでペコペコしながら
最後は言われるがままw
偽解答者は初めからわかってるんだよ
とくにファイル操作関係は気をつけたほうがいい
VBAに限らず他の言語もね

267:デフォルトの名無しさん
08/04/11 01:54:22
病院行った方がいいよ

268:デフォルトの名無しさん
08/04/11 01:55:59
そちらからお先にどうぞ

269:デフォルトの名無しさん
08/04/11 02:02:19
なにこいつ

270:デフォルトの名無しさん
08/04/11 02:31:16
なんかすごい長文で不安煽ってるのがいるが安心しろ
オレがじゃんじゃん答えてやるから、そのままHTMLをうpれ

271:デフォルトの名無しさん
08/04/11 02:37:53
プッ
んじゃタグ抜きマクロでも書いてみ
リンク、object、span ヨロチクビ
それ見てから質問するか考えるわw

272:デフォルトの名無しさん
08/04/11 02:58:31
>>258
は、どう見てもパクるに値するネタでない事だけは確かw

273:デフォルトの名無しさん
08/04/11 03:09:59
どうみても金儲け絡んだ情報収集にみえますが
次のレスでは>phpで生成されたhtml
ピンポ〜ン!99%の確立で当たりましたね

274:デフォルトの名無しさん
08/04/11 10:58:32
頼むからコテつけてくれ。あぼんするから。

275:デフォルトの名無しさん
08/04/11 22:01:41 BE:378334793-2BP(380)
やっぱ Excel VBA で マルチスレッディングって 無理?

276:デフォルトの名無しさん
08/04/11 22:15:07
Excel 2003 のVBA の言語仕様書ってどこかにないでしょうか。

277:デフォルトの名無しさん
08/04/11 23:40:11
やるならマルチプロセスだなw

278:デフォルトの名無しさん
08/04/12 13:44:44
OS : windows XP
バージョン:excel 2002
VBAでのクラスモジュールの使い方がさっぱりわかりません。
コレクションの要素を設定/取得するだけのクラスすら作れません。
どこが間違っているのか&どう直せばいいのか、どなたか!m(_ _)m

'--クラスモジュール----Class1

Private a As Collection

Private Sub Class_Initialize()
Set a = New Collection
End Sub

Public Property Let mAdd(ByVal value As Integer)
a.Add (value)
End Property

Public Property Get mGet()
a.Item (a.Count)
End Property

279:デフォルトの名無しさん
08/04/12 13:45:27

'標準モジュール------
Sub test()

Dim i As Integer
Dim cal As Class1
Set cal = New Class1

'プロパティへの代入
For i = 1 To 3
cal.mAdd (i)
cal.mGet (i)
Next i
End Sub

280:278=279
08/04/12 14:10:33
自己解決しました
ものすごく恥ずかしい質問をしてしまいました><

281:デフォルトの名無しさん
08/04/12 16:53:54
>>277 kwsk

282:デフォルトの名無しさん
08/04/12 17:06:14
ActiveX EXE、アウトプロセスCOMサーバでぐぐれ

283:デフォルトの名無しさん
08/04/13 20:36:16
図形の線色を変更する為にソースの中に、
Selection.ShapeRange.Line.ForeColor.RGB = RGB(255,10,10)
と指定したのですが、

Line.ForeColor.RGBと指定するのは出来るけど良くないとの指摘を受けました。
VBやVBAの常識では、Selection.ShapeRange.Line.ForeColor.SchemeColor = 2
等とするらしいのですが・・・

RGBだとどのような弊害があるのでしょうか?

常識的な事を質問してすみません。
どなたかご教えて頂けませんか?(>_<)


284:デフォルトの名無しさん
08/04/14 00:06:12
なんで指摘した人に聞かないの?

285:デフォルトの名無しさん
08/04/14 00:25:53
>>284
ご指摘頂いたかたに何度か理由をお聞きしましたが、
常識なんだから当たり前と明確な裏付けを貰えなくて、
それで知人や本、ネットで調べても分からずじまいで、
ご質問させて頂きました(>_<)


286:デフォルトの名無しさん
08/04/14 03:22:55
Line.ForeColor.RGB使ってたときは左辺にどんな値を代入してたの?

287:デフォルトの名無しさん
08/04/14 03:29:49
あ、ごめん書いてたなwwww(ゲラプゲラオプスwww

たぶんあれだろ。RGB値だと何の色を指定してるかわからりずらいからだろ。
っつってもどっちもマジックナンバー状態だから(ry
っつーかつい最近はじめてVBAさわった俺からすると
コンパイラの方でこういう色の値は予約語としてもっとけと思ったな


288:デフォルトの名無しさん
08/04/14 03:56:11
それを答えるために詳しく聞いてたのかよ
なんだこいつ

289:デフォルトの名無しさん
08/04/14 07:31:44
わかりづらいなら定数定義すりゃいいだけだしよくわからんな

290:デフォルトの名無しさん
08/04/14 20:01:59
>288-289
全然俺の言いたいことを理解してないな。
さすがVBAしかさわったことのないゴミどもだwwwwwwwww
ちょろっと触った感じ、他のコンパイラと比べて
半端なく使いづらいからVBAそのものが昔から進化してねぇんだろうな。
まぁお前等のレベルもそこで停滞してるのもしゃあねぇわなwwww

291:デフォルトの名無しさん
08/04/14 20:58:09
VBAを学ぶのにオススメの書籍を紹介してください.
VBAは全く初めてですが,C,fortranならそこそこ使えます.
よろしくお願いします.

292:デフォルトの名無しさん
08/04/14 21:43:08
マクロを記録して生成されたソースを見るのが一番参考になる

293:デフォルトの名無しさん
08/04/14 21:49:00
なるほどwww

294:デフォルトの名無しさん
08/04/14 22:29:42
今日は釣果がいまいちですね

295:デフォルトの名無しさん
08/04/14 23:08:49
Application.quit
ThisWorkbook.close savechange=false

でExcelを終了させているのですが、
5回に1回くらいプロセスが残ることがあります。
GUIは消えてるのですが・・
Excel2003です。



296:デフォルトの名無しさん
08/04/14 23:20:38
未解放のリソースが残ってるんじゃねーのか?

297:デフォルトの名無しさん
08/04/14 23:28:10
>>296
特に無いと思います・・
DBとか使って無いし
ファイル出力はそのたびクローズしてるんで。

そもそも、リソース未開放だとプロセス残るんですか?

298:283
08/04/15 00:27:43
283の書き込みした者です。

(NG)…RGBプロパティ使用
Selection.ShapeRange.Line.ForeColor.RGB = RGB(255,10,10)

(GOOD)…SchemeColorプロパティ使用
Selection.ShapeRange.Line.ForeColor.SchemeColor = 2

右辺のマジックナンバーには目をつぶってもらって、
RGBとSchemeColorプロパティの観点で見て欲しいです。

今の時点で常識と言う言葉が出てきていない時点で
VBA使用者の常識では無さそうですね。



299:デフォルトの名無しさん
08/04/15 00:39:13
個人的には、RGB(255, 10, 10)が(RGBの順だという前提で)やや白い赤とすぐ判るが。

Excelのオペレーションで考えると、自由に色を使うと言う感じではなく規定の色から選択して使うイメージだよね。
その色がSchemeColorなんだから、VBAをExcelのオペレーションの延長と捉えるならその方がいいということなんでは?

300:デフォルトの名無しさん
08/04/15 00:40:43
>>299
俺もそうだと思う

301:283
08/04/15 00:59:05
>>299
>>300

返答ありがとうございます。

>Excelのオペレーションで考えると、自由に色を使うと言う感じではなく規定の色から選択して使うイメージだよね。
規定色で書かれた図形とは、違う色としたい要件でしたので、
規定色は使わずに赤=0〜255, 青=0〜255, 緑=0〜255を自由に選ぶようにしていました。

色の自由度が求められる要件で、あえて色の制約があるSchemeColorの方が良いのかが分からないのです(>_<)

302:デフォルトの名無しさん
08/04/15 01:07:56
>>301
その用件を知らないんじゃなく?
知ってたらあり得ないだろ

303:デフォルトの名無しさん
08/04/15 01:16:14
>>301
おまいにひとつ教えてやろう
Excelでは、「赤=0〜255, 青=0〜255, 緑=0〜255を自由に選ぶ」
ってのは無意味
Excelで表現できるのは、パレットに登録されてる56色のみ
「赤=0〜255, 青=0〜255, 緑=0〜255を自由に選ぶ」をしたところで、
56色の中から一番近い色が選ばれるだけだよ

304:283
08/04/15 01:16:59
>>302
もちろん、そのご指摘したかたは要件を知っています。

VB/VBAの使用者なら誰もが知っている常識と言われて
しまったので私がただ単に無知なだけと思っていましたが、
やはり302さんが仰るとおり、有り得ないことみたいですね。


305:283
08/04/15 02:52:06
>>303

それはセル等に適用されると言うのは当然その通りだと思います。
今回の対象のシェイプにもは適用されないのでは無いでしょうか?

実際に試してみると分かると思いますが、少しずつ値を変えて、
並べて表示していくと、56色以上同時に表示出来ますから。

306:303
08/04/15 05:05:36
>>305
すまん、完全に俺の早とちりだった

Dim i As Long
For i = 0 To 255
  With Cells(i + 1, 2)
    With ActiveSheet.Shapes.AddShape(msoShapeRectangle, .Left, .Top, .Width, .Height)
      .Fill.ForeColor.RGB = RGB(i, 0, 0)
      Cells(i + 1, 1).Value = .Fill.ForeColor.RGB
    End With
  End With
Next i

図形は好きな色使えるな
SchemeColorの色数も81色だし(重複はあるが)

結論として、指摘した人が俺と同じ早とちり OR 知ったか OR 低脳って事で、
俺はおまいが正しいと思うよ

307:デフォルトの名無しさん
08/04/15 05:27:02
>>306
>>305じゃないけど
あんた漢だよ

308:デフォルトの名無しさん
08/04/15 19:46:38
>規定色で書かれた図形とは、違う色としたい要件

(;´Д`)何この要件・・・
「ある規定色で描かれた図形とは別の色を使う」って意味じゃねぇのか?www
Excelで規定された色と違う色を使うことになんの意味がるんだと小一時間(ry
要件も理解する側がアホだったらとんでもない意味に変化するからな。
まず常識的に考えて(ry


309:デフォルトの名無しさん
08/04/15 21:50:25
!?

310:デフォルトの名無しさん
08/04/15 22:17:58
“不運(ハードラック)”と“遭遇(ダンス)”だぜ?

311:デフォルトの名無しさん
08/04/15 23:57:19
283 303ではないけれど、
そいや、昔のverで、色の指定でRGB値だとうまく行かなくて
あれれーと思っていろいろ実験したなぁ。
確かに出来るやつと出来ないやつがあって、調べたけど、結局
>>303
と同じ考えに至って自分を納得させたことがありました。

312:デフォルトの名無しさん
08/04/16 00:02:45
自分勝手に色決めてると白黒印刷でわけわかんなくなる可能性大

313:283
08/04/16 01:14:55
>>303
>>306
ひとまず303のさんのおかげで、VBAの図形に関しては、制約が無い事が実証されました。
この質問スレ見てる人達の共通認識になったと思うので、これで良かったと思いますよ。
ありがとうございました。

314:デフォルトの名無しさん
08/04/16 01:20:12
文字が入っている終端のセルを指定する方法はちらほら見かけるんですが、
一番先頭のセルから終端までを選択する方法ってありますか?

A列の途中から文書の中身が始まります。
開始の行数は変動します。
開始から終了まで、50行×20行ほどです。
文書の開始は必ず同じ内容のValueのセルです。

For文で開始のセルのValueを検索し、Thenで結ぶ、ぐらいまでは考えたんですが
そこから先がまったく予想もつきません。

もしも一番先頭の(文字の入っている)セルより前の空白の行を
すべて消去するうまいやり方があったら教えてください。
空白の行さえ消せれば文書の中身のセル番地が固定されるので、
(テンプレートが決まっていて、いつも全く同じ順番に並びます)
番地を指定してデータを他シートにコピー&ペーストできます。

イメージ図
    A列 B列 C列
1行  空白 空白 空白
2行  空白 空白 空白
 ・
 ・
 ・
n行  aaa bbb ccc

A列をaaaで検索
aaaのRange(A,n)のnを取得
1からn-1行を削除

どうかよろしくお願いします。

315:303
08/04/16 01:32:45
>>314
Range("A1").Resize(Range("A1").End(xlDown).Row - 1).EntireRow.Delete

316:314
08/04/16 08:36:38
>>315>>303
たった一行で! ありがとうございます
これで仕事もはかどります。本当に助かりました



317:デフォルトの名無しさん
08/04/16 09:09:35
エクセルで
VBAを使うのは
地獄に落ちる
最適手段

アクセスで
VBAを使うのは
神の身許に
至る近道

318:デフォルトの名無しさん
08/04/16 13:46:42
エクセルからアクセスへステップUPするのは、比較的大変なんですか?


319:デフォルトの名無しさん
08/04/16 14:04:26
そういうもんじゃないし


320:デフォルトの名無しさん
08/04/16 17:52:39
>>318
君のアタマの柔軟性次第。

321:デフォルトの名無しさん
08/04/16 19:03:22
エクセルは未来のアクセスで
アクセスは未来のエクセル也
地獄と極楽を永劫回帰


322:デフォルトの名無しさん
08/04/19 00:24:35
ようやくうちの会社の全PCにアクセスが入ったんだが
何に使うのかよく分からない
アクセスだとできるけどEXCEL+VBAだとできないことって何?
楽で見栄えが良くなるってだけなのかな?
EXCELVBAはそこそこ使えるようになったが
アクセスを勉強するか、エクセルをさらに研鑽するか迷う

323:デフォルトの名無しさん
08/04/19 01:30:45
>>322
C++などからもデータベースにアクセスできるとかじゃね?
そりゃ、C++でもExcelはいじれるけど・・・

324:デフォルトの名無しさん
08/04/19 06:14:05
>>322
Excelも便利だがAccessもいいぞ。
業務アプリのGUIも作れるし、百万件ぐらいのデータ処理とかも可能。
RDB+VBA+レポート。
何でも出来てしまうので、何でもやりすぎてしまう。
そんなツール。

325:デフォルトの名無しさん
08/04/19 06:55:20
Excelを正しく使わないと会社はすぐ、Access等のDBを導入しようとするが
そこに待っている世界は....

326:デフォルトの名無しさん
08/04/19 06:57:49
>>322
エクセルを研鑽するにしてもアクセスのようなデータベースを知ってからのほうがいいです。
エクセルしか知らないと斜め上のテクニックばかりに身に付いちゃうかもね。

327:デフォルトの名無しさん
08/04/19 07:29:25
EXCELの典型的斜め上テクニック

串刺し演算
セルの結合
複雑な集計はVBAで
報告書、仕様書、企画書その他何でもEXCELで

328:デフォルトの名無しさん
08/04/19 08:29:18
>>322
例えばファミレスの注文データベースを作るとします。
一回の注文には複数の料理が含まれるとして

注文件数の合計
料理別の数量合計

を計算したい時、あなたならどんな表を作って集計しますか?

329:デフォルトの名無しさん
08/04/19 10:25:45
>>328
お前がAccessで作ろうと思ってる表と同じもの

330:デフォルトの名無しさん
08/04/19 10:41:03
もっとrelationalなもの作るだろ?(それなりに高いスキルは要るが)
Accessのデータ構造は単純に日付/客ID/料理ID/点数
で決まり。必要に応じてSQLで集計する。


331:デフォルトの名無しさん
08/04/19 10:55:25
Excelでも同じ構造でいいじゃん。何か不都合でも?

332:デフォルトの名無しさん
08/04/19 11:24:43
ファミレスごときのメニューでリレーショナルなものってwwwwww(ゲラプッチョwww
高いスキルってwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

333:デフォルトの名無しさん
08/04/19 12:28:23
EXCELだと一定数のデータの集計だと
中間集計取りながらリアルタイムで全体見ながら
データ入力出来るから集計は早い。
だが、どんどんデータが入ってくるよう
な対象には弱い。量が増えてくると
ニーズも増えて、細かい集計項目追加の嵐
魑魅魍魎になって作成者も理解できなくなる
こういった対象にはDBのほうがまだ強い
ってか、こういったニーズを解決する為に
DBが作られた(とも言える)

334:デフォルトの名無しさん
08/04/19 14:30:27
>>322
素人レベルならエクセルで十分だと思うよ

>>323
ほとんど関係ないよ

>>333
大筋は合ってるけどDBってのは戦後からある概念だよ。
DB→Accessの意味で言ってるのかな?

335:デフォルトの名無しさん
08/04/19 16:21:45
戦後って久しぶりに聞いたわ

336:デフォルトの名無しさん
08/04/19 16:23:15
もはや戦後ではない

337:328
08/04/19 17:18:29
>>330が示したモデルでいいでしょう。
客IDだとお客さんをIDで区別してそうな印象を与えそうなんで注文IDと呼びかえますね。
さらに何番の席で受注したか、その席は禁煙席か喫煙席かも記録しましょうか。

日付/注文ID/席番号/喫煙区分/料理ID/点数/


338:328
08/04/19 17:33:28
24番の禁煙席に案内したお客さんが、やっぱり55番の喫煙席に移動したいと希望したら、データもそれにあわせて訂正したいですよね。
Excelだとこの場合、席番号と喫煙区分を何行も書きかえないといけません。
この時、席番号だけ直して喫煙区分を直し忘れたりしないように気を付ける必要もあります。

339:デフォルトの名無しさん
08/04/19 17:43:11
いや、それはどう考えてもExcelの使い方が悪い。

340:デフォルトの名無しさん
08/04/19 17:59:15
どう考えたんだよ

341:328
08/04/19 18:00:51
Accessなどのリレーショナルデータベースではこのような問題が解決できる仕組みが提供されています。


>>339
まあお好きなように。



342:デフォルトの名無しさん
08/04/19 18:21:09
Excelは横展開でデータを記載しないと使い勝手悪い。
Accessは縦展開でデータを追加してかいて、用途に応じて必要な表に組み合わせる。


343:デフォルトの名無しさん
08/04/19 19:58:47
データの持ち方次第でAccessだって修正箇所多くなるだろ?
どの座席が喫煙/禁煙なのかなんて予約データに関係ないんだから別の場所にあればいいじゃん。
「Aさんは24番の禁煙席を予約している」じゃなくて「Aさんは24番を予約している」「24番は禁煙席である」だろ?
データ構造(設計)にExcelやAccessが関係してくるのか?

344:328
08/04/19 20:59:31
>>343
正規化のことを言っているのですね。
おっしゃる通り、喫煙区分は席番号に従属しています。従属の解消はExcelでも簡単です。VLOOKUPを使えばいいのです。

Excelが苦手なのは注文と料理のような一対多の関係を扱うことです。

345:デフォルトの名無しさん
08/04/20 01:23:54
マスタの種類が増えれば増えるほどLOOKUP系では扱いづらくなるな
VBAで条件増やしたLOOKUP亜種を作成しても良いけど、自分だったら素直にSQLを
書くほうを選ぶ

346:デフォルトの名無しさん
08/04/20 15:29:49
Enabledでテキストボックスをロックしたときに文字の色が変わらないようにしたいんだが、できるか?

347:デフォルトの名無しさん
08/04/20 15:30:50
できるがお前の態度が気に食わない

348:346
08/04/20 19:04:54
すまなかった。他のことは出来るんだが、なぜかこればかりは頑張って探しても見つからなかったんだ。
人に聞くってのは、勇気がいるもんなんだぜ。こんな質問のために荒れるのはいやだろ?さぁ教えてくれ。

349:デフォルトの名無しさん
08/04/20 19:10:22
なんだそりゃ脅迫か?

350:デフォルトの名無しさん
08/04/20 19:11:14
>>348
できるか?に対してちゃんと「できる」って言ってくれたんだから
贅沢言うなよ

351:デフォルトの名無しさん
08/04/20 20:11:10
>>348
荒れるのは嫌だが、お前に教えるのはもっと嫌だ。

352:デフォルトの名無しさん
08/04/20 20:29:04
荒れて結構w 誰も困らないスレだwww


353:デフォルトの名無しさん
08/04/20 20:43:40
あるシートに在るセルの内容を
別のシートにコピーするにはどうしたらいいですか?

シート名はプログラム内に書き込まれてあって、
もしコピー先のシートがなければ、新規にシートをつくりたいのです。

354:デフォルトの名無しさん
08/04/20 20:53:22
>>353
その操作をキーボードマクロで捕捉してみたら?

355:デフォルトの名無しさん
08/04/20 22:52:39
>>354
頭良いですね。
ありがとう。

356:デフォルトの名無しさん
08/04/21 18:45:55
>>355
普通。俺は何もプログラミング言語分からず、VBAに挑戦した。独学で色々して、悩んでもがいて、なんとかクラスモジュールを使えるくらいまでになった。
まずはすぐ聞かずに、マクロ記録とかぐらい試せ。

357:デフォルトの名無しさん
08/04/21 20:01:01
>>356
クラスモジュールを使うとどんなことが実現できるの?

358:デフォルトの名無しさん
08/04/21 20:35:56
>>356-357
まさにそこで今ハマってます。

Excel2007みたいな感じで、ステータスバーに「合計」と「データの個数」が
常に両方とも表示されていたら便利だなぁ、と思ってこんなマクロを書いてみました。
------------------------------------------------------------------------
Sub Worksheet_SelectionChange(ByVal Target As Range)

  'ステータスバーに「合計」と「データの個数」を二つとも表示

  Application.StatusBar = "  合計=" & WorksheetFunction.Subtotal(9, Target) & _
              "  データの個数=" & WorksheetFunction.Subtotal(3, Target)

End Sub
------------------------------------------------------------------------
これを、PERSONAL.XLSに書けば動くかなー、と思って気軽にやり始めたのですが、
甘くなかったです・・・。

いろいろググったり、詳しい人に聞いてみたりしたら、どうもクラスなるものを
使わないと解決しなさそうな感じなんで、今必死こいてクラスの勉強しとります。

359:デフォルトの名無しさん
08/04/21 20:59:45
VBA使いはひどいなwwww
根本理解してないというか理解しようとしていないwwww
動けばいいやーっていうスタンスでやってきたからそうなる

360:デフォルトの名無しさん
08/04/21 21:33:20
> 根本理解してないというか
やっぱそうかー。なんか「VBA使い」に恥をかかせたようでスマン…。
たぶん、俺がひどいだけだと思うんだ。

361:デフォルトの名無しさん
08/04/22 04:05:16
準マスター文書として使えるのがVBA/OLE未使用文書
準々マスター文書として使えるのがVBA/OLE多用文書
半端に使ってるものは信頼性が一番低く、生ゴミ文書
扱いになる。

362:デフォルトの名無しさん
08/04/22 10:01:48
ステータスバーを使わずに
メッセージボックスやユーザホームで

"処理中です・・・・ " & Count & "行"

と表示させながら裏で実行させる方法ってありますか?

例えばMsgBoxとかで表示させると、そこで止まってしまうんですが・・・

363:デフォルトの名無しさん
08/04/22 12:51:57
>>361
ExcelアプリとExcelデータは区別したほうがいいってことね。

364:デフォルトの名無しさん
08/04/22 13:39:50
>>362
msagent

365:デフォルトの名無しさん
08/04/22 14:07:46
ユーザフォーム

366:デフォルトの名無しさん
08/04/22 14:44:10
>364
ありがとうございます、やはりこの手の処理方法は
VBAのみで実現するわけじゃないんですね

ちょっと面白そうなので、VBS使ってその方向で検討してみようと思います

367:デフォルトの名無しさん
08/04/22 14:46:54
VBSでやれることはVBAでもやれるぞ。
参照設定にあるはずだ。

368:デフォルトの名無しさん
08/04/22 15:51:55
use form

369:デフォルトの名無しさん
08/04/22 16:06:57
引数で受け取った配列(arr)が1次元か2次元かを判定する方法で
今は

On Error Resume Next 'エラー出力を停止する
lng = UBound(arr, 2)
lngErr = Err.Number
On Error GoTo 0 'エラー出力を再開する

のようにUBound()関数を使用してエラー発生の有無で判定してるのですが
他に良い方法ないでしょうか。。



370:デフォルトの名無しさん
08/04/22 18:07:20
>>369

エラーを意図的に起こして別の情報を得るコードは
Acess−VBAなど、DBという会社システムでは泣く子も黙る世界と因縁の深い汎用機大型機の
コードでは常套手段。
やはり一般的にはしないほうがいい。
特にAccessなどDBが絡むシステムでは、VBA使うだけでも領域侵犯とみなされやすい
ので注意。

371:デフォルトの名無しさん
08/04/22 19:37:09
>>362
初心者の俺が解答するから間違ってたらごめんよ。
例えば、50件のデータを処理する場合はカウンタ変数を作っておいて、1件の処理終わる度にそれに1ずつ足していけばいいと思うよ。そして、「処理件数/全件数」をユーザーフォームに貼りつけたラベルに表示するのを繰り返す。
マスターの皆さん見当違いだったらご指摘をお願いします。

372:デフォルトの名無しさん
08/04/22 19:43:05
>>371
忘れてた。
裏で処理するなら「Application.ScreenUpdating」を使って画面更新止めたり、EXCELを非表示にした方がスマートかな。

373:デフォルトの名無しさん
08/04/22 19:58:37
VBAであんまり凝ったことをやろうとしない方がいいと思うがな
作り捨てアプリ作成言語として割り切って使った方が前向きかも

374:デフォルトの名無しさん
08/04/22 22:25:26
昔は無茶ばかりしたなあ

375:デフォルトの名無しさん
08/04/22 23:05:11
>>374
kwsk

376:デフォルトの名無しさん
08/04/23 00:29:53
バカクライアントが作ったエクセル表
きままにセル結合したり、色に意味持たしたり、2行結合のセルと2行間に罫線が無いセルに
それぞれ意味があったり、その行数が20行位まで別条件だったり、もう気が狂いそうです。
これをコンバートする為にまず整形しなければならず、1万行近い定期案件なのです。
凝った事をやるつもりはさらさらないが仕事だから仕方ないのです

377:デフォルトの名無しさん
08/04/23 01:19:56
>>369
SDKに配列の要素があるかどうかの判定をするAPIがあったはず
名前忘れたけど

378:デフォルトの名無しさん
08/04/23 09:01:12
>>369
配列の次数やレンジを引き数に積んで貰わないの?

379:デフォルトの名無しさん
08/04/23 09:12:15
エラーで判定がいやなら、無難にIFかCaseでいいんじゃないの?

380:デフォルトの名無しさん
08/04/23 09:20:37
>>376
工数出せばいいだろうに。

・お前のウンコシート使って無理矢理自動化すると1人月
・俺様が作ったスマートな表を使って自動化すれば0.5人月

両案出して上司に決済させろ。

381:デフォルトの名無しさん
08/04/23 15:14:59
1愚人月
0.5賢人月

382:デフォルトの名無しさん
08/04/23 23:59:01
ActiveWorkbook.Pathで、自分のファイルの存在場所がわかりますが、
拡張子をxlsからxlt(テンプレート)に変えた場合、保存されていない
状態でOpenしますので、xltファイルの存在Pathが取得できません。

元となった、xltファイルの存在場所のPathを知る方法は無いでしょうか?

Googleでは、「ファイル→開く」だとPathは取得できるが、xltファイルを
ダブルクリックで開いた場合は裏技的なコードを書かないとダメと書いてあり
その人はそのコードを無くしてしまったとあったのですが…
URLリンク(www.keep-on.com)

383:ゆうすず
08/04/24 13:05:32
こんにちは、お邪魔します。

エクセル2003、ウィンドウズXPを使用しています。
マクロの記述は本で調べるなどして奮闘中ですが、
調べてもわららないことがあったので書き込みさせていただきます。
家のパソコンだと、なぜか[ツール]→[マクロ]とすすんで、
本来だったら[マクロの記録]となるのでしょうが、
ここが白抜きで実行できません。
セキュリティも下げてみたりしたのですが、どうにもわからなくて…。
なんだか初歩どころか一歩も進んでいないような質問で、大変恐縮なのですが、
どなたか教えていただけると助かります。
よろしくお願い致します。

ゆうすず

384:デフォルトの名無しさん
08/04/24 13:08:08
以下のような部分でプログラムが止まってしまいます。
どうも関数内の「"」がVBAの中での「"」と混同されているらしく、
うまく回避できません。いっそ「0」に置き換えてもいいのですが・・

Sub Finding_Nimo()

Range("A41").Formula = _
"=IF(ISERROR(VLOOKUP(B1,$DC$2:$DD$48,2,FALSE)=TRUE),"",(VLOOKUP(B1,$DC$2:$DD$48,2,FALSE)))"

End Sub

いい解決法は無いでしょうか?

385:デフォルトの名無しさん
08/04/24 13:12:04
>>383
セルがダブルクリックされた状態になっているのでは?
他のセルを選択しなおせばOKのはず

386:デフォルトの名無しさん
08/04/24 13:20:00
>>384
この場合は、「""」は「""""」と記述すれば上手くいくと思うよ。

387:デフォルトの名無しさん
08/04/24 14:39:11
>>386
おお、上手くいきました。ありがとうございます!

388:デフォルトの名無しさん
08/04/24 21:24:09
OS:XP Excel2003
共有フォルダにあるファイルを開きたいのですが、
どのように書けば共有フォルダを指し示すのでしょうか?
例えばCドラにあるファイルなら「C:\ファイル名」
と書きますよね。


389:デフォルトの名無しさん
08/04/24 21:33:03
\\共有名\hoge

390:デフォルトの名無しさん
08/04/24 21:41:21
ブー
詳しくはWindows板で聞く事
スレ違いというか板違い。
板違いの質問への回答はご遠慮下さい。

391:デフォルトの名無しさん
08/04/24 21:43:26

了簡が狭いとはこの事を言うんだね。

392:389
08/04/24 21:47:13
板違いでしたか失礼しました。

393:デフォルトの名無しさん
08/04/24 21:58:49
エクセルの質問じゃないのか?
知らんけど

394:デフォルトの名無しさん
08/04/24 23:49:51
>>390
>>388はEXCELでVBAを使用して開く場合はどうしたらいいのか聞きたいんだと思う。

395:388
08/04/25 01:05:42
>>394 その通りです。
VBAで共有フォルダのファイルを開くコードを
書こうと思ったのですが、どう書けばいいのか
わからず困っていました。
適当にググったのですが答えは見つかりませんでした。

396:デフォルトの名無しさん
08/04/25 01:14:29
>>388
で答えはわかったの?
共有フォルダー
コンピュータ名=EXCELの
共有ディレクトリVBAの
サブフォルダーXLSの
ブックtest.xlsを開くコードは?

397:デフォルトの名無しさん
08/04/25 12:44:00
工数の累計を求めたいのですが、同じ計算式でも
EXCELのセル上で計算したものと、VBA上で計算したものと
では結果が微妙に違います。
何故でしょうか?

398:346
08/04/25 13:48:29
セルの書式設定のパターンで網掛けをやると文字の上に網かけるじゃないですか
VBAの力を駆使して文字の下に網かけれるようにできないですか?

399:デフォルトの名無しさん
08/04/26 01:07:28
VBAなどでのExcelの操作は、
あくまで人間が操作してできることしかできないよ、それ以上でもそれ以下でもない。

400:デフォルトの名無しさん
08/04/26 01:54:20
またアホが湧いた

401:デフォルトの名無しさん
08/04/26 14:29:11
入門用の書籍で
やさしくわかるExcel関数・マクロ 改訂版
を買おうと思うんだけどどう?

402:デフォルトの名無しさん
08/04/27 10:03:45
ポケモンキャラクター図鑑とかウルトラマン
怪獣図鑑みたいなものだと思って買う
コンビニで売ってるくらいのもので、実にコンビニエンス!
な本。ただし内容は覚えないほうがいいよ。

403:デフォルトの名無しさん
08/04/27 10:35:50
>>402
じゃあおすすめ教えて下せえ
皆さんはどうやって覚えたの?_実習あるのみ?

404:デフォルトの名無しさん
08/04/27 13:25:29
>>403
俺はインプレスのできる大事典で覚えた。

405:デフォルトの名無しさん
08/04/27 14:22:00
>>404
おまえは俺か

俺もそれで覚えた。カラフルで見やすくおすすめ。取り組みやすい。

406:デフォルトの名無しさん
08/04/27 15:24:05
>>402

ドラえもんのポケットの中の道具辞典だろ? マクロや関数は。
ドラえもんの道具辞典みたいなもんだよ。エクセル便利マクロ集ってのは。
(ちょっと使いすぎたり適用範囲間違えるとのび太みたいに災難に合う)
VBAがウルトラマンに出てくる怪獣みたいなもの。

407:デフォルトの名無しさん
08/04/27 17:32:05
最近のだと
しっかり学ぶ! Excel VBA 短期集中講座 [VBAマクロ基礎] 編
がいーよ。


408:デフォルトの名無しさん
08/04/28 11:34:36
VBAforEXCEL 2003 sp1に関してなのですが、F8で一行ずつ実行しているときに、
Application.ScreenupdatingをFALSEにすると、なぜか(?)一行ごとに
画面の更新が行われ、非常にもたつきます。

これは、2003のみの仕様なのでしょうか。
あるいはサービスパック適用で改善されたりしますか。

よろしくお願いいたします。

409:デフォルトの名無しさん
08/04/28 12:36:50
2003SP3 Application.Screenupdating = FalseでもF8で実行すると画面は更新されています
ただし、非常にもたつくという症状はありませんでした

いずれにしてもSP3は適用しておいた方がいいと思いますよ

410:408
08/04/28 12:46:17
>>409
ありがとうございます.
ただ、不思議なことにUpdating = TRUEの記述が入っていると、
はやく実行されるんですよ。ちょうど意味が逆転する感じで・・。

411:デフォルトの名無しさん
08/04/28 13:16:36
スマン、ちょっと教えて欲しいんだが、数字を小さい順に並び替えるのってどうやるんだ?RANKにすりゃいいのか?

412:デフォルトの名無しさん
08/04/28 13:30:05
print文で正規表現を用いた出力をしたいのですが、
どのようにしたら良いでしょうか。
例:print "(tab)Hello"
(tab)の箇所にタブを入れたいと思います。
もしくは、正規表現を用いずに出力する方法はあるのでしょうか。

413:デフォルトの名無しさん
08/04/28 13:35:33
>>412
vbTab

414:デフォルトの名無しさん
08/04/28 13:40:28
URLリンク(www.nicovideo.jp)

415:デフォルトの名無しさん
08/04/28 14:19:08
>>411
配列のソートが出来ないのは不便。
シートに数字を広げて、昇順かけるしかないでしょ

416:デフォルトの名無しさん
08/04/28 14:26:05
Sub 長さ4の配列データの並べ替え( A )

if(A(1)<A(2)AND(A(2)<A(3))AND(A(3)<A(4))then
return
end if
if( (A(2)<A(1))AND(A(1)<A(3))AND(A(3)<A(4))then

A(1)=A(2)
A(2)=A(1)

end if

あと14個似た構文が続く

End Sub


以前、会社のシートにこれがあった。
バグが出る度に書き直していった苦労の跡がにじんでた。
なんだかんだいって、結構偉大なコードだと思った。

417:412
08/04/28 14:26:47
>>413
ありがとうございます。
解決しました。

418:デフォルトの名無しさん
08/04/28 15:15:49
>>415 サンクス。早速やってみる。

419:デフォルトの名無しさん
08/04/28 19:25:51
>>416
笑えるなあ。


420:デフォルトの名無しさん
08/04/28 19:32:36
>>416
A(1)=A(2)
A(2)=A(1)

この時点で両方A(2)

421:デフォルトの名無しさん
08/04/28 21:39:55
俺はソートにはADO使っちゃうな

422:デフォルトの名無しさん
08/04/28 23:03:39
>>411
URLリンク(officetanaka.net)

423:デフォルトの名無しさん
08/04/29 02:16:06
>>411
配列のソートならググればサンプルがゴロゴロ転がってると思うが。
>>422
えれー遅いな。
つかえねー。

424:デフォルトの名無しさん
08/04/29 09:58:17
>>423
自前で作れば数倍早いが、こんだけ楽さしてもらってこのスピードなら十分使えるだろ

'Common Language Runtime Library を参照設定
Const NUM_MAX As Long = 65536
Dim DataList As mscorlib.ArrayList
Dim i As Long

Set DataList = New mscorlib.ArrayList

For i = 1 To NUM_MAX
DataList.Add Int(Rnd() * NUM_MAX)
Next i

Range("A1").Resize(NUM_MAX).Value = _
Application.Transpose(DataList.ToArray)

DataList.Sort
Range("B1").Resize(NUM_MAX).Value = _
Application.Transpose(DataList.ToArray)

DataList.Reverse
Range("C1").Resize(NUM_MAX).Value = _
Application.Transpose(DataList.ToArray)

Set DataList = Nothing


425:デフォルトの名無しさん
08/04/29 14:52:25
ソート関数ぐらい自前でちゃっちゃと用意できないあたりが
やっぱVBAスレって感じでいいね(ゲラプwww

426:デフォルトの名無しさん
08/04/29 15:04:17
大きく出たな

427:デフォルトの名無しさん
08/04/29 15:17:03
>>425
こんな口ばっかりのヤツに限っていまだにVB6あたり使ってそうw

428:デフォルトの名無しさん
08/04/29 15:25:14
VB6は軽くていいぞ
業務アプリのGUIはアレで十分なんだがな

429:デフォルトの名無しさん
08/04/29 16:28:29
エクセル使っていながらソートを自作するはめになったのは何故か。
自問するべきだ。どこで間違えた?


430:デフォルトの名無しさん
08/04/29 18:40:42
逆だ。配列の使いにくさはVBAが最強。
故に車輪の再発明ばっかやるハメになる

431:デフォルトの名無しさん
08/04/29 23:33:15
VBAでもStringBuilder使えるのね…

432:デフォルトの名無しさん
08/04/30 09:35:33
エクセルVBAスレの割りに、配列をシートにペーストして
昇順後→再格納の手法が忘れられてないかい

433:デフォルトの名無しさん
08/04/30 09:52:52
>>432
オートフィルターのこと?

434:デフォルトの名無しさん
08/04/30 10:06:36
>>433
orz

435:デフォルトの名無しさん
08/04/30 10:12:30
>>432
質問者はそれを求めてるように思える
そもそも配列でもなく、再格納の必要もなさそうな気がする


>>424
これは便利
勉強になりました

436:デフォルトの名無しさん
08/04/30 10:13:09
>>433
A
 ↓
Z

このボタンを押すマクロ記録を何度やったことか。
しかも、ラベル行がないと、滅茶苦茶になるし。

437:デフォルトの名無しさん
08/04/30 10:35:45
>>436
それは使い方が悪い。

438:デフォルトの名無しさん
08/04/30 11:06:26
>>424
参照設定したらDataList.とピリオド打てばインテリセンスが効きそうなもんだが、効かないね。
SortやReverseやToArrayの他にどういうメソッドやプロパティがあるかおせーて。
オブジェクトブラウザでも出てこねー。

439:デフォルトの名無しさん
08/04/30 11:21:39
必要な箇所だけCSVに転記(このマクロはVBAで自分で書いてすぐに捨てる)
外部プログラムでソートした別のCSV作って読み込む。これを元の場所に再格納
(このマクロもVBAで作ってすぐ捨てる)

外部プログラムは当然VB. VBS on WSHという手段もあるが、これは手軽だがそれほど
早くはない。
.NET FrameWork(MS無償提供)入れたWindowsならVBコンパイラ付いてるぞ。
インテリセンスとかそういう高機能なIDEじゃないとプログラム開発出来ないという
のであればVB 2008なりなんなりGetしてInstall)
CSV読み込んで配列に格納して、それをソートする処理はまぁちょっと勉強しなきゃ
辛いだろうな

兎に角Excelシートに見苦しい、一度しか使わないようなVBAコードは残さないこと
が精神衛生上好ましい。

440:デフォルトの名無しさん
08/04/30 11:39:39
>>439
シートから不要不急のVBAコードは削除することは同意
誤動作された場合の被害が大きい。
ただそういった使用済みのコードは完全に捨ててしまうのも
やはり問題。別の理由で、データ破損してしまい作り直さな
ければならない場合とか、大騒ぎになるな。
テキストファイルに落としてオブジェクトとして
埋め込んでおくのがいいと思う。

441:デフォルトの名無しさん
08/04/30 12:22:20
>>439
何番へのレスなの?

442:デフォルトの名無しさん
08/04/30 13:31:27
>>439
それコード書く意味あんの?

443:デフォルトの名無しさん
08/04/30 14:13:23
>>442
ちょっと複雑な比較順序でソートしなければならない場合とかだと
(ex 国語の点数が同じなら、数学と理科の重み4:3の平均で比較し、
それも同じなら、歴史と社会の重み2:3の平均で比較し )
やっぱりVBAコードに頼らざるを得ないよ。
手動操作で出来る場合も多いけど、ミスを疑われるから検証作業が要求されるので
結局、コードが残って再現もできるようにしといた場合のほうがずっと信頼される。
自分のだったら兎も角、共有シートとかだと、勝手にシートや列を行を増やしたり、
隠したりすることも出来ない場合が殆どだし、何かまとまった操作をする場合は
やっぱりVBAを使うよ。
でもVBAを使ってちょっと荒くデータ操作とかすると古いバージョンのExcelだと落ちるは、
シートが何故か肥大かするわで、嫌う場所も多いね。
だから外部ファイルにデータだけ抜き出して、処理してから書き戻すってことを
要請されることが多い。
シートのデータは、手作業だと抜き出しにくいように工夫されてるから、外部ファイルに
書き出す作業もVBAを使う。


444:デフォルトの名無しさん
08/04/30 14:14:19
>>441
俺もわからんかった・・

445:デフォルトの名無しさん
08/04/30 14:19:40
つまり、元々のシートの設計が悪いとVBAに頼った糞運用せざるを得なくなるってことですね。

446:デフォルトの名無しさん
08/04/30 14:27:04
そうExcelの設計が悪すぎなのかもな

447:デフォルトの名無しさん
08/04/30 14:40:00
csvの仕様も死ねる

448:デフォルトの名無しさん
08/04/30 17:27:18
>>443
> 結局、コードが残って再現もできるようにしといた場合のほうがずっと信頼される。
コードはすぐ捨てるんじゃなかったの? >>439とは別人?

449:デフォルトの名無しさん
08/04/30 17:33:10
>>438
URLリンク(msdn.microsoft.com)(VS.80).aspx

450:デフォルトの名無しさん
08/04/30 18:42:04
最新バージョンはどうかしらないけど(できるの?)
Excelは手動操作ログ記録とそのロールバックは保存できないからな。
使ったVBAをプリントアウトしてシートから削除して提出
したらVBAが作業ログと差分を兼ねることにもなる。
(自分と先方の作業前シートのバックアップ保持は当然)

451:デフォルトの名無しさん
08/04/30 18:57:56
一般ユーザレベルのノウハウは、ソフトウェア板ででもやってちょ

452:デフォルトの名無しさん
08/04/30 19:23:19
Excel&VBAくらい「一般人」向けの組み合わせはないと思うけどな

453:デフォルトの名無しさん
08/04/30 20:21:46
ぷ、ぷりんとあうとしてさくじょ・・・

454:デフォルトの名無しさん
08/04/30 20:39:40
>>443
その例題はVBAいらない。
VBAでやりたいなら止めはしないが。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4266日前に更新/248 KB
担当:undef