!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part48
http://mevius.2ch.net/test/read.cgi/tech/1494890685/
※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
Excel VBA 質問スレ Part49©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ bb2e-8SzA)
2017/06/26(月) 02:15:14.60ID:T3ylemnb0851デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/19(土) 13:55:26.61ID:8yrvVjZy0852デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/19(土) 13:55:32.82ID:stRE+6ELa >>836
そこまで分かってて何で組めんの?
基本的な問題で躓いてるみたい。
君はどういう方針で組んでるの?
普通はそういうサンプル組めたらURLを変数に置き換えて、指定のURLを引数にして4つのデータを取得するプロシージャ作ると思うんだが。
Function Get4Data(strURL As String) As String()
Dim strData() String
.
.
.
Get4Data=strData
End Function
Sub MainProc()
Dim strData() As String
Dim i As Long
Dim j As Long
For i=2 To 102
strData=Get4Data(Cells(i,1).Value)
For j=0 To 2
Cells(i,j+2).Value=strData(j)
Next j
Next i
End Sub
4つのデータに意味を意識するならユーザー定義型を返すプロシージャにしてメインでは配列の利点を使わない。(jを使わない)
この辺は趣味の問題だと思うけど。
なお、スマホから打ってるからコードには間違いが有るかも。
そこまで分かってて何で組めんの?
基本的な問題で躓いてるみたい。
君はどういう方針で組んでるの?
普通はそういうサンプル組めたらURLを変数に置き換えて、指定のURLを引数にして4つのデータを取得するプロシージャ作ると思うんだが。
Function Get4Data(strURL As String) As String()
Dim strData() String
.
.
.
Get4Data=strData
End Function
Sub MainProc()
Dim strData() As String
Dim i As Long
Dim j As Long
For i=2 To 102
strData=Get4Data(Cells(i,1).Value)
For j=0 To 2
Cells(i,j+2).Value=strData(j)
Next j
Next i
End Sub
4つのデータに意味を意識するならユーザー定義型を返すプロシージャにしてメインでは配列の利点を使わない。(jを使わない)
この辺は趣味の問題だと思うけど。
なお、スマホから打ってるからコードには間違いが有るかも。
853デフォルトの名無しさん (ワッチョイ 2baa-PF2c)
2017/08/19(土) 13:57:02.56ID:9KU7ntuJ0 別に反対とは言わないけど、
相手のサイトが、業務妨害で訴えるのは自由だから、逮捕されるよってだけ
コンビニのアイスクリームのケースに入って、写真を撮っただけで逮捕されてる
被害額は、0円なのにw
気持ち悪くて、客に出せないから、アイスクリームを全部捨てましたって
相手は、何とでもできる。
無傷でも、被害額を請求できる
相手のサイトが、業務妨害で訴えるのは自由だから、逮捕されるよってだけ
コンビニのアイスクリームのケースに入って、写真を撮っただけで逮捕されてる
被害額は、0円なのにw
気持ち悪くて、客に出せないから、アイスクリームを全部捨てましたって
相手は、何とでもできる。
無傷でも、被害額を請求できる
854デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/19(土) 14:07:36.79ID:8yrvVjZy0855デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/19(土) 14:16:21.11ID:stRE+6ELa 岡崎図書館の場合は図書館側に問題があって、プログラムでアクセスした時にそれが顕在化したということだったと思うが。
ただし、プログラムでのアクセスはサーバーをダウンさせることもあり得るわけでそれはアクセスの程度問題であるということ、過度なアクセスはサーバー側にとっては迷惑であるということ、不正アクセス防止法は意図しなくても問えるということは、留意する必要があるだろう。
要は無断でのアクセスは迷惑になるから気をつけてってこと。
そういう意識があって、でもそれほどアクセスが有るわけじゃ無いから連絡はしなくても良いだろうという判断ならそれもありじゃないかとも思う。
これが全く気にもせず、人のことはどうでも良いと考える人ならもう教えないし、プログラム組むのも辞めた方が良いと思う。
そういう人のプログラムって動けばOKの独りよがりプログラムになって周りが迷惑になりがちだから。
ただし、プログラムでのアクセスはサーバーをダウンさせることもあり得るわけでそれはアクセスの程度問題であるということ、過度なアクセスはサーバー側にとっては迷惑であるということ、不正アクセス防止法は意図しなくても問えるということは、留意する必要があるだろう。
要は無断でのアクセスは迷惑になるから気をつけてってこと。
そういう意識があって、でもそれほどアクセスが有るわけじゃ無いから連絡はしなくても良いだろうという判断ならそれもありじゃないかとも思う。
これが全く気にもせず、人のことはどうでも良いと考える人ならもう教えないし、プログラム組むのも辞めた方が良いと思う。
そういう人のプログラムって動けばOKの独りよがりプログラムになって周りが迷惑になりがちだから。
856デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/19(土) 14:25:11.26ID:8yrvVjZy0 そのためのrobot.txtだし
857デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/19(土) 14:25:27.42ID:8yrvVjZy0 s
858デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/19(土) 14:33:28.32ID:stRE+6ELa 仕事でWebから情報取って来るプログラムを作ったときは客にその旨を説明し、先方には実際のプログラムのソースコードと一緒にどういう手順でアクセスするかの説明を提示して貰った。
先方と言っても会社は違うけど客の会社の関連会社で情報取って来るプログラムもその会社関連の仕事の中の一部だったわけだけど。
先方が承諾することは分かってたけど一応報告すべきってことで。
>>839
そういうわけで手順を踏んで許可を取れば問題ないから幇助には当たらない。
先方と言っても会社は違うけど客の会社の関連会社で情報取って来るプログラムもその会社関連の仕事の中の一部だったわけだけど。
先方が承諾することは分かってたけど一応報告すべきってことで。
>>839
そういうわけで手順を踏んで許可を取れば問題ないから幇助には当たらない。
859デフォルトの名無しさん (ワッチョイ 93aa-jLVh)
2017/08/19(土) 15:26:44.64ID:s/7RraD70 無断でのアクセスって何のことだろう?
860デフォルトの名無しさん (JP 0Heb-oL0b)
2017/08/19(土) 15:56:14.31ID:qGabhzqpH 全部MDISのせい
Librahack氏はMDISに慰謝料を請求してもいいレベルだと思うね
Librahack氏はMDISに慰謝料を請求してもいいレベルだと思うね
861デフォルトの名無しさん (ワッチョイ 136c-/CPR)
2017/08/19(土) 16:13:25.46ID:YttHcr520 同じコードで実行してもできる時と反応がない時とあるんだけどなんで?
862デフォルトの名無しさん (オッペケ Sr4d-uth0)
2017/08/19(土) 16:51:19.94ID:8l5l37FKr863デフォルトの名無しさん (ワッチョイ 93aa-jLVh)
2017/08/19(土) 18:01:00.40ID:s/7RraD70 もうすぐ停電が起こる
864デフォルトの名無しさん (ワッチョイ 932e-oL0b)
2017/08/19(土) 18:37:05.55ID:lbryh9n10 >>849
> 1秒に1回なら、アクセスしても無罪というのは、
> 無罪になるために、こういうのが常識ですよって広めただけで、
> 実際には、逮捕状も取れている
不起訴になってるじゃん
前例ができたから、今後は逮捕されることもないでしょ
> 1秒に1回なら、アクセスしても無罪というのは、
> 無罪になるために、こういうのが常識ですよって広めただけで、
> 実際には、逮捕状も取れている
不起訴になってるじゃん
前例ができたから、今後は逮捕されることもないでしょ
865デフォルトの名無しさん (ワッチョイ 5b6d-bEg4)
2017/08/19(土) 18:47:22.47ID:qVAbDdKi0 岡崎図書館不起訴になったのか
じゃあ問題無しだな。一時間に一回ぐらいのクロールなら余裕だろう
じゃあ問題無しだな。一時間に一回ぐらいのクロールなら余裕だろう
866デフォルトの名無しさん (アウアウエー Sa23-Ovym)
2017/08/19(土) 22:27:39.50ID:vZgN9gzSa867デフォルトの名無しさん (ワッチョイ 5991-7WL/)
2017/08/19(土) 22:32:40.39ID:+zJz2sC40868デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/19(土) 23:39:23.73ID:8yrvVjZy0 >>861
ネット関係ではよくあると思うが
ネット関係ではよくあると思うが
869デフォルトの名無しさん (ワッチョイ 0971-JJVS)
2017/08/20(日) 05:28:39.28ID:C1zPHqEG0870デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/20(日) 08:32:07.00ID:1pFA1rOB0 被害額0円でも女子トイレに入っただけでも逮捕されることあるけどな
871デフォルトの名無しさん (ワッチョイ 710d-Jcyw)
2017/08/20(日) 09:23:54.53ID:B8YXLqYv0 >>861
コードが間違ってるから
コードが間違ってるから
872デフォルトの名無しさん (オイコラミネオ MM6b-DQO+)
2017/08/20(日) 10:22:38.45ID:fQYf1WJRM >>853
それが被害額ゼロ円だと思ってる時点でお察しだよ
それが被害額ゼロ円だと思ってる時点でお察しだよ
873デフォルトの名無しさん (ワッチョイ 1101-bEti)
2017/08/20(日) 11:34:29.55ID:xnxdM6Sy0 初心者ですいません。教えてほしいです。
シートが2枚あり、1枚目のシートの特定セルに「デリ」と入力後、
2枚目シートの特定セルにデリと入力されるのを作ってるのですが1枚目のC13のは反映されるのですが、C14以降が反映されません
ご教授お願いします
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim name As Variant
Dim linenm As Integer
For i = 13 To 52
If Intersect(Target, Cells(i, 3)) Is Nothing Then
Exit Sub
Else
'デリがもし記載されていれば
If Cells(i, 3).Value = "デリ" Then
'デリが記載の名前をnameに代入
name = Cells(i, 3).Offset(0, 1).Value
'ワークシート(シフト)で、nameに代入されている名前の行数を取得
linenm = Application.Match(name, Worksheets("シフト").Range("A1:A60"), 0)
Worksheets("シフト").Cells(linenm, 2).Value = "デリ"
End If
End If
Next i
End Sub
シートが2枚あり、1枚目のシートの特定セルに「デリ」と入力後、
2枚目シートの特定セルにデリと入力されるのを作ってるのですが1枚目のC13のは反映されるのですが、C14以降が反映されません
ご教授お願いします
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim name As Variant
Dim linenm As Integer
For i = 13 To 52
If Intersect(Target, Cells(i, 3)) Is Nothing Then
Exit Sub
Else
'デリがもし記載されていれば
If Cells(i, 3).Value = "デリ" Then
'デリが記載の名前をnameに代入
name = Cells(i, 3).Offset(0, 1).Value
'ワークシート(シフト)で、nameに代入されている名前の行数を取得
linenm = Application.Match(name, Worksheets("シフト").Range("A1:A60"), 0)
Worksheets("シフト").Cells(linenm, 2).Value = "デリ"
End If
End If
Next i
End Sub
874デフォルトの名無しさん (ワッチョイ 5b6d-5Iur)
2017/08/20(日) 13:16:25.67ID:hXI6dDhp0 >>873
ここがおかしい
targetがcells(14,3)だとループから即抜けて終わる
For i = 13 To 52
If Intersect(Target, Cells(i, 3)) Is Nothing Then
Exit Sub
Else
以下のように書き換える
…
Dim linenm As Integer
'範囲外だったら終了
If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then
Exit Sub
endif
'メイン処理
For i = 13 To 52
…
こうすれば何をしているかわかりやすいと思う
ここがおかしい
targetがcells(14,3)だとループから即抜けて終わる
For i = 13 To 52
If Intersect(Target, Cells(i, 3)) Is Nothing Then
Exit Sub
Else
以下のように書き換える
…
Dim linenm As Integer
'範囲外だったら終了
If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then
Exit Sub
endif
'メイン処理
For i = 13 To 52
…
こうすれば何をしているかわかりやすいと思う
875デフォルトの名無しさん (ワッチョイ 5b6d-5Iur)
2017/08/20(日) 13:17:04.87ID:hXI6dDhp0 で、更に言うと、スコープの関係でWorksheet_Changeから別シートは触れ無くないか?
以下はエラーになる気がする
Worksheets("シフト").Cells(linenm, 2).Value = "デリ"
以下のようにすると動くと思う
'worksheet1
Private Sub Worksheet_Change(ByVal target As Range)
'無限ループを抑制する
Application.EnableEvents = False
'この時点で選別する
If Intersect(target, Cells(i, 3)) Is Nothing Then
Exit Function
Else
'標準モジュールに投げる
foo (target)
End If
Application.EnableEvents = True
End Sub
'標準モジュールの内容
Function foo(ByVal target As Range)
Dim i As Integer
Dim name As Variant
Dim linenm As Integer
'範囲外だったら終了
If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then
Exit Sub
endif
'メイン処理
For i = 13 To 52
…
以下はエラーになる気がする
Worksheets("シフト").Cells(linenm, 2).Value = "デリ"
以下のようにすると動くと思う
'worksheet1
Private Sub Worksheet_Change(ByVal target As Range)
'無限ループを抑制する
Application.EnableEvents = False
'この時点で選別する
If Intersect(target, Cells(i, 3)) Is Nothing Then
Exit Function
Else
'標準モジュールに投げる
foo (target)
End If
Application.EnableEvents = True
End Sub
'標準モジュールの内容
Function foo(ByVal target As Range)
Dim i As Integer
Dim name As Variant
Dim linenm As Integer
'範囲外だったら終了
If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then
Exit Sub
endif
'メイン処理
For i = 13 To 52
…
876デフォルトの名無しさん (アウアウカー Sa1d-Enn5)
2017/08/20(日) 14:44:51.18ID:Qs6CySsIa >>875
874理解しました。
なるほどです。
外出中なので検証できませんが、
changeイベントはシート1の値を対象で
イベントが発生すればifを実行
ifでシート1にデリが記載されていれば
シート2にデリを入力
というのは不可能なんでしょうか、、
帰ったらやってみます。
874理解しました。
なるほどです。
外出中なので検証できませんが、
changeイベントはシート1の値を対象で
イベントが発生すればifを実行
ifでシート1にデリが記載されていれば
シート2にデリを入力
というのは不可能なんでしょうか、、
帰ったらやってみます。
877デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/20(日) 18:50:52.94ID:1pFA1rOB0 できるよね
Worksheets("シート2").Cells(linenm,2).Value = "デリ"
Worksheets("シート2").Cells(linenm,2).Value = "デリ"
878デフォルトの名無しさん (ワッチョイ 5b6d-SlN8)
2017/08/20(日) 18:56:54.50ID:hXI6dDhp0 すまんかった、普通に間違えてたわ
879デフォルトの名無しさん (ワッチョイ 1101-8l/3)
2017/08/20(日) 22:03:48.69ID:xnxdM6Sy0 >>878
今戻って書き直したら正常に動作しました。
ありがとうございます。
別件の質問なんですが、
worksheet_changeは
セルの値を削除した際には対応していないのでしょうか。
うまくいかない・・。
今戻って書き直したら正常に動作しました。
ありがとうございます。
別件の質問なんですが、
worksheet_changeは
セルの値を削除した際には対応していないのでしょうか。
うまくいかない・・。
880デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/20(日) 22:23:57.13ID:4PP/aROC0881デフォルトの名無しさん (ワッチョイ 5b6d-bEg4)
2017/08/20(日) 22:27:23.10ID:hXI6dDhp0 >>879
削除ってDELETEキーの事?
それとも行削除?
どっちにしても取得できたけど
Private Sub Worksheet_Change(ByVal Target As Range)
Debug.Print Target.Row
End Sub
削除ってDELETEキーの事?
それとも行削除?
どっちにしても取得できたけど
Private Sub Worksheet_Change(ByVal Target As Range)
Debug.Print Target.Row
End Sub
882デフォルトの名無しさん (ワッチョイ ab4b-ClLO)
2017/08/20(日) 22:32:57.93ID:ikiDo2Le0 >>846
余った金で買ってるですら時間かけれなくて基本放置メインの優待株なのにちまちま転売なんて時間ないですよ
休みは家族サービスしなきゃなんないし
暑いなかヨドバシ並んだり労力に合わないこと無理
>>845
いや初心者なんでほんと申し訳ないが相手のサーバーの性能とか構成とかどうやって調べるの?
知りたいしやり方具体的に教えてほしい
自分で貼ったコードは今は理解出来てるけど
初心者からすると3日前ならポカーン
正直debug→sellsなんて簡単な事すらわからないレベルが初心者ですw
>>852
ありがとうございます
変数の置き換え等がまさに知りたかった事です
改変出来るサイトが見つけられず完全にお手上げでした
お酒入ってるんで明日試してみます
質問ですが456行目の...はなにか入るかのでしょうか?それともこのままでしょうか?
tb3のみの取得の場合でもこれでいけるのでしょうか?
余った金で買ってるですら時間かけれなくて基本放置メインの優待株なのにちまちま転売なんて時間ないですよ
休みは家族サービスしなきゃなんないし
暑いなかヨドバシ並んだり労力に合わないこと無理
>>845
いや初心者なんでほんと申し訳ないが相手のサーバーの性能とか構成とかどうやって調べるの?
知りたいしやり方具体的に教えてほしい
自分で貼ったコードは今は理解出来てるけど
初心者からすると3日前ならポカーン
正直debug→sellsなんて簡単な事すらわからないレベルが初心者ですw
>>852
ありがとうございます
変数の置き換え等がまさに知りたかった事です
改変出来るサイトが見つけられず完全にお手上げでした
お酒入ってるんで明日試してみます
質問ですが456行目の...はなにか入るかのでしょうか?それともこのままでしょうか?
tb3のみの取得の場合でもこれでいけるのでしょうか?
883デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/21(月) 00:12:17.86ID:yLjCptZM0 >>879
おそらくその削除行為で↓のNothing が成り立って終わっている
>If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then
おそらくその削除行為で↓のNothing が成り立って終わっている
>If Intersect(Target, range(Cells(13, 3),cells(52,3))) Is Nothing Then
884デフォルトの名無しさん (アウアウカー Sa1d-Enn5)
2017/08/21(月) 02:11:48.51ID:7jIbvv4Ra885デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/21(月) 10:14:11.43ID:WASZaGRQ0 >>884
どう解決したか書けよハゲ
どう解決したか書けよハゲ
886デフォルトの名無しさん (オッペケ Sr4d-lC4d)
2017/08/21(月) 12:19:06.20ID:EyA7fO9yr すまぬ。助けてほしい。
シート上にActiveコントロールのボタン配置します。
なぜか、勝手に大きくなったりちいさくなったりして堪らん。
解決策ありますか?
別件でもうひとつ。
シート右クリックメニューにコマンド追加してます。(マクロで追加)
端末によって、改ページシート表示時なら、コマンド表示されるけど、標準表示時は標準されない。
何が原因ですかな。標準表示でだしたいの。
シート上にActiveコントロールのボタン配置します。
なぜか、勝手に大きくなったりちいさくなったりして堪らん。
解決策ありますか?
別件でもうひとつ。
シート右クリックメニューにコマンド追加してます。(マクロで追加)
端末によって、改ページシート表示時なら、コマンド表示されるけど、標準表示時は標準されない。
何が原因ですかな。標準表示でだしたいの。
887デフォルトの名無しさん (アウーイモ MM85-vD8I)
2017/08/21(月) 12:42:03.35ID:a8XpI6K5M >>886
後者に関しては
Cellって名前のCommandBarを取得して変更してると思うけど
改ページと標準で名前はどちらもCellだけど実体は別々のCommandBarだから
改ページの方だけしかメニュー追加できてないんだろう
ついこないだ自分も全く同じ現象にハマった
そのことも加味して作ってるサンプルググれば出てくるよ
出先だから細かいことは書けん
後者に関しては
Cellって名前のCommandBarを取得して変更してると思うけど
改ページと標準で名前はどちらもCellだけど実体は別々のCommandBarだから
改ページの方だけしかメニュー追加できてないんだろう
ついこないだ自分も全く同じ現象にハマった
そのことも加味して作ってるサンプルググれば出てくるよ
出先だから細かいことは書けん
888デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/21(月) 12:44:17.85ID:yLjCptZM0889デフォルトの名無しさん (オッペケ Sr4d-lC4d)
2017/08/21(月) 13:44:10.34ID:EyA7fO9yr >>887
たすかる。あとは、さがしてみるよ!
たすかる。あとは、さがしてみるよ!
890デフォルトの名無しさん (オッペケ Sr4d-lC4d)
2017/08/21(月) 13:46:53.82ID:EyA7fO9yr891デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/21(月) 14:35:20.65ID:yLjCptZM0892デフォルトの名無しさん (オッペケ Sr4d-lC4d)
2017/08/21(月) 14:42:45.59ID:EyA7fO9yr >>891
おう!。たすかります。
おう!。たすかります。
893デフォルトの名無しさん (ワッチョイ 5b6d-DBYK)
2017/08/21(月) 20:36:29.86ID:F/qAyFl80 変数のウォッチ式を見ていると、変数の中身が勝手に変わるという現象に遭遇しました
以下のコードのどこかに問題があると思います。問題を絞り込み切れませんでした
直前にIEで「メモリを使い切りました」というエラーが出た場合に起こる頻度が高い気がしています
(このマクロは、IEから落とした巨大なデータに対して処理をかけるものです)
PCをしばらく動かしてからマクロを走らせると、何度やっても
特売コード名 = ""
のところで勝手に変数が書き換わります
再起動直後には変わる事はありません
IEのエラーに原因があるのでしょうか?
また、他に見るべきところなどはあるのでしょうか
マクロの内容は
・マクロファイル自体はマクロだけです
・データファイルをopenし、フィルターを掛けて新ブックにコピー、保存
これを繰り返しています
コードは以下です
Set 特売コードリスト = ThisWorkbook.Worksheets("list")
リスト最終行 = 特売コードリスト.Cells(Rows.Count, 1).End(xlUp).Row 'この時点で変数「リスト最終行」にはdoubleの140が格納されている
'特売コードのタイトル設定
For i = ヘッダ列数 + 1 To 最終列 Step 7
特売コード = RIファイル.Sheets(1).Cells(ヘッダ行数 - 1, i).Value * 1 '特売コードはlongの13桁です(JANコードです)
特売コード名 = "" '何故かここで変数変数「リスト最終行」が「特売コード」の値になります。13桁なのでものすごい量の処理になってしまいます
'以降、他の処理
Next
以下のコードのどこかに問題があると思います。問題を絞り込み切れませんでした
直前にIEで「メモリを使い切りました」というエラーが出た場合に起こる頻度が高い気がしています
(このマクロは、IEから落とした巨大なデータに対して処理をかけるものです)
PCをしばらく動かしてからマクロを走らせると、何度やっても
特売コード名 = ""
のところで勝手に変数が書き換わります
再起動直後には変わる事はありません
IEのエラーに原因があるのでしょうか?
また、他に見るべきところなどはあるのでしょうか
マクロの内容は
・マクロファイル自体はマクロだけです
・データファイルをopenし、フィルターを掛けて新ブックにコピー、保存
これを繰り返しています
コードは以下です
Set 特売コードリスト = ThisWorkbook.Worksheets("list")
リスト最終行 = 特売コードリスト.Cells(Rows.Count, 1).End(xlUp).Row 'この時点で変数「リスト最終行」にはdoubleの140が格納されている
'特売コードのタイトル設定
For i = ヘッダ列数 + 1 To 最終列 Step 7
特売コード = RIファイル.Sheets(1).Cells(ヘッダ行数 - 1, i).Value * 1 '特売コードはlongの13桁です(JANコードです)
特売コード名 = "" '何故かここで変数変数「リスト最終行」が「特売コード」の値になります。13桁なのでものすごい量の処理になってしまいます
'以降、他の処理
Next
894デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/21(月) 20:44:14.03ID:WASZaGRQ0895デフォルトの名無しさん (ワッチョイ 5b6d-DBYK)
2017/08/21(月) 20:48:40.29ID:F/qAyFl80 >>894
宣言は型も指定して、最初にまとめてしてます。
しかし宣言を削除しても変わりませんでした
代入は、していません。
ステップインで以下の行を実行すると、「リスト最終行」という全く関係ない変数の値が変わっています
可変変数かと思いましたが、一体何なんでしょうか
特売コード名 = "" '何故かここで変数「リスト最終行」が「特売コード」の値になります。13桁なのでものすごい量の処理になってしまいます
また、コードの最初に以下の高速化を入れていますが、関係あるでしょうか(もちろん最期に解除しています)
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
宣言は型も指定して、最初にまとめてしてます。
しかし宣言を削除しても変わりませんでした
代入は、していません。
ステップインで以下の行を実行すると、「リスト最終行」という全く関係ない変数の値が変わっています
可変変数かと思いましたが、一体何なんでしょうか
特売コード名 = "" '何故かここで変数「リスト最終行」が「特売コード」の値になります。13桁なのでものすごい量の処理になってしまいます
また、コードの最初に以下の高速化を入れていますが、関係あるでしょうか(もちろん最期に解除しています)
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
896デフォルトの名無しさん (ワッチョイ c191-wXqg)
2017/08/21(月) 21:01:33.61ID:UpqFzRYS0897デフォルトの名無しさん (ワッチョイ 5b6d-DBYK)
2017/08/21(月) 21:04:30.96ID:F/qAyFl80898デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/21(月) 21:21:28.12ID:WASZaGRQ0899デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/21(月) 21:23:33.08ID:WASZaGRQ0 個人的には最終列の取得方法が怪しいと見ているが
900デフォルトの名無しさん (ワッチョイ 5b6d-SlN8)
2017/08/21(月) 21:41:38.22ID:F/qAyFl80 >>898
参照みたいというのは、私も感じました
しかし本当にこの行だったのです
特売コード名 = "" '何故かここで変数「リスト最終行」が「特売コード」の値になります
何度やっても結果が参照だか可変変数だかコード内の改行「 _」にしか見えなかったのですが、絶対に違うのです
メモリが書き換えられているのか、ポインタがぶっ飛んでいるのが、そこまで調査する能力はありません
同僚に「顔青白いけど大丈夫か!?」と言われました。
明日もう一度試してみます
参照みたいというのは、私も感じました
しかし本当にこの行だったのです
特売コード名 = "" '何故かここで変数「リスト最終行」が「特売コード」の値になります
何度やっても結果が参照だか可変変数だかコード内の改行「 _」にしか見えなかったのですが、絶対に違うのです
メモリが書き換えられているのか、ポインタがぶっ飛んでいるのが、そこまで調査する能力はありません
同僚に「顔青白いけど大丈夫か!?」と言われました。
明日もう一度試してみます
901デフォルトの名無しさん (ワッチョイ 5b6d-SlN8)
2017/08/21(月) 21:43:58.48ID:F/qAyFl80902デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/21(月) 22:46:20.73ID:WASZaGRQ0903デフォルトの名無しさん (ワッチョイ 5b6d-bEg4)
2017/08/21(月) 22:55:53.80ID:F/qAyFl80 >>902
プロンプトでデータファイルを指定し、開いた直後に最終行列を取得しています
もちろんこの際にキャンセルなどの処理は行っておらず、普通に選択しています
若干うろ覚えですが、以下のはずです
'dataファイルを指定
Set data = Workbooks.Open(Application.GetOpenFilename("Microsoft Excelブック,*.xls?"))
'最終行列
最終行 = data.sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
最終列 = data.sheets(1).Cells(ヘッダ行数, Columns.Count).End(xlToLeft).Column
プロンプトでデータファイルを指定し、開いた直後に最終行列を取得しています
もちろんこの際にキャンセルなどの処理は行っておらず、普通に選択しています
若干うろ覚えですが、以下のはずです
'dataファイルを指定
Set data = Workbooks.Open(Application.GetOpenFilename("Microsoft Excelブック,*.xls?"))
'最終行列
最終行 = data.sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
最終列 = data.sheets(1).Cells(ヘッダ行数, Columns.Count).End(xlToLeft).Column
904デフォルトの名無しさん (ワッチョイ 2ba2-jLVh)
2017/08/21(月) 23:16:57.21ID:AMZKW1PT0 わざと宣言をIntegerに変えてエラーが出ないかどうか
905デフォルトの名無しさん (ワッチョイ 2ba2-jLVh)
2017/08/21(月) 23:24:15.17ID:AMZKW1PT0 宣言を削除しても、ってことは Option Explicit はなし?
Dim 最終行, 最終列 As Long
のように最後だけに As ○○ ってしてないか?
Dim 最終行, 最終列 As Long
のように最後だけに As ○○ ってしてないか?
906デフォルトの名無しさん (ワッチョイ 5b6d-13hs)
2017/08/21(月) 23:38:13.41ID:F/qAyFl80 >>905
>宣言を削除しても、ってことは Option Explicit はなし?
そのあたり纏めてです
>Dim 最終行, 最終列 As Long
それもないです、というか宣言あてもなくても変わりません
>宣言を削除しても、ってことは Option Explicit はなし?
そのあたり纏めてです
>Dim 最終行, 最終列 As Long
それもないです、というか宣言あてもなくても変わりません
907デフォルトの名無しさん (ワッチョイ 016f-oL0b)
2017/08/22(火) 02:30:22.28ID:UcqKMUBs0 日本語の変数名ってどうなのかな
仮に全角の空白がコード中にあると見つけるのは厄介なんだよね
仮に全角の空白がコード中にあると見つけるのは厄介なんだよね
908デフォルトの名無しさん (ワッチョイ c191-wXqg)
2017/08/22(火) 07:30:25.87ID:IrcFtIiG0909デフォルトの名無しさん (ワッチョイ 7973-DQO+)
2017/08/22(火) 08:46:12.95ID:efKhXBAh0 変数名が日本語なのがバグの原因、に100ペリカ
910デフォルトの名無しさん (スップ Sdb3-6IIt)
2017/08/22(火) 11:48:53.83ID:EWbmYfD4d たまにしか日本語使わないがそんなことでトラブったことはないな
911デフォルトの名無しさん (ワントンキン MMd3-yDuE)
2017/08/22(火) 13:57:55.46ID:bO04JkUdM ie制御系の本てあんまりないよね。ネットでちまちま調べながらやってるけどエラーがおこってその原因を調べるのも一苦労。数百回のループの中で99%成功一度だけエラーとか読み込み関係だと思うんだけど、こうすれば絶対防げるとかあるんかね。
912デフォルトの名無しさん (JP 0Heb-oL0b)
2017/08/22(火) 14:17:54.96ID:BcNwm5wtH913デフォルトの名無しさん (アウアウエー Sa23-Ovym)
2017/08/22(火) 14:32:57.14ID:3oFcm+Eea 変数が日本語で不具合でたことはないな
怪しいのは、変数の方をちゃんと指定してないんじゃないかなってとこ
最初の方でdoubleが入ってるって言ってたよね
〜.Columnの参照持ってきちゃってるとかね
longで型指定してみたら
怪しいのは、変数の方をちゃんと指定してないんじゃないかなってとこ
最初の方でdoubleが入ってるって言ってたよね
〜.Columnの参照持ってきちゃってるとかね
longで型指定してみたら
914デフォルトの名無しさん (ワントンキン MMd3-yDuE)
2017/08/22(火) 14:52:26.20ID:bO04JkUdM >>912
エクセルから値をコピー→会社のシステム(ie)のテキストボックスにペースト→サーチボタン押す→チェックボックス押す→リストボックスから選ぶ→決定ボタン押す
てのを毎日数百件。
こんなのはスクリプトでも手作業でもなく、エクセルアップロードして終わりとかにして欲しいんだけど。
エクセルから値をコピー→会社のシステム(ie)のテキストボックスにペースト→サーチボタン押す→チェックボックス押す→リストボックスから選ぶ→決定ボタン押す
てのを毎日数百件。
こんなのはスクリプトでも手作業でもなく、エクセルアップロードして終わりとかにして欲しいんだけど。
915デフォルトの名無しさん (ワッチョイ 993d-JJVS)
2017/08/22(火) 15:03:25.63ID:X7Tz7Bl60 >>914
ブラウザ側で、jsとか使ってcsv読み込めるようにした方が早そう
ブラウザ側で、jsとか使ってcsv読み込めるようにした方が早そう
916デフォルトの名無しさん (JP 0Heb-oL0b)
2017/08/22(火) 15:31:32.03ID:BcNwm5wtH917デフォルトの名無しさん (ワッチョイ 5b6d-jLVh)
2017/08/22(火) 19:14:59.94ID:mRcKPRVe0 ブラウザのコンソール使えばサイト変更せずに何でもできるよな
あれすげー好き
あれすげー好き
918デフォルトの名無しさん (アウアウウー Sa85-c2A1)
2017/08/22(火) 19:32:43.17ID:j7l9pWc0a919デフォルトの名無しさん (アウアウウー Sa85-c2A1)
2017/08/22(火) 19:53:03.47ID:j7l9pWc0a >>836
とりあえず、>>745と合わせてプログラムを類推して、ツッコミどころを順々に修正しながら8つのパターンで組んでみた。
たぶん、5つ目のサンプルでB2からB101まで取得データを書き込めると思う。
ただし、実際にはTHタグが何個あるかわからないのでIE上でF12キーを押して問題のテーブルを表示させてTHが何個あるかを確認して修正すること。
現在のプログラムはTHが3個、TDの2番目からデータを取得する前提で組んでいる。
(0始まりでTHは0、1、2なのでTDの2番目は全体で4番目)
https://pastebin.com/3sBqwsN9
とりあえず、>>745と合わせてプログラムを類推して、ツッコミどころを順々に修正しながら8つのパターンで組んでみた。
たぶん、5つ目のサンプルでB2からB101まで取得データを書き込めると思う。
ただし、実際にはTHタグが何個あるかわからないのでIE上でF12キーを押して問題のテーブルを表示させてTHが何個あるかを確認して修正すること。
現在のプログラムはTHが3個、TDの2番目からデータを取得する前提で組んでいる。
(0始まりでTHは0、1、2なのでTDの2番目は全体で4番目)
https://pastebin.com/3sBqwsN9
920デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/22(火) 19:59:15.08ID:Gbnbr+eX0921デフォルトの名無しさん (アウアウウー Sa85-c2A1)
2017/08/22(火) 20:14:43.78ID:j7l9pWc0a >>893
コード示してあるけど、変数宣言部分が無く、また変数名から変数の型も類推できない。
これでは変数がどうなっているのかわからない。
変数に日本語使うのは自分ならしないけど、それよりも変数名から型が分からないのはほかの人も困らないか?
特売コード名=""のところと書いてあるが、デバッグ時に黄色になっているのはその次の行?
この行が黄色になっているならその前の行の実行でリスト最終行が変化したことになる。
下に変更してDebug.Print Typename(特売コード名)のところにプレークポイント置いて実行してみるとか。
For i = ヘッダ列数 + 1 To 最終列 Step 7
特売コード = RIファイル.Sheets(1).Cells(ヘッダ行数 - 1, i).Value * 1 '特売コードはlongの13桁です(JANコードです)
特売コード=123
Debug.Print リスト最終行
特売コード名="ABC"
Debug.Print リスト最終行
Debug.Print Typename(リスト最終行)
Debug.Print Typename(特売コード)
Debug.Print Typename(特売コード名)
特売コード名 = "" '何故かここで変数変数「リスト最終行」が「特売コード」の値になります。13桁なのでものすごい量の処理になってしまいます
'以降、他の処理
Next
コード示してあるけど、変数宣言部分が無く、また変数名から変数の型も類推できない。
これでは変数がどうなっているのかわからない。
変数に日本語使うのは自分ならしないけど、それよりも変数名から型が分からないのはほかの人も困らないか?
特売コード名=""のところと書いてあるが、デバッグ時に黄色になっているのはその次の行?
この行が黄色になっているならその前の行の実行でリスト最終行が変化したことになる。
下に変更してDebug.Print Typename(特売コード名)のところにプレークポイント置いて実行してみるとか。
For i = ヘッダ列数 + 1 To 最終列 Step 7
特売コード = RIファイル.Sheets(1).Cells(ヘッダ行数 - 1, i).Value * 1 '特売コードはlongの13桁です(JANコードです)
特売コード=123
Debug.Print リスト最終行
特売コード名="ABC"
Debug.Print リスト最終行
Debug.Print Typename(リスト最終行)
Debug.Print Typename(特売コード)
Debug.Print Typename(特売コード名)
特売コード名 = "" '何故かここで変数変数「リスト最終行」が「特売コード」の値になります。13桁なのでものすごい量の処理になってしまいます
'以降、他の処理
Next
922デフォルトの名無しさん (ワッチョイ 130f-yDuE)
2017/08/22(火) 20:24:31.59ID:fju/pSre0923デフォルトの名無しさん (ワッチョイ 130f-yDuE)
2017/08/22(火) 20:35:39.11ID:fju/pSre0924デフォルトの名無しさん (ワッチョイ 1311-slju)
2017/08/22(火) 20:57:35.78ID:1JK3C2LQ0 ExcelからIEを操作せずにバッチスクリプトでcURLやWgetみたいなHTTPクライアントを使ったらいいと思うけど
外部ネットワークにアクセスできなくて追加インストールもできないとなるといろいろ詰んでるね
Powershellが使えるならそれほど苦労せずスクリプト化できるよ
https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Invoke-WebRequest
外部ネットワークにアクセスできなくて追加インストールもできないとなるといろいろ詰んでるね
Powershellが使えるならそれほど苦労せずスクリプト化できるよ
https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Invoke-WebRequest
925デフォルトの名無しさん (ワッチョイ 9352-jLVh)
2017/08/22(火) 20:59:25.09ID:yhGjK5+g0 >>923
なるほど。
うちの職場も無駄な作業が多いけどみんな疑問をいだかないことに対してなんてアホの集団なんだろうと思ってたけど
「プログラミング的な知識が無いとやり方に疑問を持てない」のが原因だったか。
これで疑問が氷解した。
あと1つこの職場で学んだことだが
せっかく自分が自動化するVBAのツールをつくって何人かにそのツールをあげても「使ってくれない」。
これは便利なのが嫌い」なのではなくて「自分が作ったツールじゃないからなにをしているかがさっぱりわからないから怖くて使えない」からだということだ。
なるほど。
うちの職場も無駄な作業が多いけどみんな疑問をいだかないことに対してなんてアホの集団なんだろうと思ってたけど
「プログラミング的な知識が無いとやり方に疑問を持てない」のが原因だったか。
これで疑問が氷解した。
あと1つこの職場で学んだことだが
せっかく自分が自動化するVBAのツールをつくって何人かにそのツールをあげても「使ってくれない」。
これは便利なのが嫌い」なのではなくて「自分が作ったツールじゃないからなにをしているかがさっぱりわからないから怖くて使えない」からだということだ。
926デフォルトの名無しさん (ワッチョイ 9352-jLVh)
2017/08/22(火) 21:01:25.05ID:yhGjK5+g0 だから完全なるアホの集団ではないのかもしれないが、やっぱりアホの集団にはかわらない。
そんな周りの人たちの心理がわかる自分は天才だということだ。
そんな周りの人たちの心理がわかる自分は天才だということだ。
927デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/22(火) 21:39:28.52ID:RSpbi9dUa >>922
クリップボードとかSendkeysとか使って無いだろうな?
特にSendkeysは危険。
絶対使うべきじゃない。
分かって使うなら良いけど。
あと、Domを使ってるならクリック時にsubmitでなくClick使ってる場合は注意。
submitは送受信前提だから直後はIEがBusyになるけど、Clickは送受信前提じゃないから(と俺は思ってるけど別の理由かも)いっぱく置いてBusyになることがある。
つまり、Busyチェック時にはかからず、チェック抜けてからBusyになることがある。
俺の場合はClickの時だけチェック前に300msくらいSleepしておく。
クリップボードとかSendkeysとか使って無いだろうな?
特にSendkeysは危険。
絶対使うべきじゃない。
分かって使うなら良いけど。
あと、Domを使ってるならクリック時にsubmitでなくClick使ってる場合は注意。
submitは送受信前提だから直後はIEがBusyになるけど、Clickは送受信前提じゃないから(と俺は思ってるけど別の理由かも)いっぱく置いてBusyになることがある。
つまり、Busyチェック時にはかからず、チェック抜けてからBusyになることがある。
俺の場合はClickの時だけチェック前に300msくらいSleepしておく。
928デフォルトの名無しさん (ワッチョイ b111-Ovym)
2017/08/22(火) 22:07:32.73ID:Gbnbr+eX0929デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/22(火) 22:56:13.57ID:3iMCLjz4a >>928
そのページの作りによる部分は有るからね。
submitでさえSleep入れる必要があるかもしれない。
遷移した後で少し待ってからさらに遷移する場合とかもあるし、どうしてもそのページに合わせる部分は有るでしょう。
そのページの作りによる部分は有るからね。
submitでさえSleep入れる必要があるかもしれない。
遷移した後で少し待ってからさらに遷移する場合とかもあるし、どうしてもそのページに合わせる部分は有るでしょう。
930デフォルトの名無しさん (ワッチョイ ab4b-bEti)
2017/08/22(火) 22:57:24.09ID:vl5o4wqs0 >>919
凄く作り方の参考になるし完璧な説明です
ありがとうございます。
<TABLE>
<TR>
<TH>Title1</TH>
<TD>DATA1</TD>
</TR>
<TR>
<TH>Title2</TH>
<TD>DATA2</TD> 取得すべき最初のデータ
</TR>
<TR>
<TH>Title3</TH>
<TD>DATA3</TD> 取得すべき2番目のデータ
</TR>
.
.
.
<TR>
<TH>Title9</TH>
<TD>DATA9</TD>
</TR>
</TABLE>
-------------------------------------------
この構造の場合、下記はどのようになるのでしょうか?
TABLE群 -> colTable(0)
TR群 -> colTable(0).childNodes
TH群 -> colTable(0).childNodes.Item(0).childNodes(0番目〜2番目)
TD群 -> colTable(0).childNodes.Item(0).childNodes(3番目〜11番目)
凄く作り方の参考になるし完璧な説明です
ありがとうございます。
<TABLE>
<TR>
<TH>Title1</TH>
<TD>DATA1</TD>
</TR>
<TR>
<TH>Title2</TH>
<TD>DATA2</TD> 取得すべき最初のデータ
</TR>
<TR>
<TH>Title3</TH>
<TD>DATA3</TD> 取得すべき2番目のデータ
</TR>
.
.
.
<TR>
<TH>Title9</TH>
<TD>DATA9</TD>
</TR>
</TABLE>
-------------------------------------------
この構造の場合、下記はどのようになるのでしょうか?
TABLE群 -> colTable(0)
TR群 -> colTable(0).childNodes
TH群 -> colTable(0).childNodes.Item(0).childNodes(0番目〜2番目)
TD群 -> colTable(0).childNodes.Item(0).childNodes(3番目〜11番目)
931デフォルトの名無しさん (アウアウカー Sa1d-R5c0)
2017/08/23(水) 00:05:41.99ID:FdVTMyW1a >>930
その場合は複数のTRがTABLEから見て子どもでしょ。
だからTRは最初のchildNodes.Item()の括弧の中が2番目からカウントアップ。
で、TDはそれぞれのTR内で常に2番目なのでchildNodes.Item(カウントアップ).childNodes.Item()の括弧の中は2番目。
各番目は0始まりだから2番目ってことは1ってことね。
この場合はcolTRも使わない。(Set colTR =で始まる文がいらない。)
Cells(i, 2).Value = colTable(0).childNodes.Item(1).childNodes.Item(1).innerText
Cells(i, 3).Value = colTable(0).childNodes.Item(2).childNodes.Item(1).InnerText
Cells(i, 4).Value = colTable(0).childNodes.Item(3).childNodes.Item(1).innerText
多分、こんな感じ。
その場合は複数のTRがTABLEから見て子どもでしょ。
だからTRは最初のchildNodes.Item()の括弧の中が2番目からカウントアップ。
で、TDはそれぞれのTR内で常に2番目なのでchildNodes.Item(カウントアップ).childNodes.Item()の括弧の中は2番目。
各番目は0始まりだから2番目ってことは1ってことね。
この場合はcolTRも使わない。(Set colTR =で始まる文がいらない。)
Cells(i, 2).Value = colTable(0).childNodes.Item(1).childNodes.Item(1).innerText
Cells(i, 3).Value = colTable(0).childNodes.Item(2).childNodes.Item(1).InnerText
Cells(i, 4).Value = colTable(0).childNodes.Item(3).childNodes.Item(1).innerText
多分、こんな感じ。
932デフォルトの名無しさん (アウアウウー Sa85-mYeN)
2017/08/23(水) 08:10:00.16ID:EgpJbwY2a 全くの素人です
質問させてください
A1=1の場合タブの色を赤
A1=2の場合タブの色を青
としたくて
A1にはsum関数で数式を組んでるんだが1や2になっても反映されない
手入力で数値を入れるかセルをダブルクリックしてエンターを押すと反映される
何故でしょうか。
質問させてください
A1=1の場合タブの色を赤
A1=2の場合タブの色を青
としたくて
A1にはsum関数で数式を組んでるんだが1や2になっても反映されない
手入力で数値を入れるかセルをダブルクリックしてエンターを押すと反映される
何故でしょうか。
933デフォルトの名無しさん (ワッチョイ 5b6d-jLVh)
2017/08/23(水) 08:11:08.70ID:OKqU/Ui90 >>932
実際に何をやったの?
実際に何をやったの?
934デフォルトの名無しさん (アウアウエー Sa23-Ovym)
2017/08/23(水) 08:15:41.26ID:RC4smTF3a935デフォルトの名無しさん (アウアウウー Sa85-mYeN)
2017/08/23(水) 08:18:48.53ID:EgpJbwY2a コードは
private sub worksheet_change(ByVal
target as range)
If target.address〈〉"A1" then exit sub
If Target = "1" then Activesheet.Tab.ColorIndex = 9
If Target = "2" then Activesheet.Tab.ColorIndex = 3
End Sub
初心者ですのでここはこうした方がいいなどアドバイスいただけると幸いです
private sub worksheet_change(ByVal
target as range)
If target.address〈〉"A1" then exit sub
If Target = "1" then Activesheet.Tab.ColorIndex = 9
If Target = "2" then Activesheet.Tab.ColorIndex = 3
End Sub
初心者ですのでここはこうした方がいいなどアドバイスいただけると幸いです
936デフォルトの名無しさん (ワッチョイ 5b6d-9Vea)
2017/08/23(水) 08:29:58.52ID:OKqU/Ui90 >>935
エラーになる
エラーになる
937デフォルトの名無しさん (アウアウウー Sa85-mYeN)
2017/08/23(水) 08:33:36.33ID:EgpJbwY2a >>934
シートのタブ色変更なんですが条件付き書式でできますか?
シートのタブ色変更なんですが条件付き書式でできますか?
938デフォルトの名無しさん (ワッチョイ 5b6d-9Vea)
2017/08/23(水) 08:36:18.74ID:OKqU/Ui90939デフォルトの名無しさん (ワッチョイ 7973-DQO+)
2017/08/23(水) 08:47:09.36ID:13NrMZgc0 >>925
それはお前が信用されてないからでわw
それはお前が信用されてないからでわw
940デフォルトの名無しさん (ワッチョイ 7973-DQO+)
2017/08/23(水) 08:49:04.48ID:13NrMZgc0 >>937
条件付き「書式」なんだから、そういう事をするための物だよ
条件付き「書式」なんだから、そういう事をするための物だよ
941デフォルトの名無しさん (ワッチョイ e1f2-bPth)
2017/08/23(水) 09:21:19.41ID:+0TvjQ0a0 >>935
"1"と"2"の両脇の"外したら動かないか?
"1"と"2"の両脇の"外したら動かないか?
942デフォルトの名無しさん (アウアウカー Sa1d-Xpxm)
2017/08/23(水) 10:06:33.42ID:zci6CT9Ca >>935
色が変わったあとに1,2以外が入っても戻らない
色が変わったあとに1,2以外が入っても戻らない
943デフォルトの名無しさん (アウアウウー Sa85-mYeN)
2017/08/23(水) 10:15:50.03ID:EgpJbwY2a >>940
ご教示下さい
ご教示下さい
944デフォルトの名無しさん (アウアウウー Sa85-mYeN)
2017/08/23(水) 10:23:11.79ID:EgpJbwY2a >>941
動きませんでした
動きませんでした
945デフォルトの名無しさん (アウアウウー Sa85-mYeN)
2017/08/23(水) 10:24:44.20ID:EgpJbwY2a >>942
A1の数字は一定期間ごとに変化するんですがそれには対応できないということになりますか?
A1の数字は一定期間ごとに変化するんですがそれには対応できないということになりますか?
946デフォルトの名無しさん (アウアウエー Sa23-Ovym)
2017/08/23(水) 10:47:29.53ID:N2QxNW8Oa >>937
ごめんタブか
ごめんタブか
947デフォルトの名無しさん (ワッチョイ 5991-7WL/)
2017/08/23(水) 11:13:45.38ID:yxvWLKA00 >>935
そもそも
Target.addressって絶対参照が返ってくるんじゃなかったっけ?
でもそれなら手入力でも反映されない気がするなぁ
あと、たとえばB1のセルを変更してA1の計算結果が変わったとしても
A1の数式を変更したわけじゃないから
targetにはB1が渡されるだけじゃない?
全部予想ですまん
そもそも
Target.addressって絶対参照が返ってくるんじゃなかったっけ?
でもそれなら手入力でも反映されない気がするなぁ
あと、たとえばB1のセルを変更してA1の計算結果が変わったとしても
A1の数式を変更したわけじゃないから
targetにはB1が渡されるだけじゃない?
全部予想ですまん
948デフォルトの名無しさん (ワッチョイ 93b6-jLVh)
2017/08/23(水) 12:01:09.88ID:QSg8qhxn0 >>935
Worksheet.Change イベント (Excel)
https://msdn.microsoft.com/ja-jp/library/office/ff839775.aspx
>セルが再計算時に変更されると、このイベントは発生しません。シートの再計算をトラップするには、Calculate イベントを使用します。
Worksheet.Change イベント (Excel)
https://msdn.microsoft.com/ja-jp/library/office/ff839775.aspx
>セルが再計算時に変更されると、このイベントは発生しません。シートの再計算をトラップするには、Calculate イベントを使用します。
949デフォルトの名無しさん (アウアウウー Sa85-mYeN)
2017/08/23(水) 13:56:51.41ID:EgpJbwY2a950デフォルトの名無しさん (ドコグロ MMb3-x4Vn)
2017/08/23(水) 18:51:26.23ID:Rd2CDMDCM A1セルの数式を変えていいならユーザー定義関数でできる
例えばA1に=Sum(B1:B2)と定義してるなら標準モジュールに
Function XXX(R As Range) As Double
Dim Result As Double
Result = Application.WorksheetFunction.Sum(R)
Select Case R
Case 1: ActiveSheet.Tab.ColorIndex = 9
Case 2: ActiveSheet.Tab.ColorIndex = 3
End Select
XXX = R
End Function
を定義してA1セルを=XXX(B1:B2)に書き換えればいい
例えばA1に=Sum(B1:B2)と定義してるなら標準モジュールに
Function XXX(R As Range) As Double
Dim Result As Double
Result = Application.WorksheetFunction.Sum(R)
Select Case R
Case 1: ActiveSheet.Tab.ColorIndex = 9
Case 2: ActiveSheet.Tab.ColorIndex = 3
End Select
XXX = R
End Function
を定義してA1セルを=XXX(B1:B2)に書き換えればいい
951950 (ドコグロ MMb3-x4Vn)
2017/08/23(水) 18:54:14.54ID:Rd2CDMDCM すまんちょっと間違えてたわ
Function XXX(R As Range) As Double
Dim Result As Double
Result = Application.WorksheetFunction.Sum(R)
Select Case Result
Case 1: ActiveSheet.Tab.ColorIndex = 9
Case 2: ActiveSheet.Tab.ColorIndex = 3
End Select
XXX = Result
End Function
Function XXX(R As Range) As Double
Dim Result As Double
Result = Application.WorksheetFunction.Sum(R)
Select Case Result
Case 1: ActiveSheet.Tab.ColorIndex = 9
Case 2: ActiveSheet.Tab.ColorIndex = 3
End Select
XXX = Result
End Function
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 高市首相、トランプ米大統領に「早期に会いたい」 日中関係悪化受け… ★3 [BFU★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★5 [Hitzeschleier★]
- 「これいいじゃん!!!」 セブン-イレブンの1620円で買える“1人用クリスマスケーキ”🎂に注目殺到「天才すぎる」 [パンナ・コッタ★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★4 [Hitzeschleier★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 [Hitzeschleier★]
- なんかさっきからフェイロンのステージ曲が頭から離れないんだが
- 【実況】博衣こよりのえちえちスーパーダンガンロンパ3🧪
- 【安倍晋三】中国船4隻が領海侵入 [828897501]
- えちえち女だけど
- 【画像】小泉防衛大臣、とんでもない写真が発掘される [834922174]
- お
