Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


30 / 3841 ページ ←次へ | 前へ→

【81891】Sheet1からSheet 2に日付を条件として数...
質問  えん  - 22/1/7(金) 16:37 -

引用なし
パスワード
   Sheet1(Blank)のB列に日付が入力されており。その横のC〜AA列までその日の数値が入力されます。
Sheet2(BIO)の1行目に一年分の日付が入力されているのですが、そこの日付と同じSheet1(Blank)の日付の行の数値を転記するようにしたいです。
Sheet2はSheet1の日付と項目欄を縦横逆にしただけです。
イメージ的には各シートは以下のようになっています。

Sheet1(Blank)
     B列  C列  D列・・・AA列
1行目  日付 温度  温度   電流
2行目  1/1  20   33    5
3行目  1/8  30   20    6

Sheet2(BIO)
     A列  B列  C列 ・・・NB列
1行目  日付  1/1  1/2 ・・・12/31    
2行目  温度  20   30     
3行目  温度  1/8   30     
4行目  電流  5    6

VBAで作動できるようにできますと、非常に助かります。
よろしくお願い致します。
・ツリー全体表示

【81890】所定フォームへの流し込み
質問  ackkn  - 21/12/18(土) 8:20 -

引用なし
パスワード
   行き詰まり、時間が無く困っています。
無理なのかなとも思い始めましたが、どなたかご教示ください。
配送管理をやっています。 毎年年末になると、荷主様から主要配送先への送り込み予定データが送られてきます。それを、得意先、センター毎に品目、品名、数量をまとめます。ここまでは何とか自力で出来たのですが、最後にこの表から配送スケジュール表への落とし込みで行き詰まりました。
そのまとめた表が、下の表です。

日付   曜日 得意先 センター名 ケース数 パレット数 総数(kg)
2021/12/18(火)    A社    Aセンター    1,153    8     3,800
2021/12/16(木)    A社    Aセンター    1    1     100
2021/12/18(土)    A社    Aセンター    1    1     100
2021/12/23(木)    A社    Aセンター    197    2     700
2021/12/24(金)    A社    Aセンター    2,442    20     9,900
2021/12/18(土)    A社    Bセンター    1,243    9    4,100
2021/12/24(金)    A社    Bセンター    1,874    14    6,300
2021/12/24(金)    A社    Cセンター    255    5    2,600
2021/12/24(金)    A社    Dセンター    109    3    1,100

この表を元に、下の所定表(13日〜30日で固定)に変換したいのです。

得意先 センター名 13日 14日 15日 16日 17日 18日 19日20日21日22日 23日 24日 以降30日迄続く
       曜日 (月) (火) (水) (木) (金) (土) (日)(月)(火)(水) (木) (金)
―――――――――――――――――――――――――――――――――――――――
A社  Aセンター    1,153 8  1  1  1  1         197 2 2,442 20
            3,800   100   100          700 9,900    
―――――――――――――――――――――――――――――――――――――――
A社  Bセンター              1,243 9           1,874 14
                      4,100            6,300
―――――――――――――――――――――――――――――――――――――――
A社  Cセンター                            255  5
                                    2,600    
―――――――――――――――――――――――――――――――――――――――
A社 Dセンター                             109 3
                                    1,100
―――――――――――――――――――――――――――――――――――――――

各日の欄は|     |
―――――――――――
     |1,153| 8|
―――――――――――
     |   3,800|
―――――――――――
このように3つの欄で、上段がケース数とパレット数で、下段が総数kgです。
この3つの欄がネックになっています。

よろしくご教示ください。
・ツリー全体表示

【81889】vbaでウインドウス10で以前のverでは値に...
質問  ノボル E-MAIL  - 21/12/2(木) 20:06 -

引用なし
パスワード
   vbaでウインドウス10で以前のverでは値になっていたが今#NAME?と出る
数値にするには
VBAはFunctionで計算している


Function KA(C!, Gam!, rHo1!, sHo1!, fai1!, der!, aru1!, sit!) As Single

'Function KA(C!, Gam!, rHo!, sHo!, fai!, der!, aru!, sit!) As Single

Dim CC1 As Single
Dim CC2 As Single
Dim CC3 As Single
Dim RC1 As Single


fai = fai1 / 180 * 3.1415 'φ ラジアン
der = der / 180 * 3.1415 'δ
aru = aru1 / 180 * 3.1415 'α
sit = sit / 180 * 3.1415 'θ

'1.ok
CC1 = (Cos(fai1 - sit)) ^ 2 'cos(φ-θ)^2

'***********************************************************************
'2.ok

CC2 = (Cos(sit)) ^ 2 * Cos(sit + der) '分母-1 cosθ^2*cos(θ+δ)

'データ条件

RC1 = Sin(fai1 - aru1)

If fai1 < aru1 Then RC1 = 0

'3.
CC3 = (1 + ((Sin(fai1 + der) * RC1) / (Cos(sit + der) * Cos(sit - aru1))) ^ 0.5) ^ 2

'{1+√((sin(φ+δ)*sin(φ-α))/((cos(θ+δ)*cos(θ-α))}^2


KA = CC1 / (CC2 * CC3)

'ka=cc1/(cc2*cc3)

End Function
・ツリー全体表示

【81888】VBAの#NAME?エラー
質問  ノボル E-MAIL  - 21/12/2(木) 19:57 -

引用なし
パスワード
   vbaでウインドウス10で以前のverでは値になっていたが今#NAME?と出る
数値にするには
VBAはFunctionで計算している
・ツリー全体表示

【81887】ユーザーフォームのツールボックスについ...
質問  トム  - 21/10/27(水) 9:10 -

引用なし
パスワード
   ユーザーフォームをshowで表示させた後に、
特定の動作でそのユーザーフォームにコントロールを配置する、
ツールボックスのウィンドウが表示される現象が発生します。

具体的には一度showで表示しているユーザーフォームですが、
特定のボタンを押した時に一部コントロールをremoveします
そのタイミングでツールボックスが表示されてしまいます。

これは正常な動作なのでしょうか?

もし正常でしたらその表示されたツールボックスをvbaで非表示にする方法は、
有りますでしょうか?
・ツリー全体表示

【81886】WMIでのログ取得について
質問  ピノ  - 21/10/13(水) 16:29 -

引用なし
パスワード
   初めて利用させていただきます。

出勤管理表にイベントログのログイン、ログオフ時間を取得したいと考えています。

仕事の出勤管理表で利用したいと思っているので、1か月分のログが欲しいです。

現在下記サイトを参考にしながら取得を試みました。

https//www.kurumico.com/exel−vbaーtoolーeventlog/1459/

自分なりにいろいろ触りながら試すうちに、イベントタイプやイベントコードなどの指定はわかるようになりましたが、時間指定や日付指定はよくわかりませんでした。

もしわかる方がいらっしゃいましたら、お手数ですが、ご教授もしくは回答をいただけると幸いです。

よろしくお願いします
・ツリー全体表示

【81885】Re:コントロールの存在確認
お礼  トム  - 21/10/5(火) 6:44 -

引用なし
パスワード
   ▼山内 さん:
ありがとうございます。
詰まってた箇所を進めることが出来ました。
・ツリー全体表示

【81884】Re:コントロールの存在確認
回答  山内  - 21/10/4(月) 13:14 -

引用なし
パスワード
   On Error Resume Nextのあとにコントロールを呼び出したとき
Err.Numberが0以外になる場合存在しません
・ツリー全体表示

【81883】解決しました。
発言  ken  - 21/10/3(日) 12:08 -

引用なし
パスワード
   wb2.SaveAs f_name, FileFormat:=xlCSV
にしたら読み込めました。
・ツリー全体表示

【81882】csvへの保存について
質問  ken  - 21/10/3(日) 10:14 -

引用なし
パスワード
   いつもお世話になっております。
vba勉強中です。
何方かご教授ください。

ワークシートをcsv形式で保存したいのですが
他のアプリケーションで読み込もうとしても読み込めません。
一度開いて再度csv(カンマ区切り)を指定して保存すると読み込めます。
保存の仕方が間違っているのでしょうか?

Sub test()
 Dim wb As Workbook, wb2 As Workbook
 Dim ws1 As Worksheet, ws2 As Worksheet
 Dim f_name As String
  Set wb = ThisWorkbook
  Set ws1 = wb.ActiveSheet
  ws1.Copy
  Set wb2 = ActiveWorkbook
  Set ws2 = wb2.ActiveSheet
  f_name = "C:\Users\デスクトップ\" & ws2.Name & ".csv"

  If Dir(f_name) <> "" Then
    Application.DisplayAlerts = False
    wb2.SaveAs f_name
    Application.DisplayAlerts = True
  Else
    wb2.SaveAs f_name
  End If
  wb2.Close
End Sub
・ツリー全体表示

【81881】コントロールの存在確認
質問  トム  - 21/10/1(金) 18:29 -

引用なし
パスワード
   こんにちは。
動的にコントロールを作成し、
削除ボタンでその作成したコントロールをremoveを使って、
コントロールの一部を削除しました。

その後その削除したコントロールの存在確認というのは、
どの様に行えば出来るのでしょうか?
・ツリー全体表示

【81880】Re:VBAで複数の条件を指定して特定の文字...
お礼  初心者です  - 21/9/26(日) 20:27 -

引用なし
パスワード
   山内さま

返信が遅くなり申し訳ありません。
アドバイスを元に解決することができました。
教えて頂き本当にありがとうございます。
・ツリー全体表示

【81879】Re:VBAで複数の条件を指定して特定の文字...
回答  山内  - 21/9/24(金) 9:43 -

引用なし
パスワード
   ワイルドカードを使う場合Like演算子を使うといいです
Debug.Print "うえ" Like "う?" '条件に合っているため戻り値はTrue
・ツリー全体表示

【81878】VBAで複数の条件を指定して特定の文字列...
質問  初心者です  - 21/9/22(水) 15:39 -

引用なし
パスワード
   ランダムな文字列のうちAXXAXAといった特定の並びの文字列を抽出する時、
Xの部分がY、Zなど指定した文字の条件でも文字列を抽出できるコードをどなたか教えていただけないでしょうか。(例:AXXAXAだけでなくAYZAXAといった文字列でも抽出可能)
オートフィルター、ワイルドカード、論理演算子を組合わせると可能な気がするのですがVBAを学び初めて日が浅くまだどのように組み合わせてコードを立てればよいかどうしてもわかりません。
・ツリー全体表示

【81877】検索した薬剤をアクティブセルへ反映させ...
質問  mu  - 21/9/22(水) 8:46 -

引用なし
パスワード
   お世話になります。


薬剤DBタブを作成して
A検索文字 B単位(錠、カプセルなど)Cジェネリック D先発薬剤

フォームにテキストBoxと検索ボタンを作成

候補を3行listboxで作成し
下2行にジェネリック、先発を反映させるところまではうまく行きました。

*************************************************************************
'検索を実行します。部分一致検索を行っています。
 Private Sub cmdSearch_Click()

  Dim lastRow As Long
  Dim myData, myData2(), myData3(), myData4(), myno
  Dim i As Long, j As Long, cn As Long

  ' If M_serch.Value = "" ThenEnd

  '検索するデータを配列 myData に格納しています。
  With Worksheets("薬剤DB50音順")
     lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
    myData = .Range(.Cells(1, 1), .Cells(lastRow, 4)).Value
  End With

  '配列 myData の中で検索で一致したデータを配列 myData2 に格納しています。
  ReDim myData2(1 To lastRow, 1 To 3)
  ReDim myData3(1 To lastRow, 1 To 2)
  ReDim myData4(1 To lastRow, 1 To 2)
  
  For i = LBound(myData) To UBound(myData)
    If myData(i, 1) Like "*" & M_serch.Value & "*" Then
      cn = cn + 1
      myData2(cn, 1) = myData(i, 1)
      myData2(cn, 2) = myData(i, 3)
      myData2(cn, 3) = myData(i, 2)

      
      If myData(i, 3) <> "" Then
        cn2 = cn2 + 1
        myData3(cn2, 1) = myData(i, 3)
        myData3(cn2, 2) = myData(i, 2)
        
      If myData(i, 3) <> "" Then
        cn2 = cn2 + 1
        myData4(cn2, 1) = myData(i, 4)
        myData4(cn2, 2) = myData(i, 2)
        
        
      End If
    End If
   End If
  Next i

  '検索で一致したデータを先発リストボックスに表示します。
  With lstResult_M1
    .ColumnCount = 3
    .ColumnWidths = "140;105;20"
    .List = myData2
  End With

  '検索で一致したデータを後発リストボックスに表示します。
  With lstResult_new
    .ColumnCount = 2
    .ColumnWidths = "180;20"
    .List = myData3
  End With
    
  '検索で一致したデータを後発リストボックスに表示します。
  With lstResult_new2
    .ColumnCount = 2
    .ColumnWidths = "180;20"
    .List = myData4
    
  End With

End Sub

*********************************************************************


伺いたいのは
ここで反映した候補の薬剤を
1.リスト選択、ただしジェネリックか先発どちらかしか選べない

2.フォームには数値入力のTextBoxと実行ボタンがあり

選択したセルがアクティブセルで K4だとした場合(別タブになります。)

K4セルを捕まえて実行ボタンを押すと

K4(薬剤名)K5(数値 1.2など)K6(単位 錠、カプセルなど)

と繁栄をさせたいのですが

そもそもアクティブセルを反映させる段階でうまく行きません

****************************************


Private Sub cmdMakeStatus_Click()
  Dim lRow As Long, i As Long
  Dim ListNo As Long
    ListNo = lstResult_new.ListIndex
    If ListNo < 0 Then
      MsgBox "いずれかの行を選択してください"
      Exit Sub
    End If
    With Worksheets("処 方 録")
      lRow = .Range("B" & Rows.Count).End(xlUp).Row
    'For i = 0 To 2
    .ActiveCell.Value = lstResult_new.List(ListNo, i)
    'Next i
    .ActiveCell.Offset(0, 2).Value = lstResult_new.List(ListNo, i + 1)

    End With
    Ent_figure01.Value = ""
    lstResult_new.TopIndex = ListNo
End Sub


**************************************************************

正直どこで間違えているかも分からない状況です。

ご教示よろしくお願い致します。
・ツリー全体表示

【81876】Re:1つのエクセルを複数のbookシートに...
回答  山内  - 21/9/21(火) 16:01 -

引用なし
パスワード
   とりあずやることは
1.元データを部署別に分ける
2.新しいフォルダを作る
3.1で分けたデータで新しいブックを作り保存する
です。
それぞれ検索すればいくらでもコードが出てくると思います。
・ツリー全体表示

【81875】1つのエクセルを複数のbookシートに分割
質問  ピエトロ  - 21/9/20(月) 16:57 -

引用なし
パスワード
   エクセルVBA初心者です。
課題として、

  A    B   C D       A
1 aさん 営業部 男 住所1  1 ボタン
2 bさん 人事部 女 住所2
3 cさん 営業部 男 住所3
4 dさん 技術部 男 住所4
5 eさん 経理部 男 住所4

シート データ集約       シート データ分割実行

実施したいこと
1.シート(データ集約)にあるデータを
2.シート(データ分割実行)内にあるボタンをクリックする。
3.ボタンをクリックすると、新しくフォルダをつくる
4.フォルダ内に、営業部、人事部、技術部、技術部、その他部署のエクセルbookが出来ている
5.営業部のbookを開くと
1 aさん 営業部 男 住所1  
2 cさん 営業部 男 住所3
が表示されている。
※、人事部、技術部、技術部でも同様です。

VBAプログラムとして
ボタン_Click()
からの書き方がわかりません
お知恵をお借りできないでしょうか。
お願いいたします。
・ツリー全体表示

【81874】1つのエクセルを複数のbookシートに分割
質問  ピエトロ  - 21/9/20(月) 16:57 -

引用なし
パスワード
   エクセルVBA初心者です。
課題として、

  A    B   C D       A
1 aさん 営業部 男 住所1  1 ボタン
2 bさん 人事部 女 住所2
3 cさん 営業部 男 住所3
4 dさん 技術部 男 住所4
5 eさん 経理部 男 住所4

シート データ集約       シート データ分割実行

実施したいこと
1.シート(データ集約)にあるデータを
2.シート(データ分割実行)内にあるボタンをクリックする。
3.ボタンをクリックすると、新しくフォルダをつくる
4.フォルダ内に、営業部、人事部、技術部、技術部、その他部署のエクセルbookが出来ている
5.営業部のbookを開くと
1 aさん 営業部 男 住所1  
2 cさん 営業部 男 住所3
が表示されている。
※、人事部、技術部、技術部でも同様です。

VBAプログラムとして
ボタン_Click()
からの書き方がわかりません
お知恵をお借りできないでしょうか。
・ツリー全体表示

【81873】google apiを使用して2点間の最短距離を...
質問  サリー  - 21/9/12(日) 23:30 -

引用なし
パスワード
   こんばんは。
google apiを使用して2点間の距離(高速道路利用しない、最短距離)を求めたいです。
高速道路利用しないに関しては解決したのですが、最短距離を出すことに苦戦しています。
最短距離を求めるオブジェクト定数optimizeWaypointsということは分かっているのですが
どこに組み込めば良いかアドバイス頂ければ幸いです。
何卒宜しくお願い致します。

【ソースコード】

Function DGMAP(origin As String, destination As String, distance As Boolean, Optional avoidHighways As Boolean = True) As String

Dim sXMLURL As String
  
sXMLURL = "maps.googleapis.com/maps/api/directions/xml?origin=" & origin & "&destination=" & destination & "&sensor=false&key=AIzaSyBd__DDpyRIC7TJHlPFE-ZoLO4blhMxOOs"

  Dim objXMLHTTP As MSXML2.ServerXMLHTTP60

  Set objXMLHTTP = New MSXML2.ServerXMLHTTP60

  With objXMLHTTP

    .Open "GET", sXMLURL, False

    .setRequestHeader "Content-Type", "application/x-www-form-URLEncoded"

    .Send

  End With


  'Debug.Print objXMLHTTP.ResponseText


  Dim domResponse As DOMDocument60

  Set domResponse = New DOMDocument60

  domResponse.LoadXML objXMLHTTP.ResponseText

  Dim ixnStatus

  Set ixnStatus = domResponse.SelectSingleNode("//status")


  If ixnStatus.Text = "OK" Then

    Dim ixnDistance, ixnDuration

    Set ixnDistance = domResponse.SelectSingleNode("/DirectionsResponse/route/leg/distance/text")

    Set ixnDuration = domResponse.SelectSingleNode("/DirectionsResponse/route/leg/duration/text")

  End If

  If IsEmpty(ixnDistance) Then

    DGMAP = "Empty"

    Exit Function

  End If

 '距離(True) または時間(False)

  If distance = True Then

    DGMAP = Left(ixnDistance.Text, InStr(1, ixnDistance.Text, " ") - 1)

  Else

    DGMAP = ixnDuration.Text

  End If

  Set domResponse = Nothing

  Set objXMLHTTP = Nothing

End Function
・ツリー全体表示

【81872】Re:Longより大きい整数
質問  りった  - 21/9/1(水) 16:32 -

引用なし
パスワード
   ▼山内 さん:
>LongLong (LongLong 整数) 変数は、-9,223,372,036,854,775,808 から 9,223,372,036,854,775,807 の範囲の符号付き 64 ビット (8 バイト) の数値として格納されます。
>MicrosoftDocsより

回答ありがとうございます。
LongLongが使えないのでよくよく調べたところ、Officeが32bitでした。
32bitの場合は、Currencyを使うしかないのでしょうか?
・ツリー全体表示

30 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free