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


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

Excel VBA質問スレ Part6



1 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 19:31:39 ]
ExcelのVBAに関する質問スレです

質問前に 【 >>2-3 】 あたりを良く読むこと

前スレ
pc11.2ch.net/test/read.cgi/tech/1197448064/

★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 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

175 名前:デフォルトの名無しさん [2008/03/30(日) 23:36:48 ]
>>166

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


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

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

177 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん [2008/03/30(日) 23:48:43 ]
>>177
並べ替えたいものは「1つのフィールドに入っている」んじゃないか?

179 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん [2008/03/31(月) 00:21:21 ]
いいんじゃね?
あとは自作関数化すれば何セルあっても動作するするだろ
それくらいは自分でなんとかすればよし、というところか。

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


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

183 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 02:09:14 ]
行頭から半角5文字目の空白を;に変えたい

185 名前:デフォルトの名無しさん [2008/03/31(月) 08:11:53 ]
>>183


>>166 [Excel97]
×InStrRev

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

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

188 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:14:25 ]
>>186
97にはsplitもなければInstrRevもない。

189 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:22:56 ]
Replaceもなかったりする

190 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:24:40 ]
>>188
>>187

191 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:27:35 ]
意味なんてものはその職場の風習によるだろ。

192 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:29:51 ]
>>191
意味わからん

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



194 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:38:41 ]
instrくらいあるだろ

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

196 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:47:25 ]
>>172

>>34

197 名前:166 mailto:sage [2008/03/31(月) 20:28:10 ]
>>182
上手くいきました。 ありがとうございます。

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

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

199 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 22:24:02 ]
見苦し

200 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 05:44:27 ]
>>182
なんでこいつこんなにえらそーなんだ

201 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 08:34:03 ]
VBA使いは総じてえらそう

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

203 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 09:51:32 ]
excel97って、left$もright$も無いの?



204 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/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 mailto:sage [2008/04/02(水) 04:25:09 ]
'***** つづき *****
Shitei: 'ファイル名を指定/ファイル名が適切なものになるまでダイアログボックスを閉じないA
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 おわり----------

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

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

209 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 10:19:58 ]
ユーザ定義タイプの配列

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

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

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

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

Excel2003



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

215 名前:デフォルトの名無しさん [2008/04/04(金) 19:45:26 ]
質問です。

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

216 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 21:14:38 ]
そういうふうにすれば?

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

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

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

220 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:59:18 ]
VB6はわかりませんがどこでもホイールはまさかしたら

221 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:54:34 ]
support.microsoft.com/kb/837910/ja

222 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 12:07:05 ]
>>213
解決したみたいだけど sp3で 普通にできるようになったよ

223 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:12:34 ]
>>221
このアドインはバグがあるからダメ



224 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:29:08 ]
AddAutoScrollというものを使ってる

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

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

WinXP、Excel2003です。

226 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 22:33:10 ]
>>266
Range(Cells(hoge,1), Cells(piyo,3)).Select
たしかRangeとcellsは同シートじゃないとエラー出るのに気をつけてね


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

あいまいでごめん。

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

230 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:10:14 ]
>>229
何がしたいのか理解できない

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

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


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


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



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

235 名前:226 mailto:sage [2008/04/08(火) 21:01:07 ]
>>227
上手く選択することが出来ました!
これで作業に幅が出たと思います。

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

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


237 名前:236 mailto:age [2008/04/08(火) 23:24:46 ]
揚げ忘れたwww


238 名前:236 mailto:sage [2008/04/08(火) 23:48:02 ]
次で解決しました。
Sub filter0()
With Sheet2
If .AutoFilterMode = True Then
.AutoFilterMode = False
End If
End With
End Sub


239 名前:236 mailto:sage [2008/04/08(火) 23:48:45 ]
次で解決しました。
Sub filter0()
With Sheet2
If .AutoFilterMode = True Then
.AutoFilterMode = False
End If
End With
End Sub


240 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 01:03:15 ]
VBAでレコード操作したことないけど
カーソルとロックタイプを指定してるだけでしょ。
SQLでレコード扱う場合の基本だからググると(ry

243 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 15:27:39 ]
Sheets("Sheet1").Range("B5").AutoFill Destination:=Sheets("Sheet1").Range("B5:B35")

245 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 15:29:24 ]
>>244
ありがとございます、できました

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

247 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 15:41:19 ]
>>246
やってみます、ありがとう!

248 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 15:45:53 ]
あ、いやいや、そういうオプションがあったらいいな〜
もしあったら、デフォルトはこれがいいな〜
って妄想なので・・・

249 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 15:47:20 ]
>>248
なるほど、そういうことですか

250 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 15:54:27 ]
もう一ついいでしょうか
フォントの色を変える方法はセルを指定するしかないのでしょうか?
表を作っていてさっき質問したB5~B35に入る曜日の土日だけ赤にしたいと思っています
しかし月によって、どこに土日が入るかわからないのでセル指定ではなくて変数などを指定してやる方法はありますか?
ちなみにSelect文を使って変数の中身を替えています

252 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 16:20:41 ]
>>253
こればっかりはしょうがないですよね、ありがとうございます!

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

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

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

258 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:19:48 ]
知恵をお借りしたく、書き込みいたしました。

OS:XPSP2
excel:2003

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

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

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

260 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 00:05:31 ]
ちょっと外部には出せない類のページでorz

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

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

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

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

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



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

265 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:23:15 ]
被害妄想

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

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

267 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:54:22 ]
病院行った方がいいよ

268 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:55:59 ]
そちらからお先にどうぞ

269 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 02:02:19 ]
なにこいつ

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

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

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

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



274 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 10:58:32 ]
頼むからコテつけてくれ。あぼんするから。

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






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

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

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