Excel総合相談所 103at BSOFT
Excel総合相談所 103 - 暇つぶし2ch460:名無しさん@そうだ選挙にいこう
12/07/10 20:35:13.19
すべてのシートだったらシートを全て選択して好きな表示の倍率にすればいいじゃん(´・ω・`)

461:名無しさん@そうだ選挙にいこう
12/07/10 20:56:56.23
>>452
できた!ありがと。

462:名無しさん@そうだ選挙にいこう
12/07/10 21:02:03.01
Sub シート保存()
Dim wb1 As String, ws1 As String, ws2 As String
Dim fdr As String, f_name As String
wb1 = "徳丸純子.xls"
ws1 = "石坂智子"
ws2 = "山口弘美"
fdr = "仙道敦子"
f_name = "江戸真樹.xls"
Workbooks(wb1).Worksheets(Array(ws1, ws2)).Copy
Worksheets(ws1).Select
Cells.Copy
Cells.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range("A1").Select
Columns("H:M").Delete Shift:=xlToLeft
Worksheets(ws2).Select
Cells.Copy
Cells.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range("A1").Select
Columns("H:M").Delete Shift:=xlToLeft
ActiveWorkbook.SaveAs "c:\" & fdr & "\" & f_name
ActiveWorkbook.Close
End Sub

2回繰り返してる箇所があるので、もうちょっと効率よくしたい・・・

463:名無しさん@そうだ選挙にいこう
12/07/10 21:21:41.12
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003か最近の
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

配列数式で、例えば5と書いたセルを参照して配列{1,2,3,4,5}を返すのは普通の関数でできますか?

464:名無しさん@そうだ選挙にいこう
12/07/10 22:03:31.20
>>460
そんな方法会ったのね。。。

465:名無しさん@そうだ選挙にいこう
12/07/10 22:11:36.93
>>463
できます

466:名無しさん@そうだ選挙にいこう
12/07/10 22:33:06.38
現在お弁当代の表を作成してます。
A260円 B320円でこの様に計算しました。
countif(B$2:BF$32,”A”)*260+countif(B$2:BF$32,”B”)*320
という形で関数を打ち込みました。
これだと1人分の計算はできたのですが、全員分の計算ができなくて困っています。
合計のセルを下にひっぱっても関数がおかしくなってしまうので、分かる方いましたらよろしくおねがいします。


467:名無しさん@そうだ選挙にいこう
12/07/10 22:42:24.91
>>466
どんなデータがあってどんな風に集計したいのかサッパリわからん
この6行で第三者に伝わると思ってるの?

468:名無しさん@そうだ選挙にいこう
12/07/10 22:48:30.49
>>466
31行*56列ってことは、横(列)方向に人、縦(行)方向に日付か?
普通逆じゃないの?

まあそれはいいとして、一人分の計算は、「B$2:BF$32」ではなく
「B$2:B$32」でフィルコピーじゃないの?
で、全員分はその数式入れた範囲をSUMで合計するだけでは?

469:名無しさん@そうだ選挙にいこう
12/07/10 23:12:01.14
>>456,457,458,459,460
ありがとうございました。


470:名無しさん@そうだ選挙にいこう
12/07/10 23:13:24.34
おかげで合計でました。
ありがとうございました。

471:名無しさん@そうだ選挙にいこう
12/07/10 23:21:02.41
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 勉強中
【4 VBAでの回答の可否】 可

ブックには入力シート・一覧表・参照用の3つのシートがあり
VBAを使用して「入力シートのデータを一覧表・参照用にコピペして、シートの複製・入力シートの指定セルの値をデリートする」という動作を実行するようにしています。
そこからVBAで「一覧表に30件の情報が入力されていて、かつ特定のセルに入力が行われた場合にエラーメッセージを表示する」
という動作を登録したいのですが、どのようにコード入力を行えばいいのでしょうか

いろいろ調べた結果、下記のようなコードでいいのかなと思ったのですが
コードとして入力するにもどうすればいいか分かりませんでした。
よろしくお願いします。

If = ""一覧表の30列目に値が入っていない状態"" And ""入力シートB2に入力を行う"" Then
MsgBox "新規ブックを作成してください",vbCritical
End
End If 

472:名無しさん@そうだ選挙にいこう
12/07/10 23:44:08.78
>>467
>>468には伝わったみたいだな

473:名無しさん@そうだ選挙にいこう
12/07/10 23:49:15.28
>>471
入力シートのB2に入力を行う というイベントで当該マクロを動かすことになります。
Private Sub Worksheet_Change(ByVal Target As Range)
if (Target.Address = "$B$2") and ""一覧表の30列目に値が入っていない状態"" then
 MsgBox "新規ブックを作成してください",vbCritical
End If
End
を入力シートのマクロに書いてみてください。""一覧表の30列目に値が入っていない状態""部分の
記述は詳細がわからないので割愛します。(動作チェックはしてません。あしからず)

474:473
12/07/10 23:51:24.36
473 の自己レス End If の次の行は End Sub でした。

475:名無しさん@そうだ選挙にいこう
12/07/11 00:02:16.08
>>471
If 一覧表.UsedRange.Rows.Count >= 30 And 入力シート.Range("B2").Value <> Empty Then
かな?

一覧表の1行目にタイトルがあり、データが2行目からとかなら「 >= 30」ではなく「 >= 31」ね
UsedRange.Rows.CountはCells(1, 1).End(xlDown).Rowとかでもいけるはず

つーかさ、入力シートから一覧表にデータ移す場合に、一覧表の末尾データの位置情報が必要になるから
一覧表のデータが何件あるかを取得する方法は分かってるはずじゃないの?

476:名無しさん@そうだ選挙にいこう
12/07/11 00:13:54.89
>>473
さっそくご回答いただきありがとうございます。
動作確認は上手く行かなかったのですが考え方が少し分かったのでいろいろ調べてみます。
ありがとうございます。


私のつたない説明ではうまく伝わらなかったのではないかと思うので使用中のコードを載せますので
もし「一覧表の30列目に値が入っていない状態」が分かる方がいらっしゃいましたら教えていただければと思います。
よろしくお願いします。

ActiveSheet.Copy Before:=Sheets(3)
ActiveSheet.Name = Range("C1").Text
With ThisWorkbook.Sheets("一覧表")
.Activate
.Range("A999").End(xlUp).Select
r = Selection.Row + 1
.Range("a" & r) = B1
.Range("b" & r) = B2
.Range("c" & r) = B3
.Range("d" & r) = B5
.Range("e" & r) = D11
.Range("f" & r) = H2
.Range("g" & r) = H3
End With

Sheets(1).Select
Range("クリア").Select
Selection.ClearContents

477:名無しさん@そうだ選挙にいこう
12/07/11 01:15:55.71
>>471
▼━質問時の注意・決まり事━━━━━━━━━━
・3 VBAコードを貼る場合は、部分的に伏せたり省略したりせずに全て貼りましょう。何レス使っても構いません。
・4 2回目以降の質問では名前欄に初回質問の番号を入れよう。


ついでに指摘すると、

If = ""一覧表の30列目に値が入っていない状態"" And ""入力シートB2に入力を行う"" Then

じゃなくて

If = ""一覧表の30行目に値が入っている状態"" And ""入力シートB2に入力を行う"" Then

なんじゃないのか?
もし本当に列の問題なら、調べるべきはRowsじゃなくてColumnsだよ

478:名無しさん@そうだ選挙にいこう
12/07/11 15:42:50.87
>>476

Sheets("一覧表") のレンジに代入してる、B1とか、D11とかって何の変数?
唐突に出現するけど。

もしかしてアドレスか?


479:名無しさん@そうだ選挙にいこう
12/07/11 15:46:05.84
>>476

.Range("A999").End(xlUp).Select
もやりたい事はわかるが、なんだかなあって感じ



480:名無しさん@そうだ選挙にいこう
12/07/11 17:13:56.74
>>479
Selectしてることについて言ってんの?
列をチェックするはずなのに行をチェックしてることについて言ってんの?
RangeがA999などという中途半端なところのこと言ってんの?



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch