Excel VBA 質問スレ Part51
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん (スププ Sd4a-O827)
2017/11/08(水) 11:26:30.13ID:+KUB1/9hdスレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※関連スレ
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/
※前スレ
Excel VBA 質問スレ Part50
http://mevius.2ch.net/test/read.cgi/tech/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
812デフォルトの名無しさん (ワッチョイ c620-cnjM)
2018/01/01(月) 14:25:45.74ID:7yffOGmB0 知らないことを素直に知らないと言いなさい
2018/01/01(月) 14:27:07.60ID:tZ/lpIQo0
今年はいい年になるかなw
814デフォルトの名無しさん (ワッチョイ cae7-n93d)
2018/01/01(月) 14:29:26.10ID:UomJiKNZ0815デフォルトの名無しさん (アークセー Sx03-8opW)
2018/01/01(月) 14:54:13.21ID:ixsE+qrMx またメゾット君が暴れてるな
あの馬鹿が出入りするようになってから荒れすぎ
あの馬鹿が出入りするようになってから荒れすぎ
816デフォルトの名無しさん (アウアウイー Sa43-UI1C)
2018/01/01(月) 15:45:18.49ID:bzNinO0Ma >>814
よく考えろよ
よく考えろよ
817デフォルトの名無しさん (ワッチョイ cae7-nqWF)
2018/01/01(月) 16:11:19.12ID:PLRWaMeF0 >>816
おっと、 Workbook_AddinInstallを Workbook_AddinUninstallと書き間違えた
おっと、 Workbook_AddinInstallを Workbook_AddinUninstallと書き間違えた
818デフォルトの名無しさん (アウアウイー Sa43-UI1C)
2018/01/02(火) 09:36:26.90ID:nA397GZea819デフォルトの名無しさん (スップ Sd8a-nqWF)
2018/01/02(火) 12:29:02.41ID:MKa2S+Tjd820デフォルトの名無しさん (ワッチョイ c69f-v6Xa)
2018/01/03(水) 10:57:08.56ID:rhTFyGx/0821デフォルトの名無しさん (ワッチョイ b3b3-UI1C)
2018/01/03(水) 11:46:24.84ID:ZpYRfYyG0 アドインにするにしてもなんにしても運用がしっかりされてないと意味がない
ファイル名やシート名程度が保証されてないならマクロ化なんて諦めろ
ファイル名やシート名程度が保証されてないならマクロ化なんて諦めろ
822デフォルトの名無しさん (ワッチョイ 1b65-BE4F)
2018/01/03(水) 11:59:35.70ID:Uz65NhYa0 >>820
設定値を保存するのはやめたほうが良いと思うな。
バージョンアップしたときに設定値がリセットされてしまうとか、エクセルバグの巻き添えでブック破損の危険性がある。
できるだけアドインは読み取り専用で運用するべきだと思う。
過去に内部シートに保存するように作って問題が起きたので、バージョンアップ時にxmlにコンバートさせた事があるわ
設定値を保存するのはやめたほうが良いと思うな。
バージョンアップしたときに設定値がリセットされてしまうとか、エクセルバグの巻き添えでブック破損の危険性がある。
できるだけアドインは読み取り専用で運用するべきだと思う。
過去に内部シートに保存するように作って問題が起きたので、バージョンアップ時にxmlにコンバートさせた事があるわ
823デフォルトの名無しさん (ワッチョイ cab3-tILW)
2018/01/03(水) 12:49:50.09ID:lLEkaf6s0 お前のバグを根拠にされてもなぁ
824デフォルトの名無しさん (アウアウイー Sa43-UI1C)
2018/01/03(水) 14:45:49.49ID:hfgsKA7ma まあ、設定は外出しにするのが普通に安全策じゃね?
xlamのシートは明らかに利用してほしくないっていう思いが伝わる作りな訳だから
xlamのシートは明らかに利用してほしくないっていう思いが伝わる作りな訳だから
825デフォルトの名無しさん (スップ Sd8a-nqWF)
2018/01/03(水) 15:32:51.77ID:00k1dN96d 利用者が不用意にセルデータをクリアしてそのままセーブしても自覚すらしないかも
826デフォルトの名無しさん (ワッチョイ 2bb3-xohC)
2018/01/04(木) 05:46:13.89ID:UuI+tM4Q0 質問よろしくお願いします。
A列,B列,C列,D列
Aa,111,bbb,20
Bb,111,aaa,30
Aa,222,bbb,10
Bb,111,aaa,10
Aa,111,bbb,15
上記の様な表を下記の様にしたいです。
A列,B列,C列,D列
Aa,111,bbb,35
Aa,222,bbb,10
Bb,111,aaa,40
A,B,C列の値が一致したらD列を加算して行を削除するという処理です。データは約1000行程です。
A列,B列,C列,D列
Aa,111,bbb,20
Bb,111,aaa,30
Aa,222,bbb,10
Bb,111,aaa,10
Aa,111,bbb,15
上記の様な表を下記の様にしたいです。
A列,B列,C列,D列
Aa,111,bbb,35
Aa,222,bbb,10
Bb,111,aaa,40
A,B,C列の値が一致したらD列を加算して行を削除するという処理です。データは約1000行程です。
827デフォルトの名無しさん (ワッチョイ 9f1e-j5y8)
2018/01/04(木) 06:37:20.49ID:MFccPkO20 1000行程度ならSUMIFSとかでできるんじゃないの
828デフォルトの名無しさん (ドコグロ MM3f-TPPA)
2018/01/04(木) 06:55:39.59ID:IcyEu6L/M >>826
要件によるけどそういうビューを作ればいいんじゃね?
create view V as (
select A列,B列,C列,sum(D列) as D列
from 表
group by A列,B列,C列
)
要件によるけどそういうビューを作ればいいんじゃね?
create view V as (
select A列,B列,C列,sum(D列) as D列
from 表
group by A列,B列,C列
)
829デフォルトの名無しさん (ドコグロ MM3f-TPPA)
2018/01/04(木) 06:57:20.78ID:IcyEu6L/M すまん、寝ぼけててSQLスレと勘違いしてた...
>>828はなしで
>>828はなしで
830デフォルトの名無しさん (ワッチョイ 9f23-wtpF)
2018/01/04(木) 07:39:39.14ID:IGCyfMcU0831デフォルトの名無しさん (ササクッテロリ Spcf-xohC)
2018/01/04(木) 08:01:11.56ID:5mprgbRzp832デフォルトの名無しさん (ワッチョイ 0ffa-aKZ8)
2018/01/04(木) 10:15:47.38ID:fF+rBx/60 データベース系のデータは素直にデータベースソフトで管理しようよ・・・。
アクセスでやればマウス操作だけで終わる様な問題だよ。
アクセスでやればマウス操作だけで終わる様な問題だよ。
833デフォルトの名無しさん (ワッチョイ 9f2d-Zjw3)
2018/01/04(木) 10:22:48.62ID:d1LyNdol0834デフォルトの名無しさん (アウアウイー Sacf-rQ0k)
2018/01/04(木) 10:31:44.20ID:no6Ylxj0a sqlならselectとorder byだけですむ案件だな
愚直にプログラム組むと厄介だけどね
愚直にプログラム組むと厄介だけどね
835デフォルトの名無しさん (スプッッ Sdbf-5v12)
2018/01/04(木) 10:38:07.48ID:7zx5w2nrd ピボットでいいんじゃね
836デフォルトの名無しさん (スッップ Sdbf-w0Bz)
2018/01/04(木) 11:56:10.93ID:iFN99ve4d LINQって使えないんだっけ?
837デフォルトの名無しさん (ワッチョイ eb2b-F1OP)
2018/01/04(木) 13:22:48.32ID:Gj6t78kg0838デフォルトの名無しさん (ワッチョイ 9fb3-Ogju)
2018/01/04(木) 13:42:37.28ID:hO93+Igl0839デフォルトの名無しさん (アウアウイー Sacf-rQ0k)
2018/01/04(木) 13:47:48.60ID:cJgHrV+ta >>838
だめじゃないし、初心者なら無理やりVBAで組むのも勉強になるよ
重複の無いリスト作るのがやや面倒というか、煩雑になりがちなところだな
エクセルの機能使えばいいっちゃいいけど、好みじゃないな
だめじゃないし、初心者なら無理やりVBAで組むのも勉強になるよ
重複の無いリスト作るのがやや面倒というか、煩雑になりがちなところだな
エクセルの機能使えばいいっちゃいいけど、好みじゃないな
840デフォルトの名無しさん (ワッチョイ 9fb3-Ogju)
2018/01/04(木) 13:55:27.88ID:hO93+Igl0 >>839
おれこういうの無理矢理やっちゃうの大好きで完成すると充実感半端ない
俺が組むマクロってそんなのばかりだ
基本初心者レベルの知識しか使わないでやっちゃうんで、
こういう質問をする人は、無理矢理やると遅くなるとか別の理由があって聞いてるのかな?
とか思っちゃう
おれこういうの無理矢理やっちゃうの大好きで完成すると充実感半端ない
俺が組むマクロってそんなのばかりだ
基本初心者レベルの知識しか使わないでやっちゃうんで、
こういう質問をする人は、無理矢理やると遅くなるとか別の理由があって聞いてるのかな?
とか思っちゃう
841デフォルトの名無しさん (ワッチョイ 9f9b-jEmF)
2018/01/04(木) 15:19:59.75ID:kPmYITG+0 ファーム1の中に、オプションボタンが18個あり、オブジェクト名を『OP_1』〜『OP_18』としてボタン1を押してフォーム2に切り替える時に選択されてるオプションボタンのキャプションを取得して変数TUR1に入れたいんですけどどうしたらいいですか?
842デフォルトの名無しさん (ワッチョイ ef9d-/oj5)
2018/01/04(木) 16:20:08.23ID:pGh8JphK0 >>841
For i = 1 To 18
With Me.Controls("OP_" & CStr(i))
If .Value = True Then
TUR1 = .Caption
Exit For
End If
End With
Next
For i = 1 To 18
With Me.Controls("OP_" & CStr(i))
If .Value = True Then
TUR1 = .Caption
Exit For
End If
End With
Next
843デフォルトの名無しさん (スップ Sdbf-dCp1)
2018/01/04(木) 17:41:48.62ID:uhyB+DSmd 初心者なんだけど以下のような表から特定のセルに入力された場合だけ、特定のセルをカウントする方法ってありますか?
Aは全て
Bは選ばれたものだけ、みたいな
Aの全てをカウントするのはわけないんだけど、Bの選ばれたものだけをカウントする方法がわからない
IF使うにしても何を指定すればいいのでしょう?
わかりにくかてすいません
Aは全て
Bは選ばれたものだけ、みたいな
Aの全てをカウントするのはわけないんだけど、Bの選ばれたものだけをカウントする方法がわからない
IF使うにしても何を指定すればいいのでしょう?
わかりにくかてすいません
844デフォルトの名無しさん (アウアウイー Sacf-rQ0k)
2018/01/04(木) 17:54:54.38ID:IwnGnNnba845デフォルトの名無しさん (スプッッ Sdbf-jEmF)
2018/01/04(木) 18:02:17.19ID:HiTEnEcXd >>842
ありがとうございます!
ありがとうございます!
846デフォルトの名無しさん (スップ Sdbf-dCp1)
2018/01/04(木) 18:13:43.61ID:uhyB+DSmd847デフォルトの名無しさん (スップ Sdbf-dCp1)
2018/01/04(木) 18:23:20.07ID:uhyB+DSmd すいません、間違えて書き込んでしまいました
>>844
Bがtrueなら、というのはどうやって指定すればいいですか?
範囲指定でがっつりやると、指定した範囲に一つでもtrueがあるとカウントしてしまって結局全部をカウントしてしまうんです
>>844
Bがtrueなら、というのはどうやって指定すればいいですか?
範囲指定でがっつりやると、指定した範囲に一つでもtrueがあるとカウントしてしまって結局全部をカウントしてしまうんです
848デフォルトの名無しさん (ワンミングク MMbf-OpPU)
2018/01/04(木) 18:27:59.94ID:iMxAIJokM >>826
何も難しく考えなくても、E列に=A&B&Cを入れて、E列を行ラベルにしてピボットテーブルで集計するだけで出来るよ。
ABC列をもどしたいならINDEX,MATCHで引っ張って来ないといけないけども、日々エクセル使ってる人なら手慣れたものだと思う。と言うか慣れておくと色々便利。
詳しい解説いるならする
何も難しく考えなくても、E列に=A&B&Cを入れて、E列を行ラベルにしてピボットテーブルで集計するだけで出来るよ。
ABC列をもどしたいならINDEX,MATCHで引っ張って来ないといけないけども、日々エクセル使ってる人なら手慣れたものだと思う。と言うか慣れておくと色々便利。
詳しい解説いるならする
849デフォルトの名無しさん (アウアウイー Sacf-rQ0k)
2018/01/04(木) 18:58:58.92ID:IwnGnNnba850デフォルトの名無しさん (ワッチョイ ef9d-/oj5)
2018/01/05(金) 02:37:52.28ID:UixpopG00 フィルタとCOUNTIFで良い気がするが
どうしてもVBAでやりたいのか?
どうしてもVBAでやりたいのか?
851デフォルトの名無しさん (ワッチョイ efe7-eFUV)
2018/01/05(金) 17:45:28.92ID:Kfn/8I4m0 HTMLソースで
<a href = URL1</a>
<br />**** ← 4桁の特定の数字が入る
<a href = URL2>予約中</a>
<a href = URL3>[取消]</a><br /><a href = URL4>[訂正]</a>
上記の4桁の数字とURL以外同様のソースが全部で10個あるページがあり、C5セルに4桁の数字を入れ、それに対応したURL3のリンクをクリックしたいのですが、どうすれば可能でしょうか?
IEでそのページまで飛ぶのは問題ないのですが、aタグのインナーテキストが4桁の数字以外共通なためForとGetElementsByTagNameとの組み合わせでクリックできないので何か手段があれば教えて頂きたいです。
<a href = URL1</a>
<br />**** ← 4桁の特定の数字が入る
<a href = URL2>予約中</a>
<a href = URL3>[取消]</a><br /><a href = URL4>[訂正]</a>
上記の4桁の数字とURL以外同様のソースが全部で10個あるページがあり、C5セルに4桁の数字を入れ、それに対応したURL3のリンクをクリックしたいのですが、どうすれば可能でしょうか?
IEでそのページまで飛ぶのは問題ないのですが、aタグのインナーテキストが4桁の数字以外共通なためForとGetElementsByTagNameとの組み合わせでクリックできないので何か手段があれば教えて頂きたいです。
852デフォルトの名無しさん (アウアウカー Sa4f-nLZj)
2018/01/05(金) 21:06:25.46ID:UyFZaUswa853851 (ワッチョイ efe7-eFUV)
2018/01/05(金) 21:25:01.57ID:Kfn/8I4m0 >>852
あ、確かに。書き間違えました。下記のコードだと10個のリンクのうち、一番上にあるやつをクリックすると思うのですが、
C5セルに入力した特定の4桁の数字の下にあるリンクをクリックしたいのです。
For Each obj In objIE.Document.getElementsByTagName("a")
If InStr(obj.innertext, "取消") > 0 Then
obj.Click
Exit For
End If
Next
あ、確かに。書き間違えました。下記のコードだと10個のリンクのうち、一番上にあるやつをクリックすると思うのですが、
C5セルに入力した特定の4桁の数字の下にあるリンクをクリックしたいのです。
For Each obj In objIE.Document.getElementsByTagName("a")
If InStr(obj.innertext, "取消") > 0 Then
obj.Click
Exit For
End If
Next
854デフォルトの名無しさん (ワッチョイ ef9f-hL1C)
2018/01/05(金) 22:16:41.06ID:vO88ak3C0 DOMに親要素とか隣の要素を見ていくのあったよね
あれで必要なだけ移動させればいいんじゃね
あれで必要なだけ移動させればいいんじゃね
855デフォルトの名無しさん (ワッチョイ ef9f-hL1C)
2018/01/05(金) 22:20:08.87ID:vO88ak3C0856デフォルトの名無しさん
2018/01/07(日) 08:20:46.08 >>843
VBAを使わずにExcelの計算式で書くとこうだよね。
・C列が「10」、B列が「○」の行を数えるなら
=COUNTIFS($C$2:$C$6,10,$B$2:$B$6,"○")
・C列が「10」、B列が空以外の行を数えるなら
=COUNTIF($C$2:$C$6,10)-COUNTIFS($A$2:$A$6,10,$B$2:$B$6,"")
これをVBAで書きたいなら、そのままワークシート関数を呼び出せばいい。
・C列が「10」、B列が「○」の行を数えるなら
With Worksheets("Sheet1")
dblCnt = WorksheetFunction.CountIfs(.Range("C2:C6"), 10, .Range("B2:B6"), "○")
End With
・C列が「10」、B列が空以外の行を数えるなら
With Worksheets("Sheet1")
dblCnt = WorksheetFunction.CountIf(.Range("C2:C6"), 10) - WorksheetFunction.CountIfs(.Range("C2:C6"), 10, .Range("B2:B6"), "")
End With
注:COUNTIFS関数はOffice 2007で追加されたので、2003とかでも動くようにするには
計算式なら配列数式を使うかダミーの結合列 (例: F列に =B2&”:”&C2)を使う必要があるし、
VBAなら自前で1行ずつループするFor文を書く必要がある。
VBAを使わずにExcelの計算式で書くとこうだよね。
・C列が「10」、B列が「○」の行を数えるなら
=COUNTIFS($C$2:$C$6,10,$B$2:$B$6,"○")
・C列が「10」、B列が空以外の行を数えるなら
=COUNTIF($C$2:$C$6,10)-COUNTIFS($A$2:$A$6,10,$B$2:$B$6,"")
これをVBAで書きたいなら、そのままワークシート関数を呼び出せばいい。
・C列が「10」、B列が「○」の行を数えるなら
With Worksheets("Sheet1")
dblCnt = WorksheetFunction.CountIfs(.Range("C2:C6"), 10, .Range("B2:B6"), "○")
End With
・C列が「10」、B列が空以外の行を数えるなら
With Worksheets("Sheet1")
dblCnt = WorksheetFunction.CountIf(.Range("C2:C6"), 10) - WorksheetFunction.CountIfs(.Range("C2:C6"), 10, .Range("B2:B6"), "")
End With
注:COUNTIFS関数はOffice 2007で追加されたので、2003とかでも動くようにするには
計算式なら配列数式を使うかダミーの結合列 (例: F列に =B2&”:”&C2)を使う必要があるし、
VBAなら自前で1行ずつループするFor文を書く必要がある。
857デフォルトの名無しさん (スプッッ Sdea-p8jN)
2018/01/11(木) 12:40:04.91ID:eKl5cJvJd コンボboxを使ってサジェスト機能みたいなことをしたくて作ってみたんだけど、1文字目はうまくいくんだけど2文字目以降打つとリストの一番上が乗ってきて使い心地が良くないんだけど、どうしたらいいですか?
コンボboxのリストのみをクリアするやり方もいまいちわかりません。
j=2
Tname.rist=array()
set MstSht=worksheets(″マスター″)
str_word=controls(″Tname″&j).value
for i=2toMstSht.cells(rows.count,6).end(xlup).row
if instr(ucase(MstSht.cells(i,6).value),ucase(str_word))=1 then
controls(″Tname″&j).additem MstSht.cells(i,6).value
end if
next
コンボboxのリストのみをクリアするやり方もいまいちわかりません。
j=2
Tname.rist=array()
set MstSht=worksheets(″マスター″)
str_word=controls(″Tname″&j).value
for i=2toMstSht.cells(rows.count,6).end(xlup).row
if instr(ucase(MstSht.cells(i,6).value),ucase(str_word))=1 then
controls(″Tname″&j).additem MstSht.cells(i,6).value
end if
next
858デフォルトの名無しさん (ワッチョイ 1188-/4a5)
2018/01/11(木) 19:23:41.06ID:WJjCr32Q0 エクセルの2003ですが、
並べて比較を使用した際にペアになっているブックと、
そのブックで表示されているシートを取得するには
どのように記述すればいいでしょうか。
並べて比較を使用した際にペアになっているブックと、
そのブックで表示されているシートを取得するには
どのように記述すればいいでしょうか。
859デフォルトの名無しさん (アウーイモ MM21-MNwA)
2018/01/11(木) 21:16:23.66ID:JbTpKTF6M >>858
何を言っているのでしょうか?
何を言っているのでしょうか?
860デフォルトの名無しさん (ワッチョイ 25d2-Un5q)
2018/01/11(木) 21:25:37.65ID:a2sLbYI50 世界教師マイトLーヤ「大暴落は日本からスタート」
http://rio2016.5ch.net/test/read.cgi/2chse/1512813686/l50
【マイトLーヤ】 米国債を売れ 【1200兆円】
https://medaka.5ch.net/test/read.cgi/eco/1515587891/l50
http://rio2016.5ch.net/test/read.cgi/2chse/1512813686/l50
【マイトLーヤ】 米国債を売れ 【1200兆円】
https://medaka.5ch.net/test/read.cgi/eco/1515587891/l50
861デフォルトの名無しさん (ワッチョイ e52b-Yq9l)
2018/01/12(金) 01:30:55.27ID:GWvM9lig0863デフォルトの名無しさん (ワッチョイ 79af-rWHv)
2018/01/12(金) 15:56:41.55ID:kdQVxAch0 0回目って何?
864デフォルトの名無しさん (ワッチョイ eab3-0PCX)
2018/01/12(金) 19:59:42.26ID:8L8z7qJh0 vbModelessで開いたUserForm上のTextBoxにSetFocusするようInitializeに記述しても効きません
これって無理なんですかね?
vbModelessを切るとフォーカスがちゃんとTextBoxに移るんですけどね
これって無理なんですかね?
vbModelessを切るとフォーカスがちゃんとTextBoxに移るんですけどね
865デフォルトの名無しさん (ワッチョイ 5e9f-QpsD)
2018/01/12(金) 23:20:03.95ID:Ln5WwMFr0 初期状態でフォーカスを当てたいなら
UserForm.Show vbModeless
UserForm.TextBox.SetFocus
とフォームを呼んでいるプロシージャ側に書く
フォームのイベントならActivateでどうでしょう
毎回フォームがアクティブになるたびフォーカスしちゃうけど
Initializeがなぜはしらないのかは知らない
UserForm.Show vbModeless
UserForm.TextBox.SetFocus
とフォームを呼んでいるプロシージャ側に書く
フォームのイベントならActivateでどうでしょう
毎回フォームがアクティブになるたびフォーカスしちゃうけど
Initializeがなぜはしらないのかは知らない
866デフォルトの名無しさん (ワッチョイ 5e9f-QpsD)
2018/01/12(金) 23:44:10.99ID:Ln5WwMFr0 実験してみたらInitializeは呼ばれてるけど
SetFocusだけがだめみたい
他のことは普通にできる
なんでしょうね
SetFocusだけがだめみたい
他のことは普通にできる
なんでしょうね
867デフォルトの名無しさん (バットンキン MM7a-Yq9l)
2018/01/12(金) 23:46:18.93ID:WKndAwKhM いやExsel 2007もサポート切れてますが
868デフォルトの名無しさん (ワッチョイ eab3-0PCX)
2018/01/13(土) 03:26:50.74ID:0Hr8k8ED0869デフォルトの名無しさん (ワッチョイ 6a1e-53ns)
2018/01/13(土) 09:26:06.50ID:60QkmGs40 試してないけど、プロパティのTabIndexも駄目だったの?
870デフォルトの名無しさん (ワッチョイ 118a-zETe)
2018/01/13(土) 10:05:22.76ID:8yN0Kzpj0 ThisWorkbook.Application.Hwndでブックのハンドルを取得して、
SetLayeredWindowAttributesで透過処理をする時、
LWA_ALPHAでは問題ないのに、
LWA_COLORKEYに変えると、なぜかブック全体ではなく、
シート上に最初に配置したコマンドボタンの方に誤爆します。
しかも、自分のPCでは問題ないのに、他人のPCだと誤爆するという意味不明さ。
ハンドルがずれる的なバグでもあるのでしょうか?
SetLayeredWindowAttributesで透過処理をする時、
LWA_ALPHAでは問題ないのに、
LWA_COLORKEYに変えると、なぜかブック全体ではなく、
シート上に最初に配置したコマンドボタンの方に誤爆します。
しかも、自分のPCでは問題ないのに、他人のPCだと誤爆するという意味不明さ。
ハンドルがずれる的なバグでもあるのでしょうか?
871デフォルトの名無しさん
2018/01/13(土) 10:12:39.30 ウィンドウ表示時にフォーカス当てたいんならTabIndex=0にすればいいんだと思うけど、
あとはフラグを使ってInitialize直後のActivateイベントでフォーカスを当てればいいんじゃね?
Private mblnInitFlag As Boolean
Private Sub UserForm_Activate()
If mblnInitFlag Then
TextBox2.SetFocus
mblnInitFlag = False
End If
End Sub
Private Sub UserForm_Initialize()
mblnInitFlag = True
End Sub
あとはフラグを使ってInitialize直後のActivateイベントでフォーカスを当てればいいんじゃね?
Private mblnInitFlag As Boolean
Private Sub UserForm_Activate()
If mblnInitFlag Then
TextBox2.SetFocus
mblnInitFlag = False
End If
End Sub
Private Sub UserForm_Initialize()
mblnInitFlag = True
End Sub
872デフォルトの名無しさん (ワッチョイ b5b3-DdNP)
2018/01/13(土) 10:19:25.53ID:WLDq+ue70 一つ目の表
A,B,C,D,E
aaa,bb,cc,00,20
bbb,cc,dd,11,30
二つ目の表
G,H,I,J,K
aaa,bb,cc,00,10
bbb,cc,dd,11,10
上の様な表があり、一つ目のABC列と二つ目のGHI列の値が一致すれば、二つ目の表の横にE列からK列の数値を引いた値を表示したい。
一致するデータが無ければ、一致データ無しと表示。
上の表だと2つ目の表の右列に、それぞれ10,20と表示。
データ量は300~800程です。
出来る方、よろしくお願いします。
A,B,C,D,E
aaa,bb,cc,00,20
bbb,cc,dd,11,30
二つ目の表
G,H,I,J,K
aaa,bb,cc,00,10
bbb,cc,dd,11,10
上の様な表があり、一つ目のABC列と二つ目のGHI列の値が一致すれば、二つ目の表の横にE列からK列の数値を引いた値を表示したい。
一致するデータが無ければ、一致データ無しと表示。
上の表だと2つ目の表の右列に、それぞれ10,20と表示。
データ量は300~800程です。
出来る方、よろしくお願いします。
873デフォルトの名無しさん
2018/01/13(土) 10:29:13.82874デフォルトの名無しさん (スッップ Sd0a-YX4c)
2018/01/13(土) 10:31:29.99ID:uYJANG/vd 既存プログラムで引数が多いやつを減らしたいんだけどどうすればいい?
ただグローバル変数使うと他のアプリケーションに影響出るから使えない。
今から構造化やクラスにするのは名前変更が大変そうだし、同じ型でも同じ動作でもないからまとめにくい。
ただグローバル変数使うと他のアプリケーションに影響出るから使えない。
今から構造化やクラスにするのは名前変更が大変そうだし、同じ型でも同じ動作でもないからまとめにくい。
875デフォルトの名無しさん (ワッチョイ 118a-zETe)
2018/01/13(土) 10:39:42.82ID:8yN0Kzpj0 >>873
それが、コマンドボタンとシートの色を同じにしても、
コマンドボタンの方だけ透過されるんです。
しかも最初に配置したコマンドボタンだけ。
2個目以降は変わらず。
透過の前後で、ハンドルの値をデバッグプリントしても変化ないですし。
それが、コマンドボタンとシートの色を同じにしても、
コマンドボタンの方だけ透過されるんです。
しかも最初に配置したコマンドボタンだけ。
2個目以降は変わらず。
透過の前後で、ハンドルの値をデバッグプリントしても変化ないですし。
876デフォルトの名無しさん
2018/01/13(土) 10:49:24.82 >>872
2007以降限定でよければL列に計算式埋め込んじゃうけどね
=IF(COUNTIFS($A:$A,$G1,$B:$B,$H1,$C:$C,$I1)>0,SUMIFS($E:$E,$A:$A,$G1,$B:$B,$H1,$C:$C,$I1)-$K1,"一致データ無し")
2007以降限定でよければL列に計算式埋め込んじゃうけどね
=IF(COUNTIFS($A:$A,$G1,$B:$B,$H1,$C:$C,$I1)>0,SUMIFS($E:$E,$A:$A,$G1,$B:$B,$H1,$C:$C,$I1)-$K1,"一致データ無し")
877デフォルトの名無しさん (ワッチョイ 118a-zETe)
2018/01/13(土) 11:20:55.87ID:8yN0Kzpj0 ちなみに、こんなのです。
Sub test(ByVal Flg As Boolean)
Dim Hwnd As Long: Hwnd = ThisWorkbook.Application.Hwnd
Call SetWindowLong(Hwnd, -20, &H80000)
If Flg Then
Call SetLayeredWindowAttributes(Hwnd, 0, 200, 1) '←成功
Else
Call SetLayeredWindowAttributes(Hwnd, 0, 200, 2) '←コマンドボタンに誤爆
End If
End Sub
変えているのは最後の引数だけなんですが。
Sub test(ByVal Flg As Boolean)
Dim Hwnd As Long: Hwnd = ThisWorkbook.Application.Hwnd
Call SetWindowLong(Hwnd, -20, &H80000)
If Flg Then
Call SetLayeredWindowAttributes(Hwnd, 0, 200, 1) '←成功
Else
Call SetLayeredWindowAttributes(Hwnd, 0, 200, 2) '←コマンドボタンに誤爆
End If
End Sub
変えているのは最後の引数だけなんですが。
878デフォルトの名無しさん
2018/01/13(土) 11:27:43.02 >>874
Sub test1()
Dim args(5) As Variant
Dim arg1 As String
Dim arg2 As Long
Dim arg3 As Variant
Dim arg4 As Workbook
Dim arg5 As Collection
arg1 = "test"
arg2 = 123
arg3 = ActiveSheet.Cells(1, 1)
Set arg4 = ActiveWorkbook
Set arg5 = New Collection
arg5.Add New DataObject
arg5.Item(1).SetText "sample"
args(1) = arg1
args(2) = arg2
args(3) = arg3
Set args(4) = arg4
Set args(5) = arg5
Call test2(args)
End Sub
‘ ――
Sub test2(ByRef args As Variant)
Dim arg1 As String
Dim arg2 As Long
Dim arg3 As Variant
Dim arg4 As Workbook
Dim arg5 As Collection
arg1 = args(1)
arg2 = args(2)
arg3 = args(3)
Set arg4 = args(4)
Set arg5 = args(5)
Debug.Print arg1
Debug.Print arg2
Debug.Print arg3
Debug.Print arg4.Name
Debug.Print arg5.Item(1).GetText
End Sub
Sub test1()
Dim args(5) As Variant
Dim arg1 As String
Dim arg2 As Long
Dim arg3 As Variant
Dim arg4 As Workbook
Dim arg5 As Collection
arg1 = "test"
arg2 = 123
arg3 = ActiveSheet.Cells(1, 1)
Set arg4 = ActiveWorkbook
Set arg5 = New Collection
arg5.Add New DataObject
arg5.Item(1).SetText "sample"
args(1) = arg1
args(2) = arg2
args(3) = arg3
Set args(4) = arg4
Set args(5) = arg5
Call test2(args)
End Sub
‘ ――
Sub test2(ByRef args As Variant)
Dim arg1 As String
Dim arg2 As Long
Dim arg3 As Variant
Dim arg4 As Workbook
Dim arg5 As Collection
arg1 = args(1)
arg2 = args(2)
arg3 = args(3)
Set arg4 = args(4)
Set arg5 = args(5)
Debug.Print arg1
Debug.Print arg2
Debug.Print arg3
Debug.Print arg4.Name
Debug.Print arg5.Item(1).GetText
End Sub
879デフォルトの名無しさん (ワッチョイ b5b3-DdNP)
2018/01/13(土) 13:04:46.60ID:WLDq+ue70 >>876
列の挿入や削除の処理があるので、数式だと参照ズレなどが起こってしまうので出来たらVBAで処理したいと考えています。
列の挿入や削除の処理があるので、数式だと参照ズレなどが起こってしまうので出来たらVBAで処理したいと考えています。
880858 (ワッチョイ 1188-/4a5)
2018/01/13(土) 13:29:13.07ID:eGapce6A0882デフォルトの名無しさん (ワッチョイ 5e9f-QpsD)
2018/01/13(土) 13:47:55.56ID:fyAvIt7m0 並べて比較って
人間が何かを見比べて確認しているわけだから
その作業は人間がやる必要ないとおもうので
全部VBAでバックグランドで処理すればいいのではないかと単純に思ってしまう
最後に比較した結果だけ表示してあげる
人間が何かを見比べて確認しているわけだから
その作業は人間がやる必要ないとおもうので
全部VBAでバックグランドで処理すればいいのではないかと単純に思ってしまう
最後に比較した結果だけ表示してあげる
883デフォルトの名無しさん (ワッチョイ 1188-/4a5)
2018/01/13(土) 15:21:57.51ID:eGapce6A0884デフォルトの名無しさん
2018/01/13(土) 16:53:07.70 >>883
> 比較する対象を特定する事は計算式でできない
意味分からん
=IF(COUNTIFS($A:$A,$G1,$B:$B,$H1,$C:$C,$I1)>0,SUMIFS($E:$E,$A:$A,$G1,$B:$B,$H1,$C:$C,$I1)-$K1,"一致データ無し")
この計算式を単純にVBAに置き換えて
With Worksheets("Sheet1")
If WorksheetFunction.CountIfs(.Range(“A:A”), .Range(“G1”), .Range(“B:B”), .Range(“H1”), .Range(“C:C”), .Range(“I1”)) Then
.Range(“L1”) = WorksheetFunction.SumIfs(.Range(“E:E”), .Range(“A:A”), .Range(“G1”), .Range(“B:B”), .Range(“H1”), .Range(“C:C”), .Range(“I1”)) - .Range(“K1”)
Else
.Range(“L1”) = “一致データ無し”
EndIf
End With
行列を変数で指定できるように.Rangeを.Columnsや.Cellsに置き換えて数値で指定できるようにして
With Worksheets("Sheet1")
If WorksheetFunction.CountIfs(.Columns(1), .Cells(1,7), .Columns(2), .Cells(1,8), .Columns(3), .Cells(1,9)) Then
.Cells(1,12) = WorksheetFunction.SumIfs(.Columns(5), .Columns(1), .Cells(1,7), .Columns(2), .Cells(1,8), .Columns(3), .Cells(1,9)) - .Cells(1,11)
Else
.Cells(1,12) = “一致データ無し”
EndIf
End With
あとは必要なところを変数化してループを回せばいいじゃん
Dim rngCell As Range
Dim lngRow As Long ‘ ループを回すため行番号を変数化
With Worksheets("Sheet1")
Set rngCell = .Cells(1, 12)
‘ 表の詳細仕様が分からないのでとりあえずK列が空じゃない限りループ続行
While rngCell.Offset(0, -1) <> “”
lngRow = rngCell.Row
If WorksheetFunction.CountIfs(.Columns(1), .Cells(lngRow,7), .Columns(2), .Cells(lngRow,8), .Columns(3), .Cells(lngRow,9)) Then
rngCell = WorksheetFunction.SumIfs(.Columns(5), .Columns(1), .Cells(lngRow,7), .Columns(2), .Cells(lngRow,8), .Columns(3), .Cells(lngRow,9)) - .Cells(lngRow,11)
Else
rngCell = “一致データ無し”
EndIf
Set rngCell = rngCell.Offset(1, 0) ‘ 次の行
Wend
End With
列の追加削除があるということだったら列番号も変数化すればいい
> 比較する対象を特定する事は計算式でできない
意味分からん
=IF(COUNTIFS($A:$A,$G1,$B:$B,$H1,$C:$C,$I1)>0,SUMIFS($E:$E,$A:$A,$G1,$B:$B,$H1,$C:$C,$I1)-$K1,"一致データ無し")
この計算式を単純にVBAに置き換えて
With Worksheets("Sheet1")
If WorksheetFunction.CountIfs(.Range(“A:A”), .Range(“G1”), .Range(“B:B”), .Range(“H1”), .Range(“C:C”), .Range(“I1”)) Then
.Range(“L1”) = WorksheetFunction.SumIfs(.Range(“E:E”), .Range(“A:A”), .Range(“G1”), .Range(“B:B”), .Range(“H1”), .Range(“C:C”), .Range(“I1”)) - .Range(“K1”)
Else
.Range(“L1”) = “一致データ無し”
EndIf
End With
行列を変数で指定できるように.Rangeを.Columnsや.Cellsに置き換えて数値で指定できるようにして
With Worksheets("Sheet1")
If WorksheetFunction.CountIfs(.Columns(1), .Cells(1,7), .Columns(2), .Cells(1,8), .Columns(3), .Cells(1,9)) Then
.Cells(1,12) = WorksheetFunction.SumIfs(.Columns(5), .Columns(1), .Cells(1,7), .Columns(2), .Cells(1,8), .Columns(3), .Cells(1,9)) - .Cells(1,11)
Else
.Cells(1,12) = “一致データ無し”
EndIf
End With
あとは必要なところを変数化してループを回せばいいじゃん
Dim rngCell As Range
Dim lngRow As Long ‘ ループを回すため行番号を変数化
With Worksheets("Sheet1")
Set rngCell = .Cells(1, 12)
‘ 表の詳細仕様が分からないのでとりあえずK列が空じゃない限りループ続行
While rngCell.Offset(0, -1) <> “”
lngRow = rngCell.Row
If WorksheetFunction.CountIfs(.Columns(1), .Cells(lngRow,7), .Columns(2), .Cells(lngRow,8), .Columns(3), .Cells(lngRow,9)) Then
rngCell = WorksheetFunction.SumIfs(.Columns(5), .Columns(1), .Cells(lngRow,7), .Columns(2), .Cells(lngRow,8), .Columns(3), .Cells(lngRow,9)) - .Cells(lngRow,11)
Else
rngCell = “一致データ無し”
EndIf
Set rngCell = rngCell.Offset(1, 0) ‘ 次の行
Wend
End With
列の追加削除があるということだったら列番号も変数化すればいい
885デフォルトの名無しさん (ワッチョイ f1f7-GMp/)
2018/01/13(土) 17:00:25.96ID:zzyV/8sb0 初心者で申し訳ありません
セルに入力した選手コードを選手名に置換するような動きをさせたいのですがどうするとよいでしょうか
別のシートに選手名簿は用意してありA列に選手コードB列に選手名があります
セルに入力した選手コードを選手名に置換するような動きをさせたいのですがどうするとよいでしょうか
別のシートに選手名簿は用意してありA列に選手コードB列に選手名があります
886デフォルトの名無しさん (ワッチョイ eab3-J7fK)
2018/01/13(土) 17:42:32.57ID:8qhapkmN0887デフォルトの名無しさん (ワッチョイ eab3-J7fK)
2018/01/13(土) 17:48:09.64ID:8qhapkmN0 すまん「置換」を見落とした
VBAは要るな
WorksheetFunction.VLookup でやるなり、ループで検索するなりやればいい
VBAは要るな
WorksheetFunction.VLookup でやるなり、ループで検索するなりやればいい
888デフォルトの名無しさん (アークセー Sxbd-IRwv)
2018/01/13(土) 17:50:29.11ID:gLbKwyK9x889デフォルトの名無しさん
2018/01/13(土) 17:58:56.84890デフォルトの名無しさん (アークセー Sxbd-IRwv)
2018/01/13(土) 18:00:41.47ID:gLbKwyK9x >>887
検索置換のダイアログでシート内の選手コードを一括変換する、みたいな手作業の業務手順をそのままマクロ化しようとしているのかもしれないし、そういう場合はそもそもシートの設計や業務手順に問題がある場合が多い。
最初にVLOOKUP使えと指摘したあんたの感覚は基本的には正しいと思うぞ。
検索置換のダイアログでシート内の選手コードを一括変換する、みたいな手作業の業務手順をそのままマクロ化しようとしているのかもしれないし、そういう場合はそもそもシートの設計や業務手順に問題がある場合が多い。
最初にVLOOKUP使えと指摘したあんたの感覚は基本的には正しいと思うぞ。
891デフォルトの名無しさん (ワッチョイ 5e9f-QpsD)
2018/01/13(土) 18:06:27.84ID:fyAvIt7m0 >>885
単発ならワークシート関数でやった方が簡単
VLOOKUPで変換したのを用意しといてそれをごそっと上書きする
何回もやるなら、上記をマクロにする
このくらいならマクロの記録でもいけそう
全部VBA上でやる方法もあるけどビギナーには大変でしょう
こんな感じでいいんじゃなかろうか
Dim i
i = スタートする行
Do While Not Worksheets(1).Cells(i, 1) = ""
Worksheets(1).Cells(i, 1) = WorksheetFunction.VLookup _
(Worksheets(1).Cells(i, 1), Worksheets(2).Range("名簿範囲"), 2, 0)
i = i + 1
Loop
シートのインデックスとかは書き換えてね
意味不明ならマクロ記録かさらなる修行をオススメする
単発ならワークシート関数でやった方が簡単
VLOOKUPで変換したのを用意しといてそれをごそっと上書きする
何回もやるなら、上記をマクロにする
このくらいならマクロの記録でもいけそう
全部VBA上でやる方法もあるけどビギナーには大変でしょう
こんな感じでいいんじゃなかろうか
Dim i
i = スタートする行
Do While Not Worksheets(1).Cells(i, 1) = ""
Worksheets(1).Cells(i, 1) = WorksheetFunction.VLookup _
(Worksheets(1).Cells(i, 1), Worksheets(2).Range("名簿範囲"), 2, 0)
i = i + 1
Loop
シートのインデックスとかは書き換えてね
意味不明ならマクロ記録かさらなる修行をオススメする
892デフォルトの名無しさん (アークセー Sxbd-IRwv)
2018/01/13(土) 18:07:34.63ID:gLbKwyK9x >>889
VBAに慣れてる人ならセル値の置換と聞いただけでワークシート更新イベントを使いたいのかなって思いがちだよな
俺も最初はそう思ったわ
でも質問者の質問内容を推測抜きで素直に読むとそうとは限らないんだよな
VBAに慣れてる人ならセル値の置換と聞いただけでワークシート更新イベントを使いたいのかなって思いがちだよな
俺も最初はそう思ったわ
でも質問者の質問内容を推測抜きで素直に読むとそうとは限らないんだよな
893デフォルトの名無しさん (ワッチョイ f1f7-GMp/)
2018/01/13(土) 18:19:24.76ID:zzyV/8sb0894デフォルトの名無しさん (ワッチョイ f1f7-GMp/)
2018/01/13(土) 18:35:21.45ID:zzyV/8sb0895858 (ワッチョイ 1188-/4a5)
2018/01/13(土) 18:44:45.15ID:eGapce6A0896デフォルトの名無しさん (アウアウカー Sa55-sebt)
2018/01/13(土) 19:03:27.44ID:rZTV+Qsta >>895
ファイル名とかシート名がランダムでないなら
固定値じゃないの?
どんなファイル名か分からない、シート名か分からないってなら都度入力するしかないな。
データ形式で特定することもできるけど、
無駄な作業にしか思えない。
ファイル名とかシート名がランダムでないなら
固定値じゃないの?
どんなファイル名か分からない、シート名か分からないってなら都度入力するしかないな。
データ形式で特定することもできるけど、
無駄な作業にしか思えない。
897デフォルトの名無しさん (アークセー Sxbd-IRwv)
2018/01/13(土) 19:18:42.64ID:gLbKwyK9x >>893
こんな感じならどうかな
以下は、実行すると報告用シート内に含まれる選手コード全てを一気に置換する
複数の選手コードを含む場合も一発で置換できるはず
名簿にはコードの欄が空白の行がなく、名簿シートのA2セル以下に選手コードが入力されているものと仮定してる(A1は表見出し)
セル値の一部が選手コードと一致する場合も置換されてしまうので、コードのみが入力されているセルの値だけを確実に置換したい場合、Replaceメソッドの引数のLookAt:=xlPart をLookAt:=xlWholeに変更してくれ
Sub ReplaceCode
Dim sh_list As WorkSheet '選手名簿シート
Dim sh_report As WorkSheet '報告用シート
Dim i As Long
Set sh_list = WorkSheets("選手名簿シート")
Set sh_report = WorkSheets("報告用シート")
For i = 2 To sh_list.Range("A2").End("xlDown").Row
sh_report.Cells.Replace What:=sh_list.Cells(i, 1).Value, Replacement:=sh_list.Cells(i, 2).Value, LookAt:=xlPart
Next i
End Sub
こんな感じならどうかな
以下は、実行すると報告用シート内に含まれる選手コード全てを一気に置換する
複数の選手コードを含む場合も一発で置換できるはず
名簿にはコードの欄が空白の行がなく、名簿シートのA2セル以下に選手コードが入力されているものと仮定してる(A1は表見出し)
セル値の一部が選手コードと一致する場合も置換されてしまうので、コードのみが入力されているセルの値だけを確実に置換したい場合、Replaceメソッドの引数のLookAt:=xlPart をLookAt:=xlWholeに変更してくれ
Sub ReplaceCode
Dim sh_list As WorkSheet '選手名簿シート
Dim sh_report As WorkSheet '報告用シート
Dim i As Long
Set sh_list = WorkSheets("選手名簿シート")
Set sh_report = WorkSheets("報告用シート")
For i = 2 To sh_list.Range("A2").End("xlDown").Row
sh_report.Cells.Replace What:=sh_list.Cells(i, 1).Value, Replacement:=sh_list.Cells(i, 2).Value, LookAt:=xlPart
Next i
End Sub
898858 (ワッチョイ 1188-/4a5)
2018/01/13(土) 19:32:04.47ID:eGapce6A0 >>896
ファイルのフォーマットが複数あるので、
事前にファイル名とシート名を規定できないのです。
なので、せめてペアにしたファイル同士が特定できれば、
ファイルとシートを選択する手間が省けると思ったのですが・・・
3つ以上開けなくなるけど、workbooksからマクロブックを除外した先頭2つを比較する方法で考えてみます。
ファイルのフォーマットが複数あるので、
事前にファイル名とシート名を規定できないのです。
なので、せめてペアにしたファイル同士が特定できれば、
ファイルとシートを選択する手間が省けると思ったのですが・・・
3つ以上開けなくなるけど、workbooksからマクロブックを除外した先頭2つを比較する方法で考えてみます。
899デフォルトの名無しさん (ワッチョイ 66fa-53ns)
2018/01/13(土) 19:36:48.93ID:6HVsHBKb0900デフォルトの名無しさん (ワッチョイ b5b3-6BZu)
2018/01/13(土) 23:03:28.12ID:aJN0Dby50 エクセル2010でCSVファイルを開いた場合、
UTF8やshiftjisを自動で判定して表示してくれますが、
この時に判定された文字コードを取得する方法はありますか。
用途は、外部データの取り込みでCSVを開きなおすための文字コードの特定です。
UTF8やshiftjisを自動で判定して表示してくれますが、
この時に判定された文字コードを取得する方法はありますか。
用途は、外部データの取り込みでCSVを開きなおすための文字コードの特定です。
901デフォルトの名無しさん (ワッチョイ 8903-YNmt)
2018/01/13(土) 23:14:29.83ID:odSwvUdp0 >>900
application.nkf
application.nkf
902デフォルトの名無しさん (ワッチョイ b5b3-6BZu)
2018/01/13(土) 23:28:32.80ID:aJN0Dby50903デフォルトの名無しさん (ワッチョイ e52b-Yq9l)
2018/01/14(日) 06:58:25.18ID:UVUQYwWb0 >>902
いいってことよ(´・ω・`)b
いいってことよ(´・ω・`)b
904デフォルトの名無しさん (ワッチョイ f1f7-GMp/)
2018/01/15(月) 01:08:16.65ID:Zqan8uZj0 >>897
実行時エラー13
型が一致しませんとなっていて
For~の行でエラーを出していて止まるみたいです
あと報告シートが選手の強さ別に複数に分かれているのですが今選手コードの入力したシート(つまりいま開いているマクロ実行用のボタンを押したシート)を処理したいという場合どうするとよいのか教えていただけると助かります
実行時エラー13
型が一致しませんとなっていて
For~の行でエラーを出していて止まるみたいです
あと報告シートが選手の強さ別に複数に分かれているのですが今選手コードの入力したシート(つまりいま開いているマクロ実行用のボタンを押したシート)を処理したいという場合どうするとよいのか教えていただけると助かります
905897 (アークセー Sxbd-IRwv)
2018/01/15(月) 01:48:08.96ID:ubg4QImpx >>904
エラーの出たコードを転載して見せてもらえませんか?こちらの環境ではうまく動いているんですが、私がコードを転載したときにミスをしたかもしれないので
それから、コードはボタンマクロ(ボタン名_Clickのような名前のプロシージャ)として各シートのシートモジュールに書いているんでしょうか?
エラーの出たコードを転載して見せてもらえませんか?こちらの環境ではうまく動いているんですが、私がコードを転載したときにミスをしたかもしれないので
それから、コードはボタンマクロ(ボタン名_Clickのような名前のプロシージャ)として各シートのシートモジュールに書いているんでしょうか?
906デフォルトの名無しさん (ワッチョイ f1f7-lXUw)
2018/01/15(月) 11:28:57.27ID:thpu0oBS0 >>905
Sub ReplaceCode()
Dim sh_list As Worksheet '選手名簿シート
Dim sh_report As Worksheet '報告用シート
Dim i As Long
Set sh_list = Worksheets("選手名簿")
Set sh_report = Worksheets("対戦結果表_A級")
For i = 2 To sh_list.Range("A2").End("xlDown").Row
sh_report.Cells.Replace What:=sh_list.Cells(i, 1).Value, Replacement:=sh_list.Cells(i, 2).Value, LookAt:=xlPart
Next i
End Sub
シート作成用のコードが既にあるのですがその中のコードを流用して各シートに実行用のボタンを置く計画でした
ActiveSheet.Buttons.Add(2, 1.5, 125, 18.75).Select
Selection.OnAction = "CSV_SAVE"
Selection.Characters.Text = Worksheets(2).Cells(1, 1).Text & "級のCSVファイル作成"
With Selection.Characters(Start:=1, Length:=15).Font
.Name = "MS Pゴシック"
.FontStyle = "標準"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
End With
これのCSV_SAVEをReplaceCodeにしてボタンの名前と場所をかえるつもりでしたがあまりよくない方法なのでしょうか
必要であれば既にあるコードを出しますので教えてください
Sub ReplaceCode()
Dim sh_list As Worksheet '選手名簿シート
Dim sh_report As Worksheet '報告用シート
Dim i As Long
Set sh_list = Worksheets("選手名簿")
Set sh_report = Worksheets("対戦結果表_A級")
For i = 2 To sh_list.Range("A2").End("xlDown").Row
sh_report.Cells.Replace What:=sh_list.Cells(i, 1).Value, Replacement:=sh_list.Cells(i, 2).Value, LookAt:=xlPart
Next i
End Sub
シート作成用のコードが既にあるのですがその中のコードを流用して各シートに実行用のボタンを置く計画でした
ActiveSheet.Buttons.Add(2, 1.5, 125, 18.75).Select
Selection.OnAction = "CSV_SAVE"
Selection.Characters.Text = Worksheets(2).Cells(1, 1).Text & "級のCSVファイル作成"
With Selection.Characters(Start:=1, Length:=15).Font
.Name = "MS Pゴシック"
.FontStyle = "標準"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
End With
これのCSV_SAVEをReplaceCodeにしてボタンの名前と場所をかえるつもりでしたがあまりよくない方法なのでしょうか
必要であれば既にあるコードを出しますので教えてください
907デフォルトの名無しさん (ワッチョイ 1188-/4a5)
2018/01/15(月) 11:58:16.00ID:Vljo7f2q0 >>903
application.nkf オブジェクトが見つかりませんでした。
下記のapplicationオブジェクト内にも、nkfプロパティが見つかりません。
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/application-object-excel
オブジェクトの参照方法が違うのでしょうか。
application.nkf オブジェクトが見つかりませんでした。
下記のapplicationオブジェクト内にも、nkfプロパティが見つかりません。
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/application-object-excel
オブジェクトの参照方法が違うのでしょうか。
908897 (アークセー Sxbd-IRwv)
2018/01/15(月) 23:02:33.00ID:JvjYqsKWx909デフォルトの名無しさん (スッップ Sd0a-YX4c)
2018/01/16(火) 12:17:16.43ID:SelV7zwId 質問です。
ソルバーで普通は目的セルをrangeなどで指定しますが、シートのセルにアクセスせず、vba内の変数を直接ソルバーにかけてvba内だけで完結したいのですが、方法あるでしょうか?
ソルバーで普通は目的セルをrangeなどで指定しますが、シートのセルにアクセスせず、vba内の変数を直接ソルバーにかけてvba内だけで完結したいのですが、方法あるでしょうか?
910デフォルトの名無しさん (ワッチョイ f1f7-GMp/)
2018/01/17(水) 02:18:24.01ID:x8yvrTsd0911デフォルトの名無しさん (ワッチョイ 239b-Q7o0)
2018/01/20(土) 12:24:27.92ID:sSjH/Vu40 セルのA列にある文字列をコンボboxにaddですべて入れた後に、一文字入力する度に候補が絞られてくって出来ます?
コード教えてもらえないですか?
コード教えてもらえないですか?
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 「アベノミクス」で投資対象と化したマンション ローンの低金利続き「年収の12倍」借りる20代出現 [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
- ほかほかご飯にかけるとうまいもの一覧
- 石巻酒田道路
- 女さん「お金を稼げない男に魅力を感じない。イケメン高身長でも底辺なら、チビハゲデブ等生きるに値しない命の仲間に感じる」2042万いい [257926174]
- (*´ω`*)…モキュ……モキュ…
