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


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

Excel VBA 質問スレ Part23



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/


408 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 03:41:06.42 ]
>>407
Offsetは左上の単一セルしか見ない
範囲を広げるにはResize

409 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 07:09:13.61 ]
>>403
ありがとうございました。intカウンターをLongで解決。
なんで32000行あたりの特定の数字でオーバーフローしちまうのかなぁ

410 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 07:28:41.30 ]
>>409
それぞれの型には範囲ってもんがある

基本的なことぐらい知ってれやれよ

www.geocities.jp/cbc_vbnet/kisuhen/hensuu.html
変数・定数(基礎編)



411 名前:デフォルトの名無しさん [2012/02/24(金) 08:28:36.17 ]
>>407
実際にRange("C1:C3")になるぞ。
そっちのPCは呪われてるのか?

412 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 19:19:10.59 ]
>>411

>>407

>"A1:A3"は、結合してるセルなのだけど、何か関係ある?

って書いてるけど、うちの環境で試しても
A1:A3が普通のセルならC1:C3を返すけど、
A1:A3を結合してるとC1だけしか返されなかったよ。

413 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 14:46:56.38 ]
>>412
ちょっと気になっていろいろ試してみた
ヘルプには
>指定された範囲からのオフセットの範囲を表す Range オブジェクトを返します。
とある

ここでの指定された範囲ってのは指定したRangeじゃないし、オフセットの範囲ってのもそのRangeの範囲じゃないってことらしい

問題は、結合セルに対してOffsetをとった場合
指定された範囲=結合セルという一つの範囲
オフセット基準=指定範囲の終了地点(右下)
だとみなされるようだ
A1:A3が一つの結合セルだった場合、Range("A1").OffsetもRange("A2").OffsetもRange("A3").Offsetも同じ動作をする

普通にOffset実装したらそういう動作しそうもないから、
わざわざ結合セルに対するOFFset動作は特別な動作するように実装されてるんじゃないかな

ということで、>>407そう言うものだと思われます

だれかこの動作の公式なドキュメントしってる?

414 名前:デフォルトの名無しさん [2012/02/27(月) 00:59:22.80 ]
Excelファイルが読み取り専用の場合、入力できなくする方法

Excelファイルを読み取り専用で開いてるのを忘れて、
いざ保存しようとした時に読み取り専用だった事を思い出すって事ありませんか?
だったらセルのロックみたいに入力自体できなくすればいいじゃないかと
思ってはみたもののどうすればいいかわかりません。
読み取り専用推奨で保存したファイルを開いて
読み取り専用にするか訊いてきた時に"はい"の場合はセルのロック、
"いいえ"の場合はセルのロックを解除というマクロを組んでAuto_Openで動かしてみましたが、
どうも訊いてくるより先にAuto_Openが実行されているようでうまくいきませんでした。
読み取り専用で開くかどうかもマクロで組めれば解決するのかなと思いますが、やり方がわかりません。
どうにかならないでしょうか?

415 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 01:19:29.12 ]
Workbook_Openイベントプロシージャ

416 名前:デフォルトの名無しさん [2012/02/27(月) 07:37:36.89 ]
マクロの記述で質問です。
B列のセルに"日本"を入力すると、
その該当するC列とD列のセルの値や文字列をクリアして斜線を入れたいのです。

例えば
B2へ"日本"を入力すると、C2〜D2のセルに入っている値・文字をクリアして
自動的に斜線を入れる、

同じく
B3へ"日本"を入力すると、C3〜D3のセルに入っている値・文字をクリアして
自動的に斜線を入れる、

といった感じです。

ここで
B2に対してはそれらの動作が上手くいくのですが
B3やB4以降の行に関しては上手くいきません。

例えばB3へ"日本"を入力するとC3〜D3のセル内容はクリアされずC2〜D2の値がクリアされてしまいます。
B4やB5以降に関しても同じくC2〜D2の値がクリアされてしまいます。



417 名前:デフォルトの名無しさん [2012/02/27(月) 07:39:07.10 ]
上の続きです。
一応マクロの文です。
おそらく相対参照の問題だと思います。
調べて試行錯誤しましたが上手いやり方がわかりません。
Excel2003です。
どなたかご教授お願いします。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r, trg As Range
Set trg = Intersect(Target, Range("B2:B14"))
If Not trg Is Nothing Then
For Each r In trg
If r.Value = "日本" Then
r.Offset(0, 1).Resize(1, 2).Borders(xlDiagonalDown) _
.LineStyle = xlContinuous
Range("C2:D2").ClearContents
Else
r.Offset(0, 1).Resize(1, 2).Borders(xlDiagonalDown) _
.LineStyle = xlNone
End If
Next r
End If
End Sub

418 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 07:47:41.48 ]
> Range("C2:D2").ClearContents
それはそうだろ、としか。

419 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 08:01:13.16 ]
Range(Cells(i,j),Cells(i+?,j+?))
でこのi,j,?を操作すれば


420 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 12:37:05.35 ]
Range("C2:D2").ClearContents を

r.Offset(0, 1).Resize(1, 2).ClearContents
で、いけたわ

こういうのわかりにくいから、
r.offset(0.1).clearcontents
r.offset(0,2).clearcontents

ってやってるわ。

421 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 16:29:03.11 ]
>>418-420
ありがとうございます。
削除する対象のセルを結合したセルにすると
「結合された一部のセルを〜」のエラーが出てダメになりましたが
r.Offset(0, 1).Resize(1, 2) = "" にすると大丈夫でした。
お世話になりました


422 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 18:00:44.53 ]
range(“a1“).numberformat=“@“
range(“b3“).numberformat=“hh:mm“
if range(“a1“)<>range(“b3“) then
としても差異は検出されないけれど、セルの内容全てを比較したい場合は、全プロパティ分のifを書いてやらんとあきまへんのどすか。

423 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 18:02:54.64 ]
.text

424 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 19:26:17.07 ]
range("a1").numberformat="#,##0"
range("b3").numberformat="#,##0;-#,##0"
値は両方とも100

この場合も違うと判定させたい?


425 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:40:37.48 ]
させたいどす。
.value でも .width でも罫線でも、違いを検出したいんどすえ。

426 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 10:59:13.54 ]
rangeのプロパティカウントさせることができないっぽい
自分で関数作るか、if文書くかしかなさげ

というか、プロパティカウントできないの初めて知ったわ
これ地味に不便ね



427 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 12:42:32.91 ]
VISTA Excel2007 です
ライブラリの参照設定をコード内で実行したいのですが、
同じ文を標準モジュールに書くとエラーが出ないのに
クラスのイニシャライズに書くと「中断モードでは実行できません」と
エラーメッセージが出ます(ただ参照設定の処理がなされます)
クラスのイニシャライズでエラーが出る原因など分かる方がいましたらご教授ください
以下コード:
Const DAOFileFPath As String = "C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll"

ActiveWorkbook.VBProject.References.AddFromFile DAOFileFPath




428 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 21:31:31.36 ]
>>427
べつに普通に実行できるが
そのエラーメッセージの通り、中断モードのままやるからエラーになってるだけだろ


429 名前:427 mailto:sage [2012/02/29(水) 01:03:02.92 ]
すみません
もっと早く書き込みたかったのですが仕事で抜けられませんでした
イニシャライズでなくメソッドにしても同じエラーになったので
もしやと思い、クラスを新規作成して一からコードを手打ちしていったら
今度はうまく行きました
モジュールが壊れていたんだと思います
必ず通るはずのStopをスルーして、その先のMsgBoxが動いている時点で気づくべきでした
前にもこんなことがあって、別のモジュールに一から書き直したらやっぱり普通に動いた
そんな無茶な使い方してるわけじゃないのにな…
どうも失礼しました

430 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 02:44:05.36 ]
いやだから、Stopで止まったら中断モード...
まあいいか

431 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 10:05:54.43 ]
忙しすぎて日本語読む余裕がないんだろうな

432 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 00:18:08.68 ]
すみません、どうも詰まってしまったので質問させてください
商品名の入っているシートから、数学で言う所の和集合を取りたいと考えています
例えば、

A列 B列
1 CC TT

2 HH CC

3 TT E3

となっているようであれば、(CC、TT、HH、E3)を取り出して、できれば1セルに一つの名前という形で長く並べたいと考えています

Sub Test()
Range("F8").Value = Union(Range("A1:A3"), Range("B1:B3")).Value
End Sub

おそらくUnionを使うのかなと考えて、とりあえず1セルに一つの名前ということを考えずに書いてみたのが上のコードなんですが、
実行するとF8にはCCしか入力されません。これはどこが間違っているのでしょうか?
どなたかよろしくお願いいたします。

433 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 02:13:02.97 ]
すいません、色々試してみたら半分くらい自己解決できました。

Sub MultipleRange()
Dim rng1 As Range, rng2 As Range, myMultiRanges As Range

Worksheets("Sheet1").Activate
Set rng1 = Range("A1:A3")
Set rng2 = Range("B1:B3")
Set myMultiRanges = Union(rng1, rng2)

Dim i As Integer
For i = 1 To 6
Cells(10, i).Value = myMultiRanges(i).Value
Next i

End Sub

これだと重複ができるようなので、これやった後に重複チェックのコードを別にかければなんとかいけそうです。お騒がせしました

434 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 10:10:50.67 ]
Excel2010 (win7 home)

Worksheets("test")の
Private Sub Worksheet_Activate()
UserForm1.Show
End Sub
と入れて Worksheets("test")のタブをクリックして表示させた時に
Userform1が立ち上がるのは確認したんですが、

ThisWorkbookのシートモジュールの
Private Sub Workbook_Open()
Worksheets("test").Activate
End Sub
としてブックの起動時にWorksheets("test")をアクティブにしても
Userform1が出てこないんですが、これはなぜ?
明示的に
UserForm1.ShowをWorkbook_Open()に入れればもちろんフォームが
出てくるんですけど、これではあまり意味がないような気がする
んですけど。

435 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 10:20:46.78 ]
九分九厘、そのワークシートtestがブックを開く時点からアクティブなんだろうな。
ワークシートのActivateイベントは「他のシートから移動してきたとき」しかトラップされないから、
ブックを閉じるときにtestがアクティブな状態で保存されて、開くときに最初からアクティブだとトラップできてない。

試しにワークシートtest2を作って、それをアクティブにした状態で保存して開いてみ?

436 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 10:38:38.23 ]
おおっ、即レスかつその通りでした!

ありがとうございますm(__)m



437 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 18:16:46.90 ]
VBAで

あ 1
あ 1

を行を文字と数字に列を整えることは可能?

438 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 18:20:24.65 ]
ちゃんとした日本語の説明か、結果のプレビューを頼むwwwwwwwwwwwwwwww

439 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 20:08:50.04 ]
エスパーの訓練が捗るな

440 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 20:50:42.49 ]
Excel2010(vaista)ですが
家計簿を作成してまして収入と支出の差額を表の一番右下の
セルに表示させているのですがそのセルの数字が黒字(0以上)ならセルの背景を青
赤字(0未満)ならセルの背景を赤にしたいのですが上手くできません
そもそもVBAでは不可能なので素直に条件式書式設定を毎回
使用したほうが良いのでしょうか?

441 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:14:39.94 ]
条件式書式設定でできることを態々VBAでやろうとする意味が分からないんだが

442 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:09:42.41 ]
Excel 2010です。開発タブをリボンに表示させる方法を教えて下さい。
2007では、「ファイル」→「オプション」で「開発タブをリボンに表示する」が
出て来るのですが。

443 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:15:51.44 ]
イベントプロシージャに親プロシージャの引数をわたすことは
可能でしょうか?

444 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:20:12.40 ]
>>443
おや?

445 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:23:55.72 ]
今日は妙に>2すら読まない奴が多いな…

446 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 01:38:50.37 ]
>>442
ファイル→オプション→リボンのユーザー設定→開発にチェック



447 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 12:51:59.64 ]
ユーザーフォーム上のコマンドボタンの色を変更する目的でカラーパレットを表示させたいのですが、
どうすればいいでしょうか?
マクロに記録してから中身を見ようと思ったのですがVBAにはマクロの記録がなくて、ググっても
RGBの値を直接代入する例ばかりでよくわかりませんでした。
よろしくお願いします。


448 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 13:03:47.62 ]
カレーパレットダイアログは搭載されてない。
自分でユーザーフォームで1から作るか、WinAPIを使って自分で実装するしかない。

お好きな方で。

449 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 13:16:57.63 ]
>>448
ありがとうございます。
自作することにします。

450 名前:デフォルトの名無しさん [2012/03/02(金) 13:54:58.28 ]
パッチあてるのどうやるの?

sed -i s/hello/こにゃにゃちわ/g *.[ch]
cc *.[ch]
相当。export、import手作業は嫌です。

451 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 14:04:19.91 ]
そんな便利なものはない。
自分でやるなら、VBComponent.CodeModule.ReplaceLine使え。

452 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 14:08:57.19 ]
アドインにしとけ

453 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 18:23:02.19 ]
witheventsを使うときに、コマンドボタンの1〜5個めはイベントを共有して、
6〜10個めはそれぞれ独自のイベントにしたい場合はwitheventのプロシージャーの
中で判断するしかないですか?

454 名前:デフォルトの名無しさん [2012/03/02(金) 18:41:09.43 ]
>>451
ありがとう。
var=VBComponent....Lines(...)
replace(var,“hello“,“こにゃにゃちわ“)
VBComponent....Lines=var
みたいにして絶望していた。

>>452
もう一歩教えてくだsあ。
アドインにReplaceLine()なりを書けという意味? アドインにサブルーチンの置換プラグイン相当の機能があるという意味?


455 名前:デフォルトの名無しさん [2012/03/03(土) 16:16:57.97 ]
シートがなくなるまで、2シートずつ選択してプリント。

Sub pare_print()
Dim i As Integer

For i = 2 To Sheets.Count

Worksheets(Array(i, i + 1)).PrintOut
i = i + 2
Next i

End Sub


できません・・・なんででしょう??(´Д⊂ヽ
プリントアウト始めのシートは2番目からです。。

456 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 16:22:32.24 ]
複数枚のグラフをユーザーフォーム上に重ねて表示させることはできるでしょうか?
今はシート上に重ねて表示させているのですが表示場所をずらしたい時とか、全体に
拡大縮小したい時にどうすればいいかわからず、ユーザーフォーム上ならユーザーフォームを
移動、拡大縮小することによって簡単にできるかなと思ったのですが、ググっても情報がないみたいで。
よろしくお願いします。



457 名前:455 [2012/03/03(土) 16:26:48.45 ]
どうもすみません。
最初のシート名は、0だったようです。できました。

458 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 17:14:23.39 ]
    
顕正新聞 平成24年2月5日号「原発全廃特集号」

原発は日本を滅ぼす、即時全廃せよ
人のDNAを破壊、国土を居住不能にする
代替は天然ガス・コンバインドサイクルで十分
惨禍もたらすを知って推進するは犯罪

ttp://d.hatena.ne.jp/kensho01/20120208/1328718592

459 名前:456 mailto:sage [2012/03/03(土) 20:56:39.14 ]
すみません。OSとバージョンを書き忘れました。

OS:BeOS Release4 (intel版です。PowerPC版ではありません )
バージョン:Gobe Productive 1.1

引き続きよろしくおねがいしますm(_ _)m

460 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 10:36:07.81 ]
こんにつわ、質問です。

A1-A50にランダムで指定の文字列もしくは空白が入ります。例えばリンゴ、ミカン、etcで、それぞれリンゴ...001、ミカン...050のようにあらかじめ対応する数字が割り振られています。
この文字列、つまり数字を条件に処理したいのですが、この場合A1から順に判定するよりも、A列から抽出して重複と空白を除外し、その結果を例えばB列に貼り付けて、B1からB?の空白まで処理をくり返すのが良いと思うのですが、どうでしょうか。具体的にどう書けば良いですか?


461 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 10:41:38.47 ]
>>460
B列に貼り付ける処理が無駄
FOR EACH でA列のRANGEを処理しながら回せばよろし

462 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 10:57:16.47 ]
thx.
RANGEが固定ではない場合の上手い方法ありますか?適当に下まで引っ張ればいいですか?

463 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 11:12:33.48 ]
分からねえ分からねえよぉ

A列に指定の文字列ランダムに配置
B1-B50に指定の文字列
C1-C50に指定の文字列に対応する数字
があるとして、A1から順番に対応する数字をMsgboxで表示していくコード誰か書いてくれぉ

464 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 11:18:31.63 ]
VLOOKUP使えよ

465 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 11:33:29.98 ]
thx.
A1からセル内の数字だけ取り出すにはどうすればいいですか?
漢字/12345\/
という形式から
12345
を取り出したいです

漢字は1-5文字のランダムなので、LEFTは使えないです
数字は5桁固定で必ず\の前です

466 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 11:35:50.15 ]

for i = 1 to 最終行

最終行の取得はお好きにどうぞ





467 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 11:38:22.77 ]
>>465
正規表現でもLikeでもお好きにどうぞ


468 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 12:24:26.18 ]
Dim c As Object
For Each c In Worksheets(imacat).Range("A1:A100")
If c.value Like "*##*" Then
Msg:
MsgBox "cである"
End If
Next c

ここまで出来た…

469 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 12:27:05.40 ]
Msg:要らないな
MsgBoxにマッチした数字を表示したいのですけどできません

470 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 12:44:36.54 ]
>>469
AHO

471 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 12:51:45.21 ]
MsgBox c & "である"

472 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 13:00:32.31 ]
そもそもLikeでマッチした数字返せるのけ?

473 名前:デフォルトの名無しさん [2012/03/04(日) 13:12:38.41 ]
>>465
instrで/と\の位置を探してmid関数を使えば?

474 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 13:19:10.28 ]
>>463 コード書いたのでどうぞ使ってください。>>464のいうとおりVLOOKUPを使用して組んでみました。
Sub Test()
  Const s = vbKeyLButton: Const e = vbKey2: Dim vlookup: Set vlookup = Application
  Dim i: For i = s To e:
    Dim v: v = Evaluate(Chr(vbKeyF7) & Chr(vbKeySeparator) & Chr(vbKeyDivide) & Chr(vbKeyDivide) & _
    Chr(vbKeyAdd) & Chr(vbKeyF6) & Chr(vbKeyF1) & Chr(vbKeyDown) & Chr(vbKeyNumpad1) & i & _
    Chr(vbKeySnapshot) & Chr(vbKeyNumpad2) & s & Chr(vbKey9 + 1) & Chr(vbKeyNumpad3) & e & _
    Chr(vbKeySnapshot) & Chr(vbKey2) & Chr(vbKeySnapshot) & Chr(vbKeyNumpad6) & Chr(vbKeyNumpad1) & _
    Chr(vbKeySeparator) & Chr(vbKeyF4) & Chr(vbKeyNumpad5) & Chr(vbKeySelect))
    ' VLOOKUPで数字をMsgBoxで表示する
    vlookup.OnTime Now() + TimeValue(Chr(vbKey0) & Chr(vbKey9 + 1) & Chr(vbKey0) & Chr(vbKey9 + 1) & i), _
    Chr(vbKeyRight) & Chr(vbKeySubtract) & Chr(vbKeyNumpad2) & Chr(vbKeyDown) & IIf(IsError(v), String( _
    vbKeyRButton, Chr(vbKeyPageDown)), v) & Chr(vbKeySelect) & Chr(vbKeyRight)
  Next
End Sub
Sub MB(v): MsgBox (v): End Sub

475 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 13:31:13.08 ]
>>472
かえせるべ
正規表現のほうが楽だけど

str= "あいうえお12345"

strlen= len(str)

for i =1 to strlen

cha= mid(str,i,1)

if cha lile "[0-9]" then
c= c &cha
end if

next

476 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 13:35:24.62 ]
すげー。自力じゃ無理だったので有難く使いますthx!!!



477 名前:デフォルトの名無しさん [2012/03/04(日) 13:48:13.13 ]
数字だけ取り出すなら
dim a
a=instrr(cells(1,1),"\")
msgbox mid(cells(1,1),a-5,5)
が簡単だと思うけど。

478 名前:デフォルトの名無しさん [2012/03/04(日) 13:54:17.43 ]
VBAで可視セルを扱うにはどういう機能またはプロパティまたはメソッドを使いますか?


479 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 13:57:27.36 ]
>>478
可視セルをどう使いたいかによる。

480 名前:デフォルトの名無しさん [2012/03/04(日) 14:04:24.13 ]
>>479
toro.2ch.net/test/read.cgi/bsoft/1329913579/161-

481 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 14:23:38.72 ]
連続じゃないセル、たとえば、range("A1:A3")とrange("C1:C3")を3*2の配列に格納するには
どうすればよいのでしょうか?

482 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 14:35:08.42 ]
>>477
これにしたthxx.

483 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 14:36:48.77 ]
>>481
For〜Nextで順番に代入
作業列を使ってもいいんなら一ヶ所に固まるようにセル範囲をコピーしてからVariant型に代入
B列を削除して配列にコピーしてからアンドゥ

484 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 14:37:11.44 ]
>>481
dictionary使うとか

set dic = createobject("scripting.dictionary")
for i = 1 to 3
dic add cells(i,1)value, cells(i,3).value
next

for i =1 to 3
cells(i,5).value=dicitem(cells(i,4).value)
next

set dic=nothing




485 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 17:36:55.88 ]
こんばんばーん、質問です。

連結されているセルにデータがあるものとして判定するにはどうすれば良い?

例えば、文字列がE1とF1をまたいでいる。セルが結合されているとき、F1にValueしても空だが、データがあるものと判定したいです。セルの結合数はランダムです。

486 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 17:45:29.93 ]
MergeCellsで事故解決です



487 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 19:11:15.60 ]
>>483
>>484
ありがとうございました

488 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 13:07:02.09 ]
こんにちあ、質問です。

A1-A100に、空白セルもしくは"abc"のセルがあるとき、その行を削除したいのですが、
Dim c As Range
For Each c In Range("A1:A100")
If c.Value ="" Or c.Value = "abc" Then c.Rows.EntireRow.Delete
Next c

とすると、1度目の処理で空白行が消えて、もう一度処理するとabc行が消えます。なぜこの記述はダメなのか?一度の処理で済ますにはどう書けば良いですか?

489 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 13:28:54.49 ]
If c.Value ="" Or c.Value = "abc" Then c.Rows.EntireRow.Delete
 ↓
If c.Value ="" Or If c.Value = "abc" Then c.Rows.EntireRow.Delete

490 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 14:05:09.36 ]
エラーでますぉ

491 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 14:11:45.74 ]
>>488
ごめんアホなこと書いた

セルを消去してるので、セルが上に繰り上がってる
A2のセルを消去したらA3のセルがA2に繰り上がるので、そのセルは評価されない。

for each じゃなくて

for i =100 to 1 step - 1


A100から 減算させて評価させればいい。
つかstepとか忘れてて ぐぐったわ・・



492 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 14:29:25.31 ]
出来たthx!

質問です、
for i 1 to 100
文字列&i
next
とするときiが一桁のとき01のようにして&したいのですが、書き方ありますか?

493 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 14:32:02.47 ]
Right関数使え

494 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 14:32:35.75 ]
>>492
For i = 1 To 100
 str = str & Format(i, "00")
Next

495 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 14:38:43.95 ]
かんぺきthx!

496 名前:デフォルトの名無しさん [2012/03/05(月) 17:41:04.96 ]
どなたか教えてください。
Access2000からExcelファイルを生成しています。
参照設定を Excel9.0 Objectlibrary へ設定しています。
生成先のExcelは2000だったり2003だったり、を想定しています。
以下のソースは動作します。

Function EXCEL_TEST1()

'事前バインディング 必ずEXCELへの参照設定が必要
Dim appWorld As Excel.Application
Dim wbWorld As Excel.Workbook
Dim Wksheet As Excel.Worksheet
Set appWorld = CreateObject("Excel.Application")
Set wbWorld = appWorld.Workbooks.Add
Set Wksheet = wbWorld.Sheets(1)

Wksheet.Cells(5, 5) = "カキコ"

LAST_CELL = Wksheet.Cells.SpecialCells(xlLastCell).Address
MsgBox LAST_CELL

wbWorld.SaveAs "C:\hoge.xls", FileFormat:=xlWorkbookNormal
appWorld.Quit

   開放処理

End Function



497 名前:496 [2012/03/05(月) 17:41:43.26 ]
これを以下のように、参照設定せずに実行時バインディングで行ないたいのですが、
LAST_CELL(最終セルアドレス)の取得と、
SaveAsの部分が動作しません。定数の記述が異なるのか、そもそも実行時バインディング
では記述できないのかも分かりません。どなたか御教授お願いします。

Function EXCEL_TEST2()

'実行時バインディング EXCELへの参照設定が不要 ----------
Dim appWorld As Object 'Excel.Application
Dim wbWorld As Object 'Excel.Workbook
Dim Wksheet As Object 'Excel.WorkSheet
Set appWorld = CreateObject("Excel.Application") '生成
Set wbWorld = appWorld.Workbooks.Add 'ブック追加
Set Wksheet = wbWorld.Worksheets(1)

Wksheet.Cells(5, 5) = "カキコ"

LAST_CELL = Wksheet.Cells.SpecialCells(xlLastCell).Address
MsgBox LAST_CELL

wbWorld.SaveAs "C:\hoge.xls", FileFormat:=xlWorkbookNormal
appWorld.Quit

   開放処理

End Function

498 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 18:03:38.27 ]
>>496
参照設定しないと
定数 xlLastCell や xlWorkbookNormal は
参照先で定義されているから使えないと思うぞ

自前で Const定義するか 定数値を指定するかどっちかしないと

499 名前:496 [2012/03/05(月) 19:26:17.24 ]
>>498
有難うございます。あまり参照設定とかは経験がないものですから、
何から手を着けてよいのか分からない状態です。

constする値を調べる方法があればよいのですが。

検索が下手なせいか、なかなか参考になるサイトが見つかりません。

500 名前:496 [2012/03/05(月) 19:34:55.74 ]
496です。解決しました。

498様のヒントで、以下のサイトを見つけました。
ttp://park.geocities.jp/gdfsm000/jacob/jacob05.html

動かないところを片っ端から定数指定していきます。

有難うございました。

501 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 19:44:05.05 ]
こんにつわ、質問です。
With ActiveSheet.QueryTables.Add
使ってるときに、存在しないURL,空白のURLを打ち込んだときにExcelがフリーズしてしまいます。
どうするのがよいですか?

502 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 19:44:54.64 ]
訂正
空白のurl→空白ページのurl

503 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 19:53:56.57 ]
www.microsoft.com/download/en/details.aspx?id=19600
何故かVBAの言語仕様書が混じってるみたいだ。
FirstReleaseが2008年なのがなんともw

504 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 19:56:19.90 ]
win7 64bit
office2010 32bitです

画像を複数枚選択して、なおかつそれらを40%の大きさにリサイズして取り込みたいのですが、どうしても上手くいきません。どなたかご教授お願いします。

505 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 00:23:45.39 ]
>>504


506 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 03:47:59.25 ]
教えてください。

If A then

with B

Else

with C

End if

って動かないみたいなんだけど、他に方法ありますか?



507 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 03:53:58.23 ]
>>506
下にEnd With が続くとエスパーして

Dim target As Withで使う型、またはVariant
If A then
Set tartget = B
Else
Set tartget = C
End If

With target
処理
End With



508 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 03:57:21.74 ]
>>507
こんなに早く
どうもありがとうございます。






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

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

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