Excel VBA質問スレ Part6at TECH
Excel VBA質問スレ Part6 - 暇つぶし2ch175:デフォルトの名無しさん
08/03/30 23:36:48
>>166

あ.い.う.え.お
と並んでいるものを、
お.あ.い.う.え
と並べたいのか?


お.え.う.い.あ
と並べたいと言う意図だとan,a1.….a(n-1) はおかしいし・・・
意味が分からん。

176:デフォルトの名無しさん
08/03/30 23:44:36
たくさんのcell内のデータを並びかえるのだから
自前でsort関数つくるのがいいだろ

177:デフォルトの名無しさん
08/03/30 23:46:51
>>175
俺も意味が判らんかったが、そういう意味で解釈すると、こうかな?

Function test()
Dim LastStr As String
Dim maxy As Long
maxy = 5

LastStr = Range("A" & maxy)
For i = maxy To 2 Step -1
Range("A" & i) = Range("A" & i - 1)

Next
Range("A1") = LastStr

End Function


178:デフォルトの名無しさん
08/03/30 23:48:43
>>177
並べ替えたいものは「1つのフィールドに入っている」んじゃないか?

179:デフォルトの名無しさん
08/03/31 00:01:58
>>178
そういう意味?
ならこれでどうだ?

Function test()
Dim baseText As String
Dim KekkaText As String
Dim varStr() As Variant
Dim i1 As Long, i2 As Long
Dim maxy As Long
'
baseText = "あいうえお.aiueo.アイウエオ.アイうえオ.aiウエお"
i2 = 0
'
ReDim Preserve varStr(i2) As Variant
For i1 = 1 To Len(baseText)
If Mid(baseText, i1, 1) = "." Then
i2 = i2 + 1
ReDim Preserve varStr(i2) As Variant
Else
varStr(i2) = varStr(i2) & Mid(baseText, i1, 1)
End If

Next
'
KekkaText = varStr(UBound(varStr))
For i1 = 0 To (UBound(varStr) - 1)
KekkaText = KekkaText & "." & varStr(i1)
Next
'
MsgBox (KekkaText)
End Function

180:デフォルトの名無しさん
08/03/31 00:21:21
いいんじゃね?
あとは自作関数化すれば何セルあっても動作するするだろ
それくらいは自分でなんとかすればよし、というところか。

181:166
08/03/31 00:39:56
>>174
どうもです
>>175
あ.い.う.え.お
と並んでいるものを、
お,あ.い.う.え
です。 「お」の後がコンマになってます。
>>177-180
ありがとうございます。
おきてからやってみます


182:179
08/03/31 00:48:02
>>181
おの後ろはカンマにしたかったのか。
それは実装できてないわ。
まぁ、ドットで区切って、並び替えて、再結合は実現しているので、
あとは別に苦労しないだろ。

183:デフォルトの名無しさん
08/03/31 01:54:26
Sub foo(r As Range)
Dim cell As Range
Dim pos As Long
Dim buf1 As String, buf2 As String
For Each cell In r
pos = InStrRev(cell.Value, ".")
If pos > 0 Then
buf1 = Right$(cell.Value, Len(cell.Value) - pos)
buf2 = Left$(cell.Value, Len(cell.Value) - Len(buf1) - 1)
cell.Value = buf1 & "," & buf2
End If
Next
End Sub

Sub bar()
foo Range("A1:A10")
End Sub


184:デフォルトの名無しさん
08/03/31 02:09:14
行頭から半角5文字目の空白を;に変えたい

185:デフォルトの名無しさん
08/03/31 08:11:53
>>183


>>166 [Excel97]
×InStrRev

186:デフォルトの名無しさん
08/03/31 10:21:31
>>179
なんだその吐き気がするコードは。
Excel97にはSplitすらないのか?
仮に無いとしても、>>172で十分だろ。

187:デフォルトの名無しさん
08/03/31 10:23:08
いちいち"."で分割して結合する意味がわからん

188:デフォルトの名無しさん
08/03/31 11:14:25
>>186
97にはsplitもなければInstrRevもない。

189:デフォルトの名無しさん
08/03/31 11:22:56
Replaceもなかったりする

190:デフォルトの名無しさん
08/03/31 11:24:40
>>188
>>187

191:デフォルトの名無しさん
08/03/31 11:27:35
意味なんてものはその職場の風習によるだろ。

192:デフォルトの名無しさん
08/03/31 11:29:51
>>191
意味わからん

193:デフォルトの名無しさん
08/03/31 11:32:30
あー、糞コードを量産する職場だったら、>>179を見ても違和感がないという意味か

194:デフォルトの名無しさん
08/03/31 11:38:41
instrくらいあるだろ

195:デフォルトの名無しさん
08/03/31 11:42:39
>>166で意味がわからんって、どんだけ読解力無いんだよ・・・

196:デフォルトの名無しさん
08/03/31 11:47:25
>>172

>>34

197:166
08/03/31 20:28:10
>>182
上手くいきました。 ありがとうございます。

>>他住人の方
ありがとうございました。

198:デフォルトの名無しさん
08/03/31 21:12:14
まあ確かに>>179のコードはアレだが、問題が解決する側にとっちゃどーでもいい話ではあるな

199:デフォルトの名無しさん
08/03/31 22:24:02
見苦し

200:デフォルトの名無しさん
08/04/01 05:44:27
>>182
なんでこいつこんなにえらそーなんだ

201:デフォルトの名無しさん
08/04/01 08:34:03
VBA使いは総じてえらそう

202:デフォルトの名無しさん
08/04/01 09:16:55
>>1-201
質問者以外全部えらそーに見える俺は文盲

203:デフォルトの名無しさん
08/04/01 09:51:32
excel97って、left$もright$も無いの?

204:デフォルトの名無しさん
08/04/01 21:47:10
public Sub AAA()
  Dim cnn as New ADODB.connection
  Dim RS as New ADODB Recoreset
  Dim value As Boolean

  cnn.connection String = _
  "Provaider = micosoft.Jet.DLEDB.4.0;" & _
  "Data Source = D:\データ.mdb:"

'**************ダイアログボックス表示
  value = Application.Dialogs(xlDialogSaveAs).Show
  If value = False Then
    Exit Sub
  End If
**************


205:デフォルトの名無しさん
08/04/01 21:57:04
続き
  cnn.Open
  Set RS = New ADODB.Recordset
  RS.Open Source := "テーブルデータ" ,ActiveConnection:=cnn, _
  Corsor Type := adOpenstatic, Option := adCmdTable
  ThisWorkbook.Sheets(1).range("A1").CopyFromRecordset RS

  RS.Close
  Set.Close
  cnn.Close
  Set cnn = Nothing
End Sub

質問なのですが、上記を実行するとダイアログボックスが表示されて新規でファイルを
作成して今現在動かしているエクセルブックの名前を変更して保存しているだけになってしまいます。
結局元のブック(マクロ)をコピーしているのと同じです。

私のやりたいことはダイアログボックスを表示させて、新規でブックだけ作成してデータベースのデータ.mdbのテーブルだけを
新規ブックシートに書き込みたいです。どうすればいいでしょか?

206:デフォルトの名無しさん
08/04/02 03:55:51
>>205 サンプルを作ってみました。
'---------Sample-----------
Sub Data_Import()
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
Dim ShinkiFullName As String, ShinkiFile As String
Dim wb As Workbook, ws As Worksheet, c As Integer

Workbooks.Add ' ブックを新規作成
ShinkiFile = ActiveWorkbook.Name '新規ブックの名前を格納①

'エクセルと同じフォルダにある「TEST.mdb」に接続
cn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & "\TEST.mdb"
cn.Open
'「TEST.mdb」内の「受注」テーブルを参照
rs.Open Source:="受注", ActiveConnection:=cn, CursorType:=adOpenForwardOnly, LockType:=adLockReadOnly

'新規ブックのSheet1にデータを写す
Set wb = Workbooks(ShinkiFile): Set ws = wb.Worksheets("Sheet1")
With ws
For c = 0 To rs.Fields.Count - 1 'フィールド名をA1から横にコピー
.Cells(1, c + 1).value = rs.Fields(c).Name
Next c
.Cells(2, 1).CopyFromRecordset rs 'レコードをA2以降にコピー
End With

'接続終了
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

'***** つづく*****

207:206
08/04/02 04:25:09
'***** つづき *****
Shitei: 'ファイル名を指定/ファイル名が適切なものになるまでダイアログボックスを閉じない②
Do
ShinkiFullName = Application.GetSaveAsFilename(FileFilter:="Microsoft Excel ブック (*.xls),*.xls", _
Title:="新規データファイル保存")
Loop Until ShinkiFullName <> "False"

On Error GoTo Shitei 'ファイル名が重複した場合
With wb
.SaveAs Filename:=ShinkiFullName
.Close
End With
End Sub

-------Sample おわり----------

○あらかじめブックを作成・レコードを転写した後に、保存する場所・ファイル名を決めるようにしてあります。
 (意図されている手順を変更しています。)>①、②
○変数にvalueなどの予約語は使わないようにしましょう。
○Application.Dialogs(xlDialogSaveAs).Showでは、ファイル名を取得できません。
 GetSaveAsFilenameやGetOpenFilenameの使い方をマスターされるとよいでしょう。

208:デフォルトの名無しさん
08/04/02 09:35:56
Cで言う「構造体の配列」みたいなのは、
なにで実現するのでしょうか。

209:デフォルトの名無しさん
08/04/02 10:19:58
ユーザ定義タイプの配列

210:デフォルトの名無しさん
08/04/02 12:42:58
ユーザーフォーム上のコマンドボタンを押したとき
ボタンのオブジェクト名を変数に格納する方法ってありますかね?

211:デフォルトの名無しさん
08/04/02 12:43:45
↑あ、質問間違えた。無視していい。

212:デフォルトの名無しさん
08/04/02 22:51:53
>>206.207さん大変貴重な情報ありがとうございます。さっそく試してみます。
明日に結果を報告します。

213:デフォルトの名無しさん
08/04/04 13:05:00
いつのまにかVBEのマウススクロールができるようになってたんだが。。
なんで??

Excel2003

214:デフォルトの名無しさん
08/04/04 15:59:16
ユーザ定義関数で説明文を書くには
MacroOptionsを使えばよい事がわかりましたが、
引数ごとの説明文を設定するのはどうしたら
良いですか?

215:デフォルトの名無しさん
08/04/04 19:45:26
質問です。

Application.visible = falseで本体を隠したユーザーフォーム上のコマンドボタンを押すと
新しいウィンドウでExcelのファイルを開くようにしたいのですが、どうしたらいいですか。

216:デフォルトの名無しさん
08/04/04 21:14:38
そういうふうにすれば?

217:デフォルトの名無しさん
08/04/04 23:53:05
>>213
たぶんマウスのドライバ。MSのIntelliPoint使ってるだろ?俺もなってた。

218:デフォルトの名無しさん
08/04/05 14:39:37
>>217
確かにマウス交換した。そういうことかー。サンクス

219:デフォルトの名無しさん
08/04/05 17:09:01
まさかと思うが、VB6のVBEでもスクロールできるようにするプラグインがあるのもご存じない?

220:デフォルトの名無しさん
08/04/05 19:59:18
VB6はわかりませんがどこでもホイールはまさかしたら

221:デフォルトの名無しさん
08/04/06 22:54:34
URLリンク(support.microsoft.com)

222:デフォルトの名無しさん
08/04/07 12:07:05
>>213
解決したみたいだけど sp3で 普通にできるようになったよ

223:デフォルトの名無しさん
08/04/07 15:12:34
>>221
このアドインはバグがあるからダメ

224:デフォルトの名無しさん
08/04/07 15:29:08
AddAutoScrollというものを使ってる

225:デフォルトの名無しさん
08/04/07 18:30:21
グラフ番号
(オートでVBAを記述させたときの『DrawingObjects("グラフ 2")』などの『2』の部分)
は、グラフを作るたびに自動で振られていきますが、
グラフを消去した場合も番号は累計されていってしまいますよね。
いったんグラフを作って消してから、グラフ番号をリセットすることは可能ですか?
(オートで書いた場合に、番号が『1』になるようにしたい。)

グラフ番号をリセットする魔法を教えてください。

WinXP、Excel2003です。

226:デフォルトの名無しさん
08/04/07 20:56:21
質問をさせてください。
やりたい事は変数を用いて、範囲を選択する事です。

range("A1:C3").select のように範囲を選択する際に、変数を用いたく考えております。

dim hoge , piyo
hoge = 1
piyo = 3
cells(hoge,1).select

で単一セルは選択できたのですが、範囲指定が分かりません。
cells(hoge,1) から cells(piyo,3) までを選択する方法を教えて頂けたらば幸いです。

何卒ご指導をよろしくお願いします。

227:デフォルトの名無しさん
08/04/07 22:33:10
>>266
Range(Cells(hoge,1), Cells(piyo,3)).Select
たしかRangeとcellsは同シートじゃないとエラー出るのに気をつけてね


228:デフォルトの名無しさん
08/04/08 01:19:11
>>225
確かExcel再起動しない限り不可能だったようなことをどこかで読んだ記憶がある。
で、シートの追加・削除を行うマクロを長時間起動したままだとそのうち落ちるとかだったかな?

あいまいでごめん。

229:デフォルトの名無しさん
08/04/08 12:59:51
一つのセルに複数のセルを代入したいのですが、どうやればいいですか?
一つの場合
Sheets("シート1").Range("C1") = Sheets("シート2").Range("D9")
というようにやっているのですが、二つ以上になって
Sheets("入力シート").Range("C1") = Sheets("共通設定シート").Range("D9:E9")
みたいにやると、何も表示されなくなってしまいます。

230:デフォルトの名無しさん
08/04/08 13:10:14
>>229
何がしたいのか理解できない

231:デフォルトの名無しさん
08/04/08 13:25:50
>>230
下の例間違ってました。訂正。
Sheets("シート1").Range("C1") = Sheets("シート2").Range("D9:E9")

やりたいことは、例をあげると
シート2のD9に「あい」と入っていてE9に「うえお」と入っているとすると
シート1のC1には二つ繋がった結果「あいうえお」と入れたいです。


232:デフォルトの名無しさん
08/04/08 13:48:32
vbaでやりたいなら、range("d9"),value & range("e9").value
ワークシート関数でいいなら、concatenate


233:デフォルトの名無しさん
08/04/08 14:08:14
>>232
ありがとうございます!出来ました!

234:デフォルトの名無しさん
08/04/08 15:05:42
プリンタのトレイを指定して印刷したいのですが
どうすりゃいいのか惜しえてください

235:226
08/04/08 21:01:07
>>227
上手く選択することが出来ました!
これで作業に幅が出たと思います。

本当にありがとうございました。

236:デフォルトの名無しさん
08/04/08 23:22:30
2003 XP autofilter filtermode 等
「sheet2 range("A1") に、オートフィルターがかかっている(又は、オートフィルターモード)なら、
オートフィルターを解除し、
オートフィルターがかかっていないなら、何もしない。」
どう書いたらいいですか?


237:236
08/04/08 23:24:46
揚げ忘れたwww


238:236
08/04/08 23:48:02
次で解決しました。
Sub filter0()
With Sheet2
If .AutoFilterMode = True Then
.AutoFilterMode = False
End If
End With
End Sub


239:236
08/04/08 23:48:45
次で解決しました。
Sub filter0()
With Sheet2
If .AutoFilterMode = True Then
.AutoFilterMode = False
End If
End With
End Sub


240:デフォルトの名無しさん
08/04/09 20:49:49
質問なのですが、
Sub excel_access4()
Dim dbs As New ADODB.Connection 'ADOコネクション
Dim rcs As New ADODB.Recordset 'ADOレコードセット
Dim mydbF As String 'アクセス ファイル
Dim mydbT As String 'アクセス テーブル
Dim mtr As Variant 'エクセル 全データ
Dim rcd As Long 'アクセス 行指定
Dim fld As Long 'アクセス 列指定
'例として acctest2.mdb の テーブル4 に書き込む

mydbF = "acctest2.mdb" 'アクセス ファイル指定
mydbT = "テーブル4" 'アクセス テーブル指定

'アクセスデータベースを指定
dbs.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.Path & _
"\" & mydbF & ";"

'アクセスデータベースを開く
rcs.Open Source:=mydbT, _ 'A
ActiveConnection:=dbs, _  'B
CursorType:=adOpenKeyset, _ 'C
LockType:=adLockOptimistic, _ 'D
Options:=adCmdTableDirect 'E



241:デフォルトの名無しさん
08/04/09 20:50:17
'エクセルシート全データ範囲(2次元配列)
With Worksheets("Sheet1").Range("A1").CurrentRegion
Let mtr = .Resize(.Rows.Count - 1).Offset(1, 0).Value
For rcd = LBound(mtr, 1) To UBound(mtr, 1) '1次行
rcs.AddNew 'LB:最小値(1) UB:最大値(5)
For fld = LBound(mtr, 2) To UBound(mtr, 2) '2次列
'アクセスに行列で書き込み
Let rcs.Fields(fld - 1).Value = mtr(rcd, fld)
Next
rcs.Update
Next
End With

rcs.Close
dbs.Close
Set rcs = Nothing
Set dbs = Nothing
End Sub

AとBはわかりますが、CDEは一体何をしているのかわかりません。

また実行すると実行時エラー3709がでます。
この実行時エラーの原因がさっぱりわかりません。

どなたか詳しい方お教え願えないないでしょうか?

242:デフォルトの名無しさん
08/04/10 01:03:15
VBAでレコード操作したことないけど
カーソルとロックタイプを指定してるだけでしょ。
SQLでレコード扱う場合の基本だからググると(ry

243:デフォルトの名無しさん
08/04/10 15:16:58
Sheet1のB5~B35に曜日を入れていきたくて

Sheets("Sheet1").Range("B5") = ("日")
Selection.AutoFill Destination:=Range("B5:B35")

上のようにVBAで書いて実行したら、エラー"1004" RangeクラスのAutoFillメソッドが失敗しました。って出るんですがなんででしょ?
Excelのほうでオートフィルしたら普通にB35まで曜日が出るんですが、VBAでやりたいので困ってます。


244:デフォルトの名無しさん
08/04/10 15:27:39
Sheets("Sheet1").Range("B5").AutoFill Destination:=Sheets("Sheet1").Range("B5:B35")

245:デフォルトの名無しさん
08/04/10 15:29:24
>>244
ありがとございます、できました

246:デフォルトの名無しさん
08/04/10 15:38:17
マクロの記録で「Selectionは使わない」「Rangeをいつでも明示する」ってオプションがあって、
それがデフォルトでもいい気がする。

247:デフォルトの名無しさん
08/04/10 15:41:19
>>246
やってみます、ありがとう!

248:デフォルトの名無しさん
08/04/10 15:45:53
あ、いやいや、そういうオプションがあったらいいな~
もしあったら、デフォルトはこれがいいな~
って妄想なので・・・

249:デフォルトの名無しさん
08/04/10 15:47:20
>>248
なるほど、そういうことですか

250:デフォルトの名無しさん
08/04/10 15:52:49
質問させてください。
WinXP、Excel2007です。
すみません、ヒントだけでもご教授下さい。

データが入ってるシートを選択したときに「sheet3」というシートにアクティブになってるシートのセルの一部をコピーしたいのです。
データが入ってるシートはたくさん増えるので、一個ずつ指定することができません…
手探り手探りつくってみたのがコレです。動きません。

Private Sub Worksheet_Activate()
Range("A3").Copy
ActiveSheet.Paste Destination:=Worksheets("sheet3").Range("D7")
Range("A8").Copy
ActiveSheet.Paste Destination:=Worksheets("sheet3").Range("D4")
Range("B7").Copy
ActiveSheet.Paste Destination:=Worksheets("sheet3").Range("E3")
End Sub

おねがいします

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列に記載された文字列を入力し検索
②表示されたページの指定したテキストボックスに記載された文字列をB列に貼り付け
を繰り返すマクロを組もうと頑張っているのですが、どうにも②が解決できません。

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

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でやりたいなら止めはしないが。

455:デフォルトの名無しさん
08/04/30 21:09:38
>>454
それならばやり方教えて下さい。というかVBA無しの手作業でやりなさい。
報酬は一切ありませんが。

生徒ID/国語得点/数学得点/理科得点/歴史得点/社会得点
の表がシートA1からF9999まで埋まっています。
RANGE A1:F9999以外のセルは一切改変禁止です。
シートを複製したりすることも禁止です。
(後で削除したりクリアすることも禁止です。監視員が
後ろで貴方に不正操作がないか監視していると想定して下さい。)

この条件で、ソート
order by
(5*国語得点+4*数学得点)/9,
(4*数学得点+3*理科得点)/7,
(3*理科得点+2*歴史得点)/5,
(5*歴史得点+3*社会得点)/8,
(4*社会得点+5*国語得点)/9
ASC
でお願いします。

456:デフォルトの名無しさん
08/04/30 21:11:41
スルーよろ

457:438
08/04/30 21:12:31
>>449
トンクス

458:455
08/04/30 21:20:25
追加条件
デュアルモニターで、立ち上がってるプロセスやクリップボードまで
監視されており、セルを別のブックに貼付けてなんて姑息な技は
使えないということは言う迄もありません。Lotus-123,OpenOfficeを使うこと
等も無理でしょう。
さて、この状況でどうやってソートするのか期待してます。

459:デフォルトの名無しさん
08/04/30 21:21:00
>>455
君はなぜExcel使ってるの?


460:デフォルトの名無しさん
08/04/30 21:25:59
>>458
別のブックに貼り付けてソートしてから元のシートに貼りなおすのはありだなあ。
姑息とは思わない。
なんでそれをやらないことにこだわってるの?

461:デフォルトの名無しさん
08/04/30 21:30:45
シート追加して、元シートのA1でshift+*して、コピペして、適当な計算式追加してソートして元に戻して、シート削除。

462:デフォルトの名無しさん
08/04/30 21:31:47
s/shift+*/ctrl+*/

463:デフォルトの名無しさん
08/04/30 21:34:14
>>455
それ、他Bookか追加シートで処理するより、CSVに吐き出して外部ソートするコード書く方が大変だろw
いちいち>>439みたいなことしてんの?馬鹿じゃね?

464:デフォルトの名無しさん
08/04/30 21:35:20
>>455にとってExcelは不便な道具なんだね。
デュアルモニターで監視されててソート機能すら使ってはいけない。
かわいそう。

465:455
08/04/30 21:39:55
クリップボードにコピーしたらその内容を直ちに削除する常駐ソフト(サービス)が
立ち上がっているような職場です!
好きでやっているわきゃないでしょ

466:デフォルトの名無しさん
08/04/30 21:42:24
死ねよpgr

467:デフォルトの名無しさん
08/04/30 21:42:36
>>465
じゃあセルの内容を別シートにコピペするVBA作ったら?
素人が変なソート組むよりそのほうがよっぽどいいよ。

468:デフォルトの名無しさん
08/04/30 21:48:01
これからも後出しの条件がどんどん出るよ
お楽しみに!

469:デフォルトの名無しさん
08/04/30 21:49:05
これはひどい(この板で今日二回目)

470:455
08/04/30 21:50:00
ま、ガンバって下さい。期待してます。

471:デフォルトの名無しさん
08/04/30 21:50:09
>>455
order byとかASCとか生意気なやつだ。
イラっとする。

472:デフォルトの名無しさん
08/04/30 21:50:58
うぁぁぁぁぁ

473:デフォルトの名無しさん
08/04/30 21:52:08
ちょっと待て、「歴史」と「社会」でわかれてるが、「社会」ってなんだよ?w

474:455
08/04/30 21:56:00
ちんちん

475:デフォルトの名無しさん
08/04/30 21:56:35
でもVBAでCSV書き出すのは可って意味わかんない
馬鹿じゃないの

476:デフォルトの名無しさん
08/04/30 21:58:29
どっかの学校か塾の先生かなんか?
レベル低すぎーw

477:デフォルトの名無しさん
08/04/30 22:00:26
>>443が何がバカかというと,複雑な条件のソートには独自のアルゴリズムが
必要とか思ってるところ。

478:デフォルトの名無しさん
08/04/30 22:01:04
なんか可哀想だな


生徒が

479:デフォルトの名無しさん
08/04/30 22:12:43
何の先生だろ。
数学じゃないことを願う。

480:デフォルトの名無しさん
08/04/30 22:47:11
プログラミングだろ

んでなんでそこまで先生がむきになってるのか、更におまいらが叩いてるのかがわからんよ
おまいらの脳内モジュールにスルー判定のアルゴリズム追記しとけ

んで、ソートコード出来た?

481:デフォルトの名無しさん
08/04/30 23:10:16
必死すぎる先生のキャラがおもしろいからだよ。
VBA使ってることをなんとか正当化したいんだね。
VBAでソートを組むはめになるやつには何か大切なものが欠如している。


482:デフォルトの名無しさん
08/04/30 23:22:10
結局話の流れは、>>455のお題を手作業でやる方法を示せってことなの?

483:デフォルトの名無しさん
08/04/30 23:33:59
スレ違い

484:デフォルトの名無しさん
08/04/30 23:38:10
いや板違い

485:デフォルトの名無しさん
08/04/30 23:54:33
そんなに触っちゃダメなデータならソートして並べ替えちゃうのもダメなんじゃないかな。

486:デフォルトの名無しさん
08/05/01 00:15:11
>>424
ArrayListのToArrayでキャストするにはどうですればいいのでしょうか??

487:デフォルトの名無しさん
08/05/01 00:54:07
流れが意味不明だ

488:デフォルトの名無しさん
08/05/01 01:11:30
>455
ファイルをデュプってODBCのExcelドライバをADO経由して開いて、
あとはそのままクエリ書けばいいじゃん。

489:デフォルトの名無しさん
08/05/01 01:16:15
飽きた

490:455
08/05/01 01:16:53
>>488
大変よくできましたね。通信簿は5をあげましょう。
しかし内申書では「粗暴/凶悪。将来犯罪者になる可能性あり」を書いときます。

491:455 ◆CSZ6G0yP9Q
08/05/01 01:23:05
これが最後のレスです。
>>474は455ではありません。
以降の455のレスは別人になります。

492:デフォルトの名無しさん
08/05/01 01:29:53
455がんがれよ
じゃーの

493:デフォルトの名無しさん
08/05/01 01:35:17
一般人にも分かるようなExcelだけで完結する操作を期待していた俺には
488はちょっと期待外れだった。お題は確かに満たしているけど……。


494:デフォルトの名無しさん
08/05/01 01:42:51
>>490
頭おかしいのか?
VBAなし&クリップボード使用なしでどうやるかっつー話だろ?
あ、そーか、10段階の5か。

495:デフォルトの名無しさん
08/05/01 01:58:58
逃亡宣言した頭おかしい奴のお題とかどうでもいいよ

496:デフォルトの名無しさん
08/05/01 08:24:05
>>455のお題を翻訳すると「Excelを使わずに成績表を並べ替えなさい。」ということだろう。


497:デフォルトの名無しさん
08/05/01 09:12:01
秋葉原のソフマップに5万円落ちてますとか言い出しそうだ

498:デフォルトの名無しさん
08/05/01 15:24:15
ちょっと見ない間に随分賑わってたんだな

499:デフォルトの名無しさん
08/05/01 16:28:20
ソート問題は暑いな

500:デフォルトの名無しさん
08/05/01 17:10:35
500ゲト

501:デフォルトの名無しさん
08/05/01 17:47:17
なかなかに香ばしいな

最大値を抜き出して、最小値から1づつ増加、判定合致したものから格納じゃだめなの?
場合に依っては死ぬほど重いけど

502:デフォルトの名無しさん
08/05/01 17:51:34
>>501
なんだそりゃ。
お前自身が香ばしすぎるぞ。

503:デフォルトの名無しさん
08/05/01 17:53:35
バルブソートがいいな。

504:デフォルトの名無しさん
08/05/01 17:59:48
だから、シートに展開しろと何度言ったら・・・(,,゚Д゚)

505:デフォルトの名無しさん
08/05/01 18:02:21
香ばしいって言うと怒る人いるよね。
これからはクリスピーって言ったらどうかな。

506:デフォルトの名無しさん
08/05/01 18:04:29
>>505
クリスピーな奴へっけん

507:デフォルトの名無しさん
08/05/01 18:08:26
みなさん食いつきが良いですね

508:デフォルトの名無しさん
08/05/01 19:13:28
クイックソートが一番最適で、そんなこともわからないから
自前でちゃっちゃと用意することもできずに、こんな不毛なやり取りしてるあたりが
やっぱVBAスレって感じでいいね(プゲラオプスwwwwwww

509:デフォルトの名無しさん
08/05/01 19:13:59
クイックソートが最適・・・(笑

510:デフォルトの名無しさん
08/05/01 19:26:03
クイックソートを笑って逆に自分の無知ぶりを晒けだしてることにすら気づいてないあたりが
やっぱVBAスレって感じでいいね(ゴルバチョフwwwwwwwwww

511:デフォルトの名無しさん
08/05/01 19:27:14
C の qsort とか純粋なクイックソートでまず実装されてないだろwww

512:デフォルトの名無しさん
08/05/01 19:33:58
そもそもなんでエクセルでソート書いてんだよ。
それはさておき、ソートプログラムを売る人じゃないんならクイックソート
を実装できる程度でもじゅうぶんだと思う。
>>501のはさすがにひどい。


513:デフォルトの名無しさん
08/05/01 19:48:01
プゲラとか懐かすぃ

514:デフォルトの名無しさん
08/05/01 20:09:52
510 は逃げ帰ったようだな

515:デフォルトの名無しさん
08/05/01 20:12:31
クイックソートはスレ違い

516:デフォルトの名無しさん
08/05/01 20:40:17
すみません初心者ですがマクロの記録をやってるんですが、おもしろいですね

517:デフォルトの名無しさん
08/05/01 20:55:54
>>516
VBAの正しい楽しみ方だね。
ここの先輩たちのようなソート作るようなバカにはならないでね。

518:デフォルトの名無しさん
08/05/01 21:37:32
dim a as integer で、空白セルの値が代入されたとき
if a="" then では型不一致となるのをどう書いたらいいですか?



519:デフォルトの名無しさん
08/05/01 21:39:30
バルブソートが一番だよ。

520:デフォルトの名無しさん
08/05/01 21:48:16
Excelの並べ替えの機能を使ってあげろよ。

521:デフォルトの名無しさん
08/05/01 22:30:49
>>516
それがVBAの自慢できるところだと思う
初心者に優しい

522:デフォルトの名無しさん
08/05/01 22:42:36
>>518
dim a as variant


523:デフォルトの名無しさん
08/05/01 23:09:36
>>518
あとは格納の段階で型不一致を監視して弾く

くりすぴーな501ですがクイックソートってなんですかわかりません〉〈
直訳するとはやぶさの剣かなにかで

先生教えて〉〈

524:デフォルトの名無しさん
08/05/01 23:12:09
並び替えアルゴリズムの一名称
ネットにvisual basicのコードいっぱいあるよ

525:デフォルトの名無しさん
08/05/01 23:17:40
>>523
教養としてクイックソートくらいは知っておいたほうがいい。
勉強のためにVBAで組んでみるのもいいかもしれない。
でも仕事では使うなよ。VBAでソートなんてアホのやること。


526:デフォルトの名無しさん
08/05/01 23:21:44
>>525
VBAじゃなくても、自分でソートのコード書くことなんてほとんどないだろ

527:デフォルトの名無しさん
08/05/01 23:26:18
>>526
VBA使いはソートばかり書きたがるだろ?

528:デフォルトの名無しさん
08/05/01 23:28:47
まあソートプログラムなどネットで買い物するぐらい簡単なんだけど
おじいちゃんとかは発狂するかもねw

529:デフォルトの名無しさん
08/05/01 23:34:22
>>528
簡単なんだから作っても誰もほめてくれないぞ。


530:デフォルトの名無しさん
08/05/01 23:40:04
だからネットで落とせると言ってるだろおじいちゃんw

531:デフォルトの名無しさん
08/05/01 23:44:39
>>530
そうか?伝わらなかったな。
「ネットで買い物する行為と同じくらい簡単な事だ」と言ってるのかと思ったよ。


532:デフォルトの名無しさん
08/05/01 23:48:24
>>531
発狂するなよ
おじいちゃんには難しいかもしれんがw

533:デフォルトの名無しさん
08/05/01 23:50:12
>>532
そうか。そうか。
おすすめのソートはどれだね。

534:デフォルトの名無しさん
08/05/01 23:52:22
>>533
毎度馬鹿の一つ覚えの純粋クイックソートです。
要素数少なくても馬鹿の一つ覚えのようにクイックソートします。
要素数によって分岐するなんて発想はありません。

535:デフォルトの名無しさん
08/05/01 23:52:42
おすすめのソートってネットで特徴ひけるだろw
そんなんで勝ち誇りたいなんて能無しで誰にも相手にされない
頑固じじいといっしょだねww

536:デフォルトの名無しさん
08/05/01 23:54:40
プログラマーに劣等感抱いてるのがいるな

537:デフォルトの名無しさん
08/05/01 23:55:42
おや?ソートをダウンロードする話じゃなかったのか?

538:デフォルトの名無しさん
08/05/01 23:56:06
職場で嫌な事でもあったんだろ

539:デフォルトの名無しさん
08/05/01 23:58:20
>>527
????

540:デフォルトの名無しさん
08/05/01 23:59:38
ソートをダウンロード((≧m≦)ぷっ!
身近の目上の人が
「並び替えをダウンロードしろ」
とか言ったらもう馬鹿にされまくりで
誰も相手にしない

541:デフォルトの名無しさん
08/05/02 00:00:11
なんだ、このスレ

542:デフォルトの名無しさん
08/05/02 00:01:11
所詮VBAスレだしキチガイが湧いても仕方が無い

543:デフォルトの名無しさん
08/05/02 00:02:16
最近の若い子とは話が通じないな。
まあいい。どんなアルゴリズムでもいいんだ。アルゴリズムの話をしたいんじゃない。
エクセルでソート自作してなんの意味あるんだということを言いたい。

544:デフォルトの名無しさん
08/05/02 00:05:58
何を当たり前の事を自信たっぷりに言ってるんだ。
分かって遊ばれてるだけだというのに。

545:デフォルトの名無しさん
08/05/02 00:07:55
難しい連中だな。

546:デフォルトの名無しさん
08/05/02 00:10:54
>>544
当たり前と言うがこのスレ見てると本気で心配なやつがちらほら…

547:デフォルトの名無しさん
08/05/02 00:13:13
>>418  を見る限り、既に、本流は解決している件

548:デフォルトの名無しさん
08/05/02 00:17:52
>>547
その後>>443とか>>501が登場したからなあ。

549:デフォルトの名無しさん
08/05/02 02:42:25
会社とかで使うブックの場合やはり余り凝らないほうがいいと思う。
ちょっと格好わるくてもVBAでやったほうが無難かも。
情報セキュリティにうるさいDB屋の圧力があるからね。
あんまり凝ったことして得意になってると、Excelブックを一種の
アーカイブファイルとして扱い主要処理はDBでやれという動きが加速してくる。
殆どのブックは実際物置としての価値しかないんだが、一部有効に使われた
ブックには、核廃棄物のように再利用不能な割に流出すると有害なもの
が含まれてる場合がある。やっかいなことにちょっと凝ったスマートな使い方
をすると何でもないデータからそういうのが生まれることがある。
虫が湧くって感じ。
だから最近は>>443の例のように、凝った使い方を一切禁止するブックを
物置として扱うことが強制され、かつてはExcelで簡単に出来た処理もわざわざ
固く重く扱いにくいRDBの上でやれと強制される最近の傾向はそれが原因
してる。(単にDB屋の陰謀だという説もあるが)

550:デフォルトの名無しさん
08/05/02 02:46:40
ではちょっと凝った使い方をしたのを、「ムック」と呼ぶ事にしよう。

551:デフォルトの名無しさん
08/05/02 03:05:39
ExcelVBAでお手軽に出来ることをRDBに持っていくと、やたらと工数が掛かる。
外部に出すと、鼻クソみたいなデータ処理でも平気で3人月とか見積もり出てくるし。
それに、RDB使うなら業務の標準化から始めないと不毛になりがち。
ま、何ごともほどほどに。

552:デフォルトの名無しさん
08/05/02 07:00:35
>>549
凝らないほうがいいならなおさらVBAは使わないほうがいいじゃないか。
「セキュリティにうるさいからVBAが無難」←なぜ?
「流出すると有害なブックがある」←当たり前。

おまえ>>443だろ。

553:デフォルトの名無しさん
08/05/02 07:02:18
>>551
>それに、RDB使うなら業務の標準化から始めないと不毛になりがち。

ますますRDB使いたくなるぞ。
おまえ>>443だろ。

554:デフォルトの名無しさん:
08/05/02 08:29:42
RDBってなんですか?

555:デフォルトの名無しさん
08/05/02 09:03:58
レッドリボン軍

556:デフォルトの名無しさん
08/05/02 09:06:47
RDBの概要でつ
URLリンク(www5a.biglobe.ne.jp)

557:デフォルトの名無しさん
08/05/02 11:54:43
>>525
そっか
ありがとう


配列内容をソートするのがうんたらって質問が出たからじゃない?
〉なぜ

558:デフォルトの名無しさん
08/05/02 12:06:39
>>557
実は出てないらしい

559:デフォルトの名無しさん
08/05/02 13:29:32
でもぶっちゃけ、ちょっとVBA使えるようになるとちょっとしたモン作りたくなるよね?
そういう時に手を出しがちなのがソート関係じゃない?

ええ、その昔、俺も組みましたよ、クイックソート

懐かしい、結構みんな通る道なんじゃないの?(俺だけか)

560:デフォルトの名無しさん
08/05/02 13:49:54
アメリカじゃ馬鹿なことやって、みんなに迷惑かけるやつに限って成功したりするもんな。

561:デフォルトの名無しさん
08/05/02 14:23:15
そうそう、派手なフォーム作ったりな

562:デフォルトの名無しさん
08/05/02 15:11:05
なんかやりたい気持ちはわかるんよ。

派遣で就いた職場で社員から、手作業でデータを加工する仕事をまかされて、あまりの能率の悪さと面倒くささで
しかもミスると怒られるからVBA使って一発で加工するマクロ作ったらなぜか気味悪がられるようになった。

それからというもの、プリンタが止まったり、PCに何かエラーがあると全部俺が疑われるようになった。

563:デフォルトの名無しさん
08/05/02 15:31:07
>>549
Excelブックが物置?
やっぱり455の言う事は意味がわからんな

564:デフォルトの名無しさん
08/05/02 16:07:09
>>562
そんな会社止めちまえ

565:デフォルトの名無しさん
08/05/02 17:00:44
>>549
そんな会社止めちまえ

566:デフォルトの名無しさん
08/05/02 17:05:34
>>562
俺もその経験あるな・・・


567:デフォルトの名無しさん
08/05/02 17:06:34
>>564
いや、あまりにも周りが無知過ぎていつか自分にもチャンスがあるんじゃないかと思って辞めれない・・。
もう少しレベルの高いとこだと使い物にならない実力だし。

そんな態度だから苛められるんだろうなぁ。

568:デフォルトの名無しさん
08/05/02 17:38:23
ニュータイプを恐れる者たちの気持ちがわかっただろう

569:デフォルトの名無しさん
08/05/02 17:58:12
人をモルモットみたいに……

570:デフォルトの名無しさん
08/05/02 18:23:09
ついにねんがんのアイスソートをてにいれたぞ

571:デフォルトの名無しさん
08/05/02 18:26:31
どう考えても手作業の方が早いのに、
「マクロでやれ、VBAでやれ、そうしたらスグできるだろ?○○分後までに終わらせろ」
って、何も作業の中身を見ずに、マクロ・VBAを使えば
どんな作業でもスグに終わると信じ込んでいる上司に
困ったことはあったな。


572:デフォルトの名無しさん
08/05/02 18:27:05
職場によるだろ。同じ派遣でも。
>>562の職場は、多分シートのミス入力チェックする担当者の仕事が無くなって
立場無くなるから顰蹙を買っただけだと思う。
一般的にはシートに妙な参照や糞数式とか条件付き書式とか使ったトリッキーな
シート作るほうが顰蹙を買い易い。
VBAのコード(特に日本語だと喜ばれる)置いておく(組込んだままには
しないでテキストに落として、ブックに埋め込む)ほうが喜ばれる。

573:デフォルトの名無しさん
08/05/02 18:35:12
>>572
>VBAのコード(特に日本語だと喜ばれる)置いておく(組込んだままには
>しないでテキストに落として、ブックに埋め込む)ほうが喜ばれる。

なんとなくコードっぽい日本語。

574:デフォルトの名無しさん
08/05/02 18:47:06
>>573
毎回コードをエディタにコピーしてから実行するの?
なんかめんどくさそうなんだけど。
どんな処理するVBAなん?

575:デフォルトの名無しさん
08/05/02 19:19:13
アドインじゃだめなん??

576:デフォルトの名無しさん
08/05/02 19:21:56
mscorlib.SortedListって便利だな。

577:デフォルトの名無しさん
08/05/02 20:10:01
まぁ、パソコン販売の「ソーテック」の名前の由来が
「ソートテクニック」だからな。

578:大邊創一
08/05/02 20:17:17
・・・

579:デフォルトの名無しさん
08/05/02 22:12:33
またソートか

じゃあ反対に、考えうる限りギリギリ使えるレベルの、最悪のソートコードだれか考えれ

580:デフォルトの名無しさん
08/05/02 22:56:01
ソートの話をするやつはそーっとしとこ。

581:デフォルトの名無しさん
08/05/02 23:34:50
>579
ボゴソートでもVBAで実装する話?

582:デフォルトの名無しさん
08/05/03 00:52:00
ソートはもういいから次

583:デフォルトの名無しさん
08/05/03 01:44:48
ExcelやDBには本来ソートなんて概念はない。
以上基地外の発現でした。

584:デフォルトの名無しさん
08/05/03 02:16:42
>>580
その通り。卑猥な話だからね。

585:デフォルトの名無しさん
08/05/03 07:26:52
Excel2003しか持ってない(Accessを持ってない)俺が、
七万個の要素を昇順で並べ替えたい時にはどうすればいいですか?

586:デフォルトの名無しさん
08/05/03 07:46:31
Accessを買う

587:デフォルトの名無しさん
08/05/03 07:55:37
Excel2007を買う

588:デフォルトの名無しさん
08/05/03 07:58:51
手作業でやる

589:デフォルトの名無しさん
08/05/03 08:22:41
>>585
その七万個の要素はどんな状態にあるの?
csvなりのフォーマットに落ちているなら、sortすればいいだけだが。

590:デフォルトの名無しさん
08/05/03 08:29:03
>>589
kwsk

591:デフォルトの名無しさん
08/05/03 08:30:15
つ[man sort]

592:デフォルトの名無しさん
08/05/03 08:33:48
ちょっと疑問に思ってsort /?してみたら、固定幅ならsort.exeでも特定カラムをキーにソートできそうね。
unix系のsortにしても、テキストに落ちている必要はあるけど。

593:デフォルトの名無しさん
08/05/03 08:38:32
>>586>>587>>589
工エエェェ(´д`)ェェエエ工工

>>589
Sheet1とSheet2のA列~F列×35000行と思って頂いて差し支えありません。

594:デフォルトの名無しさん
08/05/03 08:50:14
>>593
1シートずつ別々のcsvファイルに落として、二つのcsvファイルをまとめてsortでOK。
cygwin使うなり、Linuxをリモートで使うなりできるなら、出力を二つのcsvファイルに分けるところまでできる。
そうでないなら、それこそVBAで分割して読み込むって処かな。
いずれにしても、自分でソートを書く必要はないわけで。

どうしてもVBAでやるなら、各シートをそれぞれソートしてからマージソートかね。

595:デフォルトの名無しさん
08/05/03 09:31:01
テキストファイルの分割ごときでそんなご大層な

596:デフォルトの名無しさん
08/05/03 10:53:09
70000の配列に値を入れて、ネットでソートプログラムを
探して、並べ替えればいいのでは

597:デフォルトの名無しさん
08/05/03 12:07:29
>>594
サンクスコ
具体的にどういう手順でやればいいの?
聞いてばっかでゴメソ

>>596
ソートのコードがいるんだね

598:デフォルトの名無しさん
08/05/03 12:11:22
Excel総合相談所 67
スレリンク(bsoft板)

599:597
08/05/03 12:20:03
確かにスレ違いだね
助言してくれた皆さんありがとう
あとは自分で何とかしてみるよ

600:デフォルトの名無しさん
08/05/03 12:30:22
>>562
せっかくVBAで仕事が早く終わるようになったのなら
仕事してるふりしてネットでも見てなさい

601:デフォルトの名無しさん
08/05/03 13:07:55
ちょっと時間がかかっていいなら・・・
1. Sheet1, Sheet2をExcelの機能でソートする
2. Sheet1の10,000行目のソートキーを区切りにして、そこより上をSheet3に、下をSheet4にコピー
3. 2で使ったソートキーの場所を見つけ、そこより上をSheet3, 下をSheet4にコピーする
4. Sheet3, Sheet4をそれぞれExcelの機能でソートする

Sheet1を10,000行と25,000行にまず分割するので、Sheet2の内容がまるごとどちらかに追加
されてもSheetの行あふれは起こらないというのがミソ。

602:デフォルトの名無しさん
08/05/03 13:08:46
あ、3は「Sheet2の中で」というのが抜けてた。

603:デフォルトの名無しさん
08/05/03 14:03:50
ArrayList使え。

604:デフォルトの名無しさん
08/05/03 17:25:16
ご助言をいただきたいのですが、下記のようなマクロを作成しております。
1.幾つかボタンがあり、ボタンを押すとボタン名のシートが追加されます
 作成されたシートに任意の数字を入力しそのシート内でそれが合計されます
2.次に集計用のシートに1で集計した数を貼り付けます。
3.これを追加されたシート分繰り返す。
という処理をするマクロを作成中なのですが、
・追加されたシート分だけコピーするという条件(左から2番目のシートから処理をはじめ
シートの右から2番目まで繰り返すというのを考えています

・集計しコピーしたものを集計用シートの前回貼り付けたセルの横に貼りつけ
をどのうように組めばいいのか思いつきません…。

ボタンの数は全部で7つで最高増えるのが7シートなので、
最初から7つのシートを作成しその集計を集計用のシートに貼りつけするのは
できるのですが、そうすると使わないシートまで作成することとなるので出来ればそういう
ムダを省きたいと思い上記のような事を考えました。
なにか改善策やヒント等ございましたらご教示の程お願い致します。

605:デフォルトの名無しさん
08/05/03 17:36:12
Dim i as integer

For i = 2 to Worksheets.Count -1

  Worksheets(i) に対して処理

Next

こんな感じでどうでしょう

606:デフォルトの名無しさん
08/05/03 18:09:23
VBAとセル間リンクを駆使したExcellentなExcelの使い方をしたければ
LANカード抜いたPCでやったほうがいい。USBメモリで外部データとの
やりとりをする。
ネットやLANに繋がってる環境でVBAを使うとDLLアクセスとか
出来るんで、ネットにデータ流出してるとかしてないとかDB屋が騒ぎ
だす。今やネットやLANに繋がってるPCでExcelやAccessでVBA使う時
は管理者許可がデフォになってるね。
ソートで騒いでいるようだが、DBもExcelもソートは実は余り得意じゃない。
ソートしないで済むようにデータを入れていくのがキホン



607:デフォルトの名無しさん
08/05/03 18:38:12
自分の職場環境がデフォだと思うなよ

608:デフォルトの名無しさん
08/05/03 18:44:21
>>606
VBAかLANかと言われたらLANを選ぶ。
あとそれからエクセルとアクセスはソートが得意。これ豆知識な。

609:デフォルトの名無しさん
08/05/03 18:53:42
本当に豆な知識だ


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