[表示 : 全て 最新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)

601 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 06:43:22 ]
すみません
文字列の入ったセルをselectした際に、単にselectにするだけではなく、
編集中の状態にまでもっていきたいのですが、
そのような方法を御存じないでしょうか。
select後、sendkeys"{F2}"で実現できるのですが、
Sendkeysを使用しない方法を探しています。どうか宜しくお願いします。

602 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 08:24:46 ]
数式バーで編集じゃだめなの?

603 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 13:42:57 ]
Excel2003でSheet1のセルA1に日付を入れる(08/10/01)とSheet2以降のセルA1に次の日付になるように反映させるにはどうしたらいいですか?

604 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 13:52:14 ]
>>603
Sheet2以降のセルA1に、「=Sheet1!A1」と入力。

605 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 13:54:49 ]
+1忘れた

606 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 14:05:48 ]
>>604
d

607 名前:デフォルトの名無しさん [2008/10/20(月) 16:56:04 ]
どこがVBAやねん

608 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 18:13:53 ]
春から悩んでたかも知れないじゃないか

609 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 20:11:15 ]
>>599
まず、複数スレッドを作ることが実質的に無理だ。
Excel自体も、2007から再計算を複数スレッドで行えるようになったくらい。



610 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 20:17:31 ]
依存関係ありまくりの計算だからなあ。

611 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 15:00:07 ]
オートフィルターがオンになっているシートの選択行について、ソートと処理を
行った後、再度元の並びに戻す方法を模索中です。

1)選択行範囲の最後(列n)に式["=ROW()"]を設定
2)列nの式を値に変更(コピぺ)
*ソートと処理を行う
4)列nで昇順にソートした後、列nを削除

この方法だと選択範囲内に不可視のデータが存在すると、[2)]でコピーと貼付け
の領域が違うため貼付けエラーになります。

1行ずつ行番号をセットする方法は件数が多いと時間が掛かる為オートフィルター
情報を取得しておき、一旦オートフィルターオフにしてからコピペしています。
他にもっと良い方法をご存知でしたら御教授願います。

選択データを他ワークシートにコピーして処理する方法が一番良い気もしますが
データ量が三万件とかだとコピーにも多少時間が掛かるので...

612 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 17:29:28 ]
>>611
仮に、"=row()" を入れた範囲を range("G5:G10") として、
G列を非表示にして、
range("G5:G10").value = range("G5:G10").value
ってのはダメ?

613 名前:611 mailto:sage [2008/10/21(火) 18:27:03 ]
>>612
助かりました、有難うございます。orz

だけど、非表示だと何故上手くいくのでしょう?

614 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 18:33:32 ]
どこがVBAの問題なのか春先まで悩みそうだ

615 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 19:41:59 ]
>>613
わからん。なんかやってみたらできた
仕様なのかバグなのかも知らんw

616 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 21:01:59 ]
非表示だと pastespecial もうまくいくな
どうやら仕様くさい

617 名前:VBAの初心者 mailto:sage [2008/10/21(火) 21:24:20 ]
初めまして。自分は知り合いにVBAを教えて貰っているんですが、相手に人はPCが
無くよく分らなくてもし良かったら教えて下さい。

だだ走らせるだけの凄い簡単なプログラムらしいんですが私には走らせ方が分らな
くて困ってます。

10 for m=1 to12
20 print m
30 next m
40 stop
なんですが凄い初心者なのでエクセル開いた所から分らなくて教えて下さい。


618 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 21:27:30 ]
それはVBAじゃない。VBでもない太古のBASICのプログラム。

619 名前:VBAの初心者 mailto:sage [2008/10/21(火) 21:30:01 ]
らしいです。VBAを覚えたいなぁ〜って言ったら色々言われて私が全然分からなく
なってしまったので、まず見れる簡単なの教えてと頼んだんですが、今のじゃ無理
なんでしょうか;



620 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 21:50:26 ]
もしかしたら、その相手の人は(Excel) VBAを知らないという可能性も考えられる。

VBAも含めてナントカBasicってのは山ほどあるけど、どれも全く別物。
敢えて共通点をあげるとしたら名前にBasicが付いていることだけ、というのはさすがに言い過ぎだけど。

そして、お前は何をやりたいのか。Excel VBAで間違いないんだよな?

621 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 22:39:24 ]
釣られすぎ

622 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 23:24:21 ]
縦読みじゃないのね。

623 名前:デフォルトの名無しさん [2008/10/22(水) 07:27:31 ]
Interiorってクラス名としてはどうなんですか?

624 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 10:00:18 ]
激しく紛らわしいからやめた方が良いかと

625 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 00:27:13 ]
自作クラスのインスタンス380個ぐらい作ったらメモリ不足になった

626 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 19:16:21 ]
そりゃクラスの内容に因るだろうな
個数や上限決めておらず、必要に応じて作る場合とか
1万や2万は当たり前に使ってることあるが
ちゃんと配慮してれば全然問題ない

627 名前:デフォルトの名無しさん [2008/10/24(金) 11:20:18 ]
選択アドレスから重複を削除する方法はありますでしょうか?

例えば、選択したアドレスが[$A$2:$A$5,$A$5:$A$10]の場合、そのアドレス
範囲で集計(Subtotal)するとA5が重複して集計されてしまいます。

Excelのステータスバー(右側)には重複を除いた合計値が表示されます。
これと同様の値(特定の1列のみ)をVBAで取得したいのです。


628 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 12:06:03 ]
>>627
unionしちゃばOK

629 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 12:09:11 ]
>>627
Sub test1()
 Dim rg1 As Range, rg2 As Range
 For Each rg1 In Selection.Areas
  If rg2 Is Nothing Then
   Set rg2 = rg1
  Else
   Set rg2 = Range(rg2, rg1)
  End If
 Next rg1
 Debug.Print WorksheetFunction.Sum(rg2)
End Sub

>>628
Unionは無理じゃない?



630 名前:629 mailto:sage [2008/10/24(金) 12:20:32 ]
今テストしてたんだが離れたセルを選択した時に期待どおりの動きしないな・・・

631 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 12:22:27 ]
>>629
? range("$A$2:$A$5,$A$5:$A$10").cells.count
10
? union(range("$A$2:$A$5"),range("$A$5:$A$10")).cells.count
9
? union(range("$A$2:$A$5"),range("$A$5:$A$10")).address
$A$2:$A$10

「特定の1列のみ」だそうだからOKかなと

632 名前:629 mailto:sage [2008/10/24(金) 12:29:12 ]
RangeをUnionに書き換えたらいけたような気がするw

633 名前:デフォルトの名無しさん [2008/10/24(金) 14:52:48 ]
有難うございます。
Set rg2 = Union(rg2, rg1)
に変更したら上手くいきました。

もう1つ教えて下さい。
選択された範囲の行を対象に特定の列(例では8列目)を以下の様に集計して
いますが、選択範囲から集計範囲(特定列)への変換にもっと簡単なやり方が
ありますでしょうか?

Dim vals As Variant, i As Integer, c As Integer, addr As String
c = 8
vals = Split(Selection.Address, ",")
For i = 0 To UBound(vals)
With Range(vals(i))
vals(i) = Range(Cells(.Row, c), Cells(.Row + .Rows.Count - 1, c)).Address
End With
Next
addr = Join(vals, ",")
Debug.Print WorksheetFunction.Subtotal(9, Range(addr))


634 名前:633 mailto:sage [2008/10/24(金) 16:24:56 ]
列の特定と同時に重複を削除しないと駄目のようです。
>>629さんの方法に組み込むと良い様に思います。

Set r1 = Cells(rg1.Row, 8)
Set r2 = Cells(rg1.Row + rg1.Rows.Count - 1, 8)
If rg2 Is Nothing Then
Set rg2 = Range(r1, r2)
Else
Set rg2 = Union(rg2, Range(r1, r2))
End If


635 名前:デフォルトの名無しさん [2008/10/24(金) 16:33:53 ]
質問です。
エクセルで資料を作ったがMacroで両面コピーの方法が分からないので両面コピーの方法を教えて下さい。

636 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 19:46:01 ]
質問です
訳あって欧文(ウムラウトを含むラテン文字の文章)の書き込まれたExcelシートから
内容を読み出してテキストファイルに起こしたいのですが、
Cells(?,?).valueやCells(?,?).TextからStringsの変数に読み出した時点でウムラウトが飛んで
近しい形状の通常のアルファベットに置き換えられてしまうようです。

結構ぐぐって見たのですが、読み出せなくて困った的な話はいくつか見つけたのですが
対処法について言及しているページが無かったので、皆さんのお知恵をお借りできないかと
思って書き込みさせていただきました。
なにかお知恵などありましたらよろしくお願いいたします<(__)>

637 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 20:14:02 ]
>>635
何を何処へコピーするのか

638 名前:デフォルトの名無しさん [2008/10/24(金) 20:26:20 ]
両面コピーって両面印刷の事?プリンタの話になるんじゃないの?

639 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 20:33:08 ]
>636
元となるExcelファイルは、Excelのどのバージョンで作られたものですか?
あるいは、どこの国用のExcelで作られたものでしょうか?
VBAを利用せず、直接シートの必要な範囲をコピーしてエディタへ(ウムラウトは消えずに)
ペーストすることはできたのでしょうか?

↓このサイトは見ましたか?
www.microsoft.com/japan/office/ork/three/intd02.mspx
Office XP リソース キット / 国際環境での導入計画 / 国際環境でのメンテナンス
Unicode サポートの活用
「多国語テキストのコピー」の項と、「VBA で Unicode 値を使用する」の項が参考になるかも。



640 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 21:48:44 ]
あるサブルーチンをForループで回すと100回くらいなら一瞬で終わるんですが、
500回とかそれ以上になるとなぜか無限ループにでも入ったみたいに計算が終わってくれません。
オーバーフローのエラーメッセージが出ることもないし、実際オーバーフローするほど大きな数を扱っているわけでもない。
原因としてはどんなことが考えられるでしょうか?

641 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 21:53:05 ]
サブルーチンのforカウント変数をステータスバーにでも表示してデバッグのヒントにするのだ。
その情報だけだと、メモリかCPU?としか言えない。

642 名前:デフォルトの名無しさん [2008/10/24(金) 21:55:54 ]
>>635

sub 裏表印刷()

印刷実行

Msgbox ゛用紙裏面をセットしてください゛

印刷実行

end sub

643 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 21:56:08 ]
>>641
メモリっぽいですね。ちょっと調べてみます。
ありがとうございました。

644 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 22:09:55 ]
>>640
DoEvents
homepage2.nifty.com/kasayan/vba/doevents.htm

645 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 00:45:40 ]
636です

>>639
動作環境を書くのをすっかり失念してました
この手の質問には必須なのに…申し訳ありません

OSはXP日本語版でExcelは日本語版Office2000に含まれるものです。
現在VBA開発に使用しているxlsファイルは
Exciteの機械翻訳で出したものをコピペしてBOOKに張り付けてテストデータとして作成したものです

紹介していただいたリンク先を読むと、VBAではunicodeを標準ではサポートしていないようですね
(VBでは文字列関係の内部処理はUnicodeで処理されてるのに…変な気分…)
まあ、テストデータで使用している文章がUnicodeではなく単純に欧文ASCIIコードの文字列の可能性もあるので
Unicodeをサポートしていればうまく行くとは限らない気もしますが

でもちょっと手がかりをもらえたのでもう少し試行錯誤してみようかと思います。

646 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 07:04:27 ]
オーバーフローの意味もしらないのかVBA厨房は

647 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 11:29:01 ]
アクセスならともかく、エクセルでプリンタ設定いじるって難しいくね

648 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 14:59:26 ]
>>633
unionでいいんなら

Sub test()
Dim rg1 As Range, c As Integer
c = 8
Set rg1 = Intersect(Union(Selection, Selection).EntireRow, Columns(c))
Debug.Print WorksheetFunction.Subtotal(9, rg1)
End Sub

649 名前:デフォルトの名無しさん [2008/10/25(土) 15:46:42 ]
どなたかお教えください

マクロでたとえばですが

ActiveCell.Replace What:="*", Replacement:="x"

のように セル文字列の * の部分だけをxに変換したいのですが
アスタリスクはすべて変換してしまいますよね。

A1*A1 という文字列を上記マクロ実行するとA1xA1 という結果になって
ほしいのですが。実際は x 担ってしまいます

どのようにすればよいのでしょうか。




650 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 16:07:52 ]
>>649
ActiveCell.Replace What:="~*", Replacement:="x"

651 名前:デフォルトの名無しさん [2008/10/25(土) 16:09:39 ]
>>650

すごいですね。どうもです

652 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 17:06:03 ]
春先から悩んでた人多いな

653 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 18:11:57 ]
>>645
参考になるかも
ttp://codezine.jp/article/detail/1718



654 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 19:10:31 ]
しかし、エスケープシーケンスはもっとわかりやすくしてほしいよな。

655 名前:デフォルトの名無しさん [2008/10/26(日) 03:08:58 ]
教えてください
VBAで、明日が三週目の日曜日だった場合A1に○○と表示するってやりたいんでがどうやればいいですか?

656 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:24:14 ]
>>655
明日の日付はDate関数に+1すれば解る
特定の日付が日曜日か否かはWeekday関数で解る
3週目か否かは日を算術演算すれば解る
あとはそれらを条件に条件分岐してA1に値を代入すれば良い

この説明で解らなければ>>1★5なので、さようなら

657 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:44:51 ]
>>656
ありがとうございます。
算出演算ってのがよく解らないですががんばってみます。

658 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 06:05:51 ]
だからエクセルでやれよ

659 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 13:35:27 ]
だよな。数式でできるレベル



660 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 13:40:58 ]
 質問です。
 Excel2003を使っています。
 コマンドボックスをクリックするたびに、セルA1の数に1ずつ足していくマクロを作りたいのですが
どなたか教えていただけませんでしょうか。
 よろしくお願いします。


661 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 14:10:39 ]
ちょっとは自分で調べる努力した?

662 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 15:32:19 ]
>>660
コマンドボックスって何ぞや?

663 名前:660 mailto:sage [2008/10/26(日) 15:45:47 ]
 聞いておいて遅レスごめんなさい。
 コマンドボタンの間違いです。
 色々調べてみたのですが、変数の定義の仕方そのものがよく理解できていなくて

 わからないなりに考えたのが↓です

Sub test_Click()
Dim h As Long
h = Range("A1").Value
If h = 0 Then
h = 1
Else
h = h + 1
End If
End Sub

 もうちょっと頑張ってみます

664 名前:649 [2008/10/26(日) 15:48:36 ]
 お教え願いますか

 '=A1 という文字列を =A1 という数式に変換するマクロありますか。

同かよろしくお願いします。



665 名前:649 [2008/10/26(日) 15:50:36 ]
舌足らずでした

 あるセルに '=A1 という文字が書かれています。
マクロコマンド使って =A1 という数式に置換したいのですが。

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




666 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:32:40 ]
>>663

cells(1,1).value = cells(1,1).value + 1

>>665

Cells(1, 1).Formula = Cells(1, 1).Value

667 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:33:34 ]
>>663
Range("A1").Value = Range("A1").Value + 1


668 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:43:51 ]
こんなばかみたいな質問にいちいち答えるなよ

669 名前:660 mailto:sage [2008/10/26(日) 16:47:26 ]
>>666
>>667

ありがとうございました。
一から勉強してきます。



670 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 17:06:11 ]
変数の定義ができないとか、
単純な代入式も書けないレベルの奴は入門書買え
いちいち他人の手を煩わすな

671 名前:デフォルトの名無しさん [2008/10/26(日) 22:22:34 ]
初めて質問させていただきます。
初心者ではないですが、レベルは低いですσ^^;

セルを指定するときに、Range("A1")ではなく[A1]というふうにやってるんですが、
これだとなにか悪影響がありますか?

今のところ困るのは、説明書やhelpの類がすべてRange形式のものばかりなので、
書き方が分からない時がある、ってことくらいです。

単に字数が少なくて済むからという理由で[**]形式にしているんですが、
ちょっと気になってます。
というか、そもそも気にしたほうがいいのか気にしなくてもいいのか・・・

672 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 22:45:34 ]
他の人が見たときに分かりにくいとか
少なくとも俺はわからん

673 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 23:19:11 ]
動作自体には問題ない
あとは使う場面やメンテナンス性などを考えて使えば良い
複数人で扱う物には使わない方がいいし、汎用モジュールも然り
個人専用の使い捨てマクロの類なら[A1]形式でも医員で内科医

連続しない複数セルもしくは範囲を扱う場合なんかは便利なので
俺も他人が弄る可能性のないものでは使うこともある
『 [A:A,C:C,E:F].ClearContents 』とか『 [A3,C3:F10,H3:H10] = 0 』とかね

因みにうちでは『r""』のキー打ちで『Range("")』が入力され、カーソルが""の間に移動するので
Range("A1")は、『 R " " A 1 』で済む為、[A1]でもRange("A1")でも入力字数は大差ない
俺の場合RangeよりCellsの方がよく使うが、Cellsも同じく入力省略出来るようにしてある

674 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 23:27:30 ]
簡単なマクロ程度をゴールにしてるならどんな形式でも良いけど、
本気で業務に使うプログラムやら、もっと高いゴールを目指すなら、
初心者のうちからcellsで指定する方が良いと思うよ。
rangeと言えば、あくまでrangeオブジェクトである訳で・・・。

何より変数絡めてセルの指定するようになると可読性が著しく下がる・・・。
タッチ数も増えるしで、良い事ない。

675 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 23:28:39 ]
最後の3行が言いたかっただけちゃうかー

676 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 23:36:52 ]


677 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 00:10:33 ]
[A1]なんて書き方知らなかった……。もっと精進するわ。

678 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 02:51:46 ]
>>671
結局は evaluate の省略記法だから、excel に渡して評価させる分、
多少処理の無駄があるんじゃないかと思う(たぶん)

[A1].value = 0
range("A1").value = 0
それぞれ10万回ループさせると数秒だが差が出る
evaluate("A1").value = 0
は、[A1]記法とほぼ同じになる

誤差レベルだけど、回数の多いループ内とか、速度が気になる場合は
避けた方がいいかもね

679 名前:デフォルトの名無しさん [2008/10/27(月) 09:49:00 ]
[A1]だと後ろにピリオド打っても入力候補が出てこねぇ。
Cells(1,1)も出てこねー。
Range("A1")だと出てくる。
どれもいったんRange型変数に入れりゃ同じだが。



680 名前:デフォルトの名無しさん [2008/10/27(月) 10:57:11 ]
pc11.2ch.net/test/read.cgi/gamedev/1217601153/
Syntax Error.しか知らないキチガイがあらわれました

681 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 11:57:01 ]
detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1220150877

大手ECサイトのヨドバシドットコムが、サイトリニューアルから大規模な障害を3日間続けているようです。
このようなケースではリニューアルを担当した業者はヨドバシカメラにどれほどの損害賠償を行うのでしょうか?

【ヨドバシカメラ】 ネットサイトをリニューアルしたら表示遅すぎでおわび [10/23]
gimpo.2ch.net/test/read.cgi/owabiplus/1224789237/

ヤマダ.com/ビックカメラ.com/ヨドバシ.comを語ろう
gimpo.2ch.net/test/read.cgi/kaden/1222787235/

【店員の質】ヨドバシカメラ総合17【落ちまくり】
gimpo.2ch.net/test/read.cgi/kaden/1215013408/

補足
どうやら今回のヨドバシドットコムリニューアルはCMS導入が目的で、
キノトロープスリーイントという会社( www.k-3int.co.jp/ )が請けたようです。

また、リニューアルの10/21から10/25現在までこの状況ですので、ヨドバシカメラの損失額は
億単位で発生していると言われています。

キノトロープってどうよ?PART4
namidame.2ch.net/test/read.cgi/venture/1224762171/

682 名前:633 [2008/10/27(月) 14:06:59 ]
>>648
おぉー、素晴らしい限りです!
アクティブシート以外に対してIntersectは無理なのでしょうか?

683 名前:682 [2008/10/27(月) 14:21:18 ]
失礼しました。orz
columns(c)を修飾したら出来ました。

684 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:04:05 ]
>>682
書いた後で気づいたんだが、それ union いらないっぽいw

? selection.address
$A$1:$A$5,$A$5:$A$10
? selection.entirerow.address
$1:$5,$5:$10
? intersect(selection.entirerow, columns(8)).address
$H$1:$H$10

intersect かけた時点で重複してる行はまとめられるから、
Set rg1 = Intersect(Selection.EntireRow, Columns(c))
だけでいいようだ

685 名前:682 mailto:sage [2008/10/27(月) 16:34:34 ]
>>684
究極のリファクタリング有難うございます。orz
こういうの教えられると、VBコードでゴリゴリ作るのが馬鹿らしくなってしまう...

686 名前:671 [2008/10/27(月) 22:41:20 ]
みなさんいろいろご意見ありがとうございました。
RangeやCells形式も使いこなせるように、もっと勉強していきます^^

687 名前:デフォルトの名無しさん [2008/10/28(火) 10:08:01 ]
もう1つ教えて下さい。

選択エリアの全行数は
For each r in Selection.Areas
rcnt = rcnt + r.Rows.Count
Next
で求めていますが、一気に知る方法がありますでしょうか?

688 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 18:29:27 ]
>>687
一気に知る方法は知らないがそのままだと重複している行もカウントされる
少し前で話題に出たIntersectを組み込んで
For Each r In Intersect(Selection.EntireRow, Selection.EntireRow).Areas
とかにしたほうがいいんじゃないか?

689 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 21:48:43 ]
初心者って「一気に」とか「1行で」とか好きだよな



690 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 22:14:07 ]
コードが長くなると理解できなくなるんだよw


691 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 23:47:58 ]
関数型プログラミングなら、一気にやるという書き方でも割と珍しくない感じがする。
もちろん面倒なことをやるなら1文あたりが相応に長くなるんだけど。

692 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 01:54:25 ]
学習が下手な奴ほど早く学習する事が1つだけある
それは「人に訊いた方がラクだ」という事だ
なんちてw

>>687
一般的なやり方じゃないかも知らんが一応これで行けそう

重複行込み
rcnt = selection.entirerow.cells.count / activesheet.columns.count
重複行抜き
rcnt = intersect(selection.entirerow,columns(1)).count

693 名前:デフォルトの名無しさん [2008/10/29(水) 02:45:55 ]
ループの中で =average() の引数を可変的に指定する方法を教えてください
具体例:
(1)乱数で10個のデータを生成し,列方向に保存
(2)保存したデータから平均を計算し, 2つ下のセルに出力
(3)上記(1)から(2) を n回繰り返す(とりあえずn=3).

上記(2)がうまく計算できません(下から3行目のコード).

---------------
Sub dice_siml01()
Cells.Clear

Dim i As Integer
Dim j As Integer
Dim n As Integer
Dim nobs As Integer

Cells(1, 1) = "試行回数"
n = 3
nobs = 10
For j = 1 To n
For i = 1 To nobs
Cells(i + 1, j + 1).Formula = "=randbetween(1,6)"
Next
Cells(nobs + 3, j + 1).Formula = "=Average(Range(Cells(2, j+1), Cells(2+nobs-1, j+1)))" Next
End Sub
---------------
【注】
randbetween(1,6) エラーの場合 rand()で置き換えてお願いします.

694 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 03:31:17 ]
>>693
.formula に入れるのはセルにそのまま打ち込める式
範囲指定のところが "B2:B11" とかの形式になるように、
文字列を生成すればOK

695 名前:デフォルトの名無しさん [2008/10/29(水) 09:46:54 ]
>>694
どうもありがと。
できれば、具体的な変換方法もお願いします。


696 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 10:03:37 ]
>>695
宿題か何か?
デカい誤り指摘してヒントも出したんだから、
そこからもっぺん自分で考えてみような
じゃなきゃこんな練習問題やってる意味ないだろ

697 名前:687 mailto:sage [2008/10/29(水) 10:09:55 ]
>>688
>>692
有難うございます。

「聞くは一時の恥じ...」
なんちてw

セル情報はExcelの基本関数知ってればコード記述で殆ど解決しちゃう
けど速度やメンテを考えるとコードは単純な程良い。


698 名前:デフォルトの名無しさん [2008/10/29(水) 10:36:40 ]
>>696
これ以上は分からん。

699 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 10:37:47 ]
>>697
あ、速度考えるなら intersect とか濫用しない方がいいよ
10万回ループさせると>>692より>>687の方が早いんで



700 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 12:16:46 ]
>>697
>けど速度やメンテを考えるとコードは単純な程良い。
これは少し間違ってる気がする
速度を考えるなら処理するデータを単純にした上でコードも単純なものにする
例えばセルのプロパティを変数に入れるとか
さらにメモリの使い方にも気を配れればいい
書くと短くても動かすと重たい処理なんてたくさんあるし






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

前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